Pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć reklamę Twojej firmy na HackTricks? A może chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLAN SUBSKRYPCYJNY!
Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i hacktricks-cloud.
Iptables
Łańcuchy
W iptables, listy reguł znane jako łańcuchy są przetwarzane sekwencyjnie. Wśród nich istnieją trzy podstawowe łańcuchy, które są powszechnie obecne, a dodatkowe, takie jak NAT, mogą być obsługiwane w zależności od możliwości systemu.
Łańcuch Wejściowy: Wykorzystywany do zarządzania zachowaniem przychodzących połączeń.
Łańcuch Przekierowania: Stosowany do obsługi przychodzących połączeń, które nie są przeznaczone dla lokalnego systemu. Jest to typowe dla urządzeń działających jako routery, gdzie dane otrzymane mają być przekierowane do innego miejsca docelowego. Ten łańcuch jest istotny głównie w przypadku, gdy system jest zaangażowany w routowanie, NATowanie lub podobne działania.
Łańcuch Wyjściowy: Poświęcony regulacji wychodzących połączeń.
Te łańcuchy zapewniają uporządkowane przetwarzanie ruchu sieciowego, umożliwiając określanie szczegółowych reguł dotyczących przepływu danych do, przez i z systemu.
# Delete all rulesiptables-F# List all rulesiptables-Liptables-S# Block IP addresses & portsiptables-IINPUT-sip1,ip2,ip3-jDROPiptables-IINPUT-ptcp--dport443-jDROPiptables-IINPUT-sip1,ip2-ptcp--dport443-jDROP# String based drop## Strings are case sensitive (pretty easy to bypass if you want to check an SQLi for example)iptables-IINPUT-ptcp--dport<port_listening>-mstring--algobm--string'<payload>'-jDROPiptables-IOUTPUT-ptcp--sport<port_listening>-mstring--algobm--string'CTF{'-jDROP## You can also check for the hex, base64 and double base64 of the expected CTF flag chars# Drop every input port except someiptables-PINPUTDROP# Default to dropiptables-IINPUT-ptcp--dport8000-jACCEPTiptables-IINPUT-ptcp--dport443-jACCEPT# Persist Iptables## Debian/Ubuntu:apt-getinstalliptables-persistentiptables-save>/etc/iptables/rules.v4ip6tables-save>/etc/iptables/rules.v6iptables-restore</etc/iptables/rules.v4##RHEL/CentOS:iptables-save>/etc/sysconfig/iptablesip6tables-save>/etc/sysconfig/ip6tablesiptables-restore</etc/sysconfig/iptables
Suricata
Instalacja i konfiguracja
Instalacja
Zainstaluj Suricatę za pomocą polecenia:
sudo apt-get install suricata
Po zakończeniu instalacji, uruchom Suricatę za pomocą polecenia:
Skonfiguruj reguły wykrywania ataków, takie jak reguły Snort, w sekcji rule-files.
Skonfiguruj interfejsy sieciowe, na których Suricata ma nasłuchiwać, w sekcji af-packet.
Skonfiguruj wyjście zdarzeń, takie jak pliki logów, w sekcji outputs.
Zapisz plik konfiguracyjny i uruchom Suricatę ponownie.
Iptables
Dodawanie reguł iptables
Dodaj regułę iptables za pomocą polecenia:
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
Sprawdź, czy reguła została dodana poprawnie:
sudo iptables -L
Usuwanie reguł iptables
Usuń regułę iptables za pomocą polecenia:
sudo iptables -D INPUT -p tcp --dport 80 -j DROP
Sprawdź, czy reguła została usunięta poprawnie:
sudo iptables -L
# Install details from: https://suricata.readthedocs.io/en/suricata-6.0.0/install.html#install-binary-packages# Ubuntuadd-apt-repositoryppa:oisf/suricata-stableapt-getupdateapt-getinstallsuricata# Debianecho"deb http://http.debian.net/debian buster-backports main"> \/etc/apt/sources.list.d/backports.listapt-getupdateapt-getinstallsuricata-tbuster-backports# CentOSyuminstallepel-releaseyuminstallsuricata# Get rulessuricata-updatesuricata-updatelist-sources#List sources of the rulessuricata-updateenable-sourceet/open#Add et/open rulesetssuricata-update## To use the dowloaded rules update the following line in /etc/suricata/suricata.yamldefault-rule-path:/var/lib/suricata/rulesrule-files:-suricata.rules# Run## Add rules in /etc/suricata/rules/suricata.rulessystemctlsuricatastartsuricata-c/etc/suricata/suricata.yaml-ieth0# Reload rulessuricatasc-cruleset-reload-nonblocking## or set the follogin in /etc/suricata/suricata.yamldetect-engine:-rule-reload:true# Validate suricata configsuricata-T-c/etc/suricata/suricata.yaml-v# Configure suricata as IPs## Config drop to generate alerts## Search for the following lines in /etc/suricata/suricata.yaml and remove comments:-drop:alerts:yesflows:all## Forward all packages to the queue where suricata can act as IPSiptables-IINPUT-jNFQUEUEiptables-IOUTPUT-jNFQUEUE## Start suricata in IPS modesuricata-c/etc/suricata/suricata.yaml-q0### or modify the service config file as:systemctleditsuricata.service[Service]ExecStart=ExecStart=/usr/bin/suricata-c/etc/suricata/suricata.yaml--pidfile/run/suricata.pid-q0-vvvType=simplesystemctldaemon-reload
Definicje Reguł
Z dokumentacji: Reguła/podpis składa się z następujących elementów:
Akcja, określa co się dzieje, gdy reguła pasuje.
Nagłówek, definiuje protokół, adresy IP, porty i kierunek reguły.
Opcje reguły, określają szczegóły reguły.
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"HTTP GET Request Containing Rule in URI"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"rule"; fast_pattern; classtype:bad-unknown; sid:123; rev:1;)
Dostępne akcje to
alert - generuj alert
pass - zatrzymaj dalszą inspekcję pakietu
drop - odrzuć pakiet i wygeneruj alert
reject - wyślij pakiet RST/ICMP unreachable do nadawcy pasującego pakietu.
rejectsrc - to samo co reject
rejectdst - wyślij pakiet RST/ICMP error do odbiorcy pasującego pakietu.
rejectboth - wyślij pakiety RST/ICMP error do obu stron rozmowy.
W Suricata dostępnych jest setki opcji, które umożliwiają wyszukiwanie konkretnego pakietu, jeśli zostanie znalezione coś interesującego, zostanie to tutaj wymienione. Sprawdź dokumentację, aby uzyskać więcej informacji!
# Meta Keywordsmsg:"description"; #Set a description to the rulesid:123#Set a unique ID to the rulerev:1#Rule revision numberconfigclassification:not-suspicious,NotSuspiciousTraffic,3#Classifyreference:url,www.info.com#Referencepriority:1; #Set a prioritymetadata:keyvalue,keyvalue; #Extra metadata# Filter by geolocationgeoip:src,RU;# ICMP type & Codeitype:<10;icode:0# Filter by stringcontent:"something"content:|616161|#Hex: AAAcontent:"http|3A|//"#Mix string and hexcontent:"abc"; nocase; #Case insensitiverejecttcpanyany ->anyany (msg: "php-rce"; content:"eval"; nocase; metadata:tagphp-rce; sid:101; rev:1;)# Replaces string## Content and replace string must have the same lengthcontent:"abc"; replace:"def"alerttcpanyany ->anyany (msg: "flag replace"; content:"CTF{a6st"; replace:"CTF{u798"; nocase; sid:100; rev:1;)## The replace works in both input and output packets## But it only modifies the first match# Filter by regexpcre:"/<regex>/opts"pcre:"/NICK .*USA.*[0-9]{3,}/i"droptcpanyany ->anyany (msg:"regex"; pcre:"/CTF\{[\w]{3}/i"; sid:10001;)# Other examples## Drop by portdroptcpanyany ->any8000 (msg:"8000 port"; sid:1000;)
Pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć, jak Twoja firma jest reklamowana w HackTricks? A może chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLAN SUBSKRYPCYJNY!