Discover Co wyciekło Dodatkowa ochrona ModSecurity
Narzędzia wykrywania ataków na systemy komputerowe DNWA UI0 (8)
Marcin Gogolewski marcing@wmi.amu.edu.pl
Uniwersytet im. Adama Mickiewicza w Poznaniu
Poznań, 8 grudnia 2020
Skanowanie sieci
Wykorzystanie wielu narzędzi do skanowania sieci (szczególnie pasywnego) wymagałoby spędzenia wielu godzin na wyszukiwaniu, opanowywaniu obsługi i stosowaniu kolejnych programów.
Rozwiązanie
Istnieje narzędzie OSINT (dawniej Backtrack Scripts) w Kali Linux, które wykona za nas część pracy.
Instalacja
git clone https://github.com/leebaird/discover /opt/discover/
cd /opt/discover/
./update.sh ./discover.sh
Discover Co wyciekło Dodatkowa ochrona ModSecurity
discover.sh
Uwaga
Pakiet jest tak przygotowany, że należy go uruchamiać z katalogiem roboczym /opt/discover, zatem cd /opt/discover jest konieczne. Po uruchomieniu skryptu możemy wybrać typ skanowania, np. pasywne (1).
Narzędzie wykorzystuje publicznie dostępne dane korzystając z m.in. dnsrecon, goofile, goog-mail, goohost (IP, Email), theHarvester (Baidu, Bing, Dogpilesearch, Google, Google CSE, Google+, Google Profiles, Jigsaw, LinkedIn, People123, PGP, Yahoo, All), Metasploit, URLCrazy, WhoIs (Domain, IP), dnssy.com, ewhois.com, myipneighbors.net, urlvoid.com.
discover.sh
Choice: 1 Usage
Company: Target Domain: target.com
=============
Company: Adam Mickiewicz University Domain: wmi.amu.edu.pl
dnsrecon: (1/26) ....
urlvoid.com (26/26)
====
***Scan complete.***
The supporting data folder is located at /root/data/wmi.amu.edu.pl/
Uwaga: po zakończeniu testu „dla wygody” jest otwierana przeglądarka z masą zakładek.
Discover Co wyciekło Dodatkowa ochrona ModSecurity
discover.sh
RECON 1. Domain 2. Person 3. Parse salesforce
SCANNING
4. Generate target list 5. CIDR
6. List
7. IP, range, or URL
8. Rerun Nmap scripts and MSF aux.
WEB
9. Insecure direct object reference 10. Open multiple tabs in Firefox 11. Nikto
12. SSL
MISC 13. Crack WiFi 14. Parse XML
15. Generate a malicious payload 16. Start a Metasploit listener 17. Update
18. Exit Choice:
Ciekawe linki
Adobe 2013
W Internecie można znaleźć plik users.tar.gz, który zawiera zaszyfrowane hasła (wyciekły z witryny Adobe, plik można znaleźć, ale jest dość duży).
http://web.mit.edu/zyan/Public/adobe_sanitized_passwords_with_bad_hints.txt http://stricture-group.com/files/adobe-top100.txt
Discover Co wyciekło Dodatkowa ochrona ModSecurity
System w warstwie aplikacji
Czasami nie zależy nam na ochronie całej sieci (to kosztuje, gdyż chronimy sieć przed wieloma atakami, na które i tak nie jest podatna!).
Pomocą mogą się okazać rozwiązania napisane specjalnie dla danego systemu/aplikacji.
Szczególnie wtedy, gdy umożliwiają stosowanie reguł „pełnego” IPS (np. konwersja części reguł).
Przykładowe rozwiązania to: ModSecurity, czy IIS Lockdown – dla starszych, tzn. ¬ 5.1 wersji IIS. Rozwiązują m.in. problem z połączeniami TLS.
Co umożliwia ModSecurity?
Real-time application security monitoring and access control Virtual patching
Full HTTP traffic logging
Continuous passive security assessment Web application hardening
Something small, yet very important to you Uwaga
Rozwiązanie to nie chroni zwykle przed błędami samego serwera, gdyż część kodu serwera jest wykonywana przed modułami. Może jednak pracować jako reversed proxy, chroniąc w ten sposób dowolny serwer WWW.
Discover Co wyciekło Dodatkowa ochrona ModSecurity ClamAV
ModSecurity – co jeszcze?
Podobnie jak w przypadku Suricaty możliwe jest wykorzystanie ClamAV do wyszukiwania „wirusów”.
ClamAV nie jest częścią ModSecurity, więc należy mu trochę pomóc, np. wykorzystując skrypt z następnego slajdu (skrypt zwraca informacje w formacie zrozumiałym przez ModSecurity).
To podejście ma jednak drobną wadę. Dla każdego skanowania uruchamiana jest oddzielna instancja ClamAV – trwa to zwykle poniżej 1s, ale oznacza, że nie da się w ten sposób sprawdzić wielu tysięcy dokumentów w ciągu godziny, a opóźnienie może być widoczne dla użytkownika).
ModSecurity
#!/usr/bin/perl
$CLAMSCAN = "/usr/bin/clamscan";
if (@ARGV != 1) {
print "Usage: modsec-clamscan.pl FILENAME\n";
exit;
}
my ($FILE) = @ARGV;
$cmd = "$CLAMSCAN --stdout --disable-summary $FILE";
$input = ‘$cmd‘;
$input =~ m/^(.+)/;
$error_message = $1;
$output = "0 Unable to parse clamscan output";
if ($error_message =~ m/: Empty file\.$/) {
$output = "1 empty file";
}
elsif ($error_message =~ m/: (.+) ERROR$/) {
$output = "0 clamscan: $1";
}
elsif ($error_message =~ m/: (.+) FOUND$/) {
$output = "0 clamscan: $1";
}
elsif ($error_message =~ m/: OK$/) {
$output = "1 clamscan: OK";
}
print "$output\n";
Discover Co wyciekło Dodatkowa ochrona ModSecurity ClamAV
ModSecurity + ClamAV
Problem z wydajnością nie wynika ze złożoności programu ClamAV (ani też z mało wydajnej implementacji). Ze względu na to, że program nie jest częścią serwera WWW, aplikacja jest ładowana (wraz z potrzebnymi bibliotekami, bazą „wirusów”, etc.) przy każdym wywołaniu od nowa.
Demony
Podobnie jak w przypadku serwerów poczty istnieje inny sposób. ClamAV może zostać uruchomiony jako tzw. demon i zaczekać na zapytania klientów np. na porcie TCP.
Jak sprawdzić, czy działa?
http://www.eicar.org/anti_virus_test_file.htm (uwaga: program antywirusowy może zwracać ostrzeżenia podczas przeglądania tej strony, a autorzy nie gwarantują, że jest to zawsze bezpieczne).
ClamAV – wynik testu
[9] Exec: /opt/modsecurity/bin/modsec-clamscan.pl
[4] Exec: First line from script output: "0 clamscan: Eicar-Test-Signature"
[4] Operator completed in 2137466 usec.
[2] Warning. File ...
"/opt/modsecurity/var/tmp//20090819-181833-Sowz6X8AAQEAACXQAWAAAAAB-file-logg59" ...
rejected by the approver script "/opt/modsecurity/bin/modsec-clamscan.pl": 0 ...
clamscan: Eicar-Test-Signature [file "/opt/modsecurity/etc/rules.conf"] [line "3"]
Discover Co wyciekło Dodatkowa ochrona ModSecurity ClamAV
Apache
Linux is like a Wigwam no Windows,
no Gates, Apache inside.
Dlaczego ModSecurity nie jest oddzielną aplikacją?
Apache
1 Decrypts SSL
2 Breaks up the inbound connection stream into HTTP requests
3 Partially parses HTTP requests
4 Invokes ModSecurity, choosing the correct configuration context (VirtualHost, Location, etc.)
5 De-chunks request bodies as necessary
6 There are few additional tasks Apache performs in a reverse proxy scenario:
1 Forwards requests to backend servers (with or without SSL)
2 Partially parses HTTP responses
3 De-chunks response bodies as necessary
Discover Co wyciekło Dodatkowa ochrona ModSecurity ClamAV
Ograniczenia płynące ze współpracy
wszystkie łańcuchy są kończone NULLem (nie można sprawdzić, jak było) nagłówki są sprowadzane do „formy kanonicznej”
niektóre żądania (np. błędne zapytania) nie dotrą do ModSecurity niektóre nagłówki nie będą widoczne
A co potrafi ModSecurity (bez reguł)?
parsuje dane
zapewnia buforowanie zajmuje się logowaniem przetwarza reguły
nie przeprowadza dezynfekcji (sanitize)
Discover Co wyciekło Dodatkowa ochrona ModSecurity ClamAV
ModSecurity – przykładowa reguła
SecRule ARGS "<script>" log,deny,status:404
SecRule VARIABLES OPERATOR ACTIONS
VARIABLES gdzie szukać (np. ARGS znaczy „w parametrach”) OPERATOR w jaki sposób (np. wyrażenie regularne)
ACTIONS jak zareagować (zaloguj, zablokuj, wyślij 404)
ModSecurity – przykładowy log
[4] Input filter: Reading request body.
[9] Multipart: Boundary: ---2411583925858 [9] Input filter: Bucket type HEAP contains 256 bytes.
[9] Multipart: Added part header "Content-Disposition" "form-data; name=\"f\"; ...
filename=\"eicar.com.txt\""
[9] Multipart: Added part header "Content-Type" "text/plain"
[9] Multipart: Content-Disposition name: f
[9] Multipart: Content-Disposition filename: eicar.com.txt [4] Multipart: Created temporary file: ...
/opt/modsecurity/var/tmp/20090819-175503-SowuZ38AAQEAACV-Agk-file-gmWmrF [9] Multipart: Changing file mode to 0600: ...
/opt/modsecurity/var/tmp/20090819-175503-SowuZ38AAQEAACV-Agk-file-gmWmrF [9] Multipart: Added file part 9c870b8 to the list: name "f" file name ...
"eicar.com.txt" (offset 140, length 68) [9] Input filter: Bucket type EOS contains 0 bytes.
[4] Reqest body no files length: 96
[4] Input filter: Completed receiving request body (length 256).