Zmuszenie botów do skanowania serwerów, a serwery do blokowania botów
Napisał: Patryk Krawaczyński
09/06/2019 w Ataki Internetowe Brak komentarzy. (artykuł nr 696, ilość słów: 672)
O
statnio napotkałem na dziwny przypadek. Jeden z systemów HIDS – zablokował mnie na moim własnym serwerze. Po wszczęciu postępowania wyjaśniającego okazało się, że przy okazji wyszukiwania paru informacji powiązanych z NF.sec wszedłem na stronę, która linkowała do kilku już nieistniejących zasobów na mojej stronie. Tym samym wygenerowałem szybką serię kodów 404 na serwerze, która została uznana za próbę skanowania i zablokowana. Zdając sobie sprawę z obrotu sytuacji wpadłem na pewien pomysł. W internecie nie posiadamy kontroli nam tym kto, gdzie i do czego linkuje strony. Nie posiadamy też kontroli nam tym – kto będzie czytał i podążał za tymi linkami. Dla robotów internetowych są to kolejne korytarze, które można / trzeba odwiedzać. Nie znają powodu ani kontekstu, dla którego ktoś postawił tam znak skrętu w lewo. Wiedzą tylko, że to jest znak. Doprowadźmy więc do paru potrąceń w ruchu lądowym.
Boty skanują serwery:
Jeśli spojrzymy na serwis oferujący skanowanie ukrytych plików lub katalogów URL Fuzzer – to w prosty sposób możemy stworzyć jego darmową wersję. Na początek będziemy potrzebowali prostą stronę HTML, w której umieścimy od kilku do kilkuset linków badających błędy w konfiguracji danego serwisu:
<!DOCTYPE html> <html> <head> <title>bot p0c</title> <meta name="robots" content="index, follow, archive, snippet" /> <meta name="referrer" content="no-referrer" /> </head> <body> <h1>Hello Robots!</h1> <h3>Attack these targets please:</h3> <h4> - <a href="https://nfsec.pl/.bashrc">Test One!</a><br> - <a href="https://nfsec.pl/.gitignore">Test Two!</a><br> - <a href="https://nfsec.pl/backup.zip">Test Three!</a><br> - <a href="https://nfsec.pl/index.php.bak">Test Four!</a><br> - <a href="https://nfsec.pl/uniq31337">Test Five!</a><br> </h4> </body> </html>
Umieszczamy ją na “jakimś zagranicznym”, darmowym hostingu i zgłaszamy do dowolnego serwisu, który sprawdza poprawność / aktualność linków (ang. broken link checker). Serwis uruchomi swojego bota, który za pośrednictwem naszej strony przeskanuje serwis ofiary (tutaj nasz własny serwer):
"GET /.gitignore HTTP/1.1" 403 6129 "https://nfsec.github.io/bot-p0c/" "Mozilla/5.0" "GET /index.php.bak HTTP/1.1" 404 16434 "https://nfsec.github.io/bot-p0c/" "Mozilla/5.0" "GET /uniq31337 HTTP/1.1" 404 16458 "https://nfsec.github.io/bot-p0c/" "Mozilla/5.0" "GET /.bashrc HTTP/1.1" 404 16428 "https://nfsec.github.io/bot-p0c/" "Mozilla/5.0" "GET /backup.zip HTTP/1.1" 404 16488 "https://nfsec.github.io/bot-p0c/" "Mozilla/5.0" "GET /backup.zip HTTP/1.1" 404 11561 "-" "www.deadlinkchecker.com Mozilla/5.0" "GET /index.php.bak HTTP/1.1" 404 11670 "-" "www.deadlinkchecker.com Mozilla/5.0" "GET /.gitignore HTTP/1.1" 403 1250 "-" "www.deadlinkchecker.com Mozilla/5.0" "GET /backup.zip HTTP/1.1" 404 11616 "-" "www.deadlinkchecker.com Mozilla/5.0" "GET /uniq31337 HTTP/1.1" 404 11485 "-" "www.deadlinkchecker.com Mozilla/5.0"
Po zakończonym skanowaniu wystarczy porównać linki zamieszczone na stronie, z listą linków zwróconych przez serwis sprawdzający ich poprawność. Jeśli będzie jakiś brakować na liście to z bardzo dużym prawdopodobieństwem zwróciły one inny kod niż 404 (100% scanned – 6/6 URLs checked, 1 OK, 5 failed) – dlatego można poddać je dalszemu sprawdzeniu. W powyższym przykładzie zostały wykorzystane dwa serwisy. Najlepiej wybrać taki, który respektuje ustawienie noreferrer i nie będzie zostawiać w logach ofiary informacji, z jakiej strony przybył bot (nfsec.github.io/bot-p0c).
Serwery blokują boty:
Systemy zabezpieczeń w postaci zapór sieciowych aplikacji internetowych (ang. Web Application Firewall) lub systemy zapobiegania włamaniom (ang. Intrusion Prevention System) mogą odróżniać ruch sieciowy generowany przez ludzi od ruchu generowanego przez boty. Oceniają ruch na podstawie jego pochodzenia, charakterystyki i informacji, które zbierane są z serwisu. Jeśli uznają, że ruch pochodzi z prawowitego źródła przepuszczają go. W przeciwnym razie może zostać uznany, że pochodzi od złych botów, skanerów luk w zabezpieczeniach lub szkodliwego oprogramowania i zablokowany. Jedną z metod ataku może być znalezienie wrażliwych fraz lub adresów URL na które reagują te systemy i blokują dostęp do danego serwisu. Adresy te możemy umieścić na specjalnie spreparowanej stronie internetowej i dodać ją do topowych wyszukiwarek internetowych. Jeśli boty wyszukiwarek zaczną podążać za odnośnikami wyzwalającymi reguły blokujące na zaporze sieciowej lub systemie zapobiegania włamaniom – może dojść do sytuacji, gdzie chroniony serwis zostanie odcięty od możliwości aktualizacji treści w wyszukiwarkach. W raz z obniżeniem rankingu spadnie też ruch pochodzący od użytkowników, którzy korzystają tych wyszukiwarek. Analogicznie możemy przeprowadzić atak na użytkowników wybranego serwisu. Zamieszczając w mediach społecznościowych dobrze przygotowany clickbait prowadzący do strony, na której w tyle będą wczytywały się zdalne adresy. W rzeczywistości będą one atakowały lub testowały zabezpieczenia określonego serwisu. Jego system zabezpieczeń uznając ruch za wrogi rozpocznie proces blokowania niczego nieświadomych użytkowników, ponieważ to ich adresy IP będą widniały jako źródło wczytywania spreparowanych odnośników.