Posts


Apr. 3, 2020

Szybki fuzzing z pomocą Dockera? Teraz to możliwe!

Jednym z najczęstszych powodów podawanych przez osoby, które zapytałem dlaczego jeszcze nie “robią” fuzzingu aplikacji, był trudny proces uruchomienia środowiska i instalowania zależności. Zgadzam się z nimi w 100% – sporo projektów ma dość specyficzne wymagania i działa tylko pod konkretnymi wersjami bibliotek lub systemów. Postanowiłem wyjść na przeciw takim osobom i udostępniłem regularnie aktualizowane obrazy mniej i bardziej popularnych fuzzerów, wraz z dockerfile’ami do ich budowy. Od teraz nie ma wymówek!

Aug. 8, 2019

Umarł AFL, niech zyje AFL! Czyli 10 faktów o afl++

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Niestety, od listopada 2017, legendarny już, fuzzer autorstwa lcamtufa– AFL nie jest rozwijany. Co prawda Google uchroniło projekt przed zapomnieniem, wrzucając go na GitHuba, lecz widoki na wsparcie projektu przez autora / Google, są mizerne. Na szczęście w otwartym kodzie i społeczności tkwi siła, więc dzisiaj opiszę dziesięć różnic pomiędzy “zwykłym” AFL a AFL++, czyli forku projektu, z sukcesem kontynuującego najlepsze tradycje pierwowzoru.

Jul. 4, 2019

FuzzManager jako wybawienie dla pogubionych wśród swoich serwerów #2

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. W poprzedniej częściomówiłem prostą integrację fuzzerów AFL / HonggFuzz za pomocą tytułowego projektu. Na chwilę obecną jesteśmy w stanie automatycznie parsować raporty z awarii oraz prosto uploadować je na serwer zarządzający. W tej części zajmiejmy się badaniem pokrycia kodu oraz wbudowanym mechanizmem rozpoznawania duplikowanych crashy i ich agregacji w logiczne “kontenerki” w nomenklaturze projektu zwane “crash buckets”.

May. 23, 2019

FuzzManager jako wybawienie dla pogubionych wśród swoich serwerów #1

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Mozilla rzadko (albo prawie wcale!) nie chwali się swoim działem bezpieczeństwa, w mojej opinii bardzo niesłusznie. GitHubowe repozytoria zespołu MozillaSecuritysą bardzo często uaktualniane i można znaleźć w nich złoto – w tym wpisie o jednym z ciekawszych narzędzi o niepozornej nazwie FuzzManager. Swego czasu napisałem (mówiłem o nim na Confidence 2018) do własnego wykorzystania podobne narzędzie, lecz gdybym wiedział o istnieniu tego projektu to oszczędziłbym masę czasu i od razu cieszyłbym się z integracji z mechanizmami badania pokrycia kodu.

May. 7, 2019

“Od zera do bughuntera” – czyli o cyklu, który nieświadomie rozpocząłem dawno temu…

Zastanawiając się nad dalszym kierunkiem bloga, wpadłem na pomysł zebrania w jedno miejsce postów o metodach bughuntingu (oraz exploitacji), które napisałem, uaktualnić je, gdzie jest to niezbędne i “spiąć” w sensowną całość. Roboczo nazwałem ten cykl “Od zera do bughuntera”, który zaplanowałem na około 15 postów (wraz z napisanymi) – poniżej linki do opublikowanych artykułów: Czym jest podatność bezpieczeństwa?Honggfuzz – Fast TrackLLVM LibFuzzer – Fast track #1LLVM LibFuzzer – Fast track #2Mozilla rr – GDB na “sterydach”?

Mar. 8, 2019

Mozilla rr – GDB na “sterydach”?

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Zdarzają się takie dni, kiedy mało co wychodzi, nawet znalezione błędy w oprogramowaniu. Nie zamierzam bawić się w cybercoacha (jak termin się spopularyzuje to znacie mojego maila 😉 ) i pomagać ludziom w kwestiach zmiany myślenia oraz życia ze świadomością istnienia niereprodukowalnych podatności – wolę przedstawić konkretne narzędzia, które pomogą uporać się z tą sytuacją technicznie a nie mentalnie, bo takie rozwiązanie będzie moim zdaniem najlepsze.

Mar. 6, 2019

Ghidra – alternatywa dla IDA Pro czy ładnie opakowany backdoor od NSA?

Jeżeli drogi Czytelniku przespałeś cały dzisiejszy dzień to śpieszę z informacją, że amerykańska agencja bezpieczeństwa (NSA) udostępniła, opracowane w swoich laboratoriach, narzędzie do inżynierii wstecznej binarek. Pakiet Ghidra funkcjonalnie prezentuje się bardzo bogato: obsługa najpopularniejszych architektur i nie tylko, wbudowany dekompilator, abstrakcja projektu, możliwość obsługi wielu binarek, praca grupowa i porównywanie plików. Jeden z moich ulubionych projektów “do bicia” czyli radare2jest zjadany przez dziecko NSA na śniadanie 😉 Software jest oparty o Javę, a przez to bezproblemowo działa na każdej platformie (wymagane jest jedynie JDK w wersji co najmniej 11) Niestety NSA nie opublikowała jeszcze kodu źródłowego, co wzbudza czujność osób pamiętających sprawę Edwarda Snowdenaoraz rewelacje grupy ShadowBrokers.

Feb. 18, 2019

Czym jest podatność bezpieczeństwa?

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Nietypowy, krótki post (w przygotowaniu mam długi tekst i jestem mniej, więcej połowie) w formie share’a z moim zdaniem najlepszego kanału o bezpieczeństwie IT na YouTube – tak chodzi oczywiście o LiveOverflow🙂 W nieco ponad piętnastominutowym nagraniu autor opowiada na pytanie, z którym również często się spotykam: gdzie leży granica pomiędzy błędem a podatnością i czyni to na fajnych przykładach.

Jan. 29, 2019

BinCAT – ciekawostka czy godny uwagi pomocnik reversera?

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Każdego miesiąca (odnoszę wrażenie, że czasami zdarzają się nawet cykle dzienne) pojawiają się interesujące projekty mające na celu wspierać osoby zajmujące się analizą binarną lub bezpieczeństwem na stosunkowo “niskim” poziomie. W tym obszarze każdemu znany jest disassembler / dekompilator IDA Pro. Nie trzeba poświecać wiele wysiłku na szukanie – pierwsza z brzegu lista dostępnych wtyczek lub ilość repozytorów na GitHub zawierających kod powiązany z tym projektem, mówią same za siebie.

Aug. 7, 2018

Automatyczne wyszukiwanie podatności bezpieczeństwa na dużą skalę

Mimo tego, że długo nie pojawiałem się na blogu to nie próżnowałem: popełniłem wpis na blogu CERT Polska, opisujący wykorzystywane przeze mnie metody i rozwiązania do detekcji podatności bezpieczeństwa 🙂 Jest to tekstowe rozszerzenie mojej prezentacji z Confidence 2018. Poniżej zajawka: Problematyka podatności bezpieczeństwa dotyczy praktycznie wszystkich programów lub bibliotek wykorzystywanych w codziennej pracy. Proaktywność w tej kwestii jest jednym z kluczy do dostarczania wysokiej jakości oprogramowania, które zapewni spokojny sen osobom zajmującym się bezpieczeństwem IT.

Feb. 20, 2018

pwnable.kr – fenomenalna platforma do nauki exploitacji & CTF

Ostatnio dużo czasu spędzam na rozwiązywaniu zadań z CTF i praktykowaniu różnych metod exploitacji. Jeden z moich współpracowników (dzięki Mateusz!) polecił mi pwnable.kr jako ciekawe uzupełnienie kursu Modern Binary Exploitation z którego korzystałem (i bardzo polecam 🙂 ). Platforma zachęca do siebie 64 zadaniami o czterech poziomach trudności oraz prawie 16000 użytkowników – niestety większość z nich “wymięka” po pierwszym lub drugim zadaniu (jeżeli Czytelniku będziesz chciał zrobić to samo polecam przeczytanie tego posta Ivana Fratrica).

Dec. 19, 2017

Ponce – Symbolic Execution dla “klikaczy”

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj.Osobiście lubię “zwalać” pracę na mój procesor. Zwłaszcza nudne i powtarzalne czynności bo często w nich strzelam babole, które skutkują jeszcze większymi błędami na wyjściu. Fajnym dodatkiem do tego wszystkiego jest sensowna “klikalność” rozwiązania – sensowność rozumiem w ten sposób, że czynność mogę zautomatyzować za pomocą trzech kliklnięć a nie trzydziestu trzech. Wszystkie wymienione wyżej warunki spełnia Ponce, czyli plugin do IDA’y pozwalający wyklikać sobie zadane zmienne symbolic execution / taint analysis i rozwiązać odpowiednio skonstruowane równanie.

Nov. 19, 2017

PWNing 2017 – Rozwiązanie zadania RE150 “Military grade algorithm” za pomocą Manticore

Początek listopada przyniósł kolejną świetną konferencję –** **Security PWNing Conference 2017. W tym roku miałem przyjemność współtworzyć z zespołem P4 konkurs CTF organizowany w ramach tej konferencji. Poniżej zaprezentuję rozwiązanie mojego zadania z RE, wycenianego na 150 punktów. W trakcie trwania konkursu rozwiązało je dwanaście osób. Clue zadania był szereg odwracalnych, lecz najzwyczajniej w świecie upierdliwych do ręcznego liczenia operacji (dodawanie, odejmowanie, mnożenie oraz xor). Zadanie to było modelowym problemem do zaprzęgnięcia Symbolic Execution, co ninejszym uczynię z pomocą bardzo interesującego frameworka Manticore.

Sep. 10, 2017

tcpdump 4.9.0 & 4.9.1 – 15 x CVE

Z racji okresu urlopowego i wakacji, niewiele działo się na blogu – zaległości zaczynam odrabiać tym wpisem 🙂 Na początku września została wydana wersja 4.9.2 popularnego narzędzia do przechwytywania pakietów tcpdump, łatająca ponad 85 podatności bezpieczeństwa. Moim “łupem” w tej niemałej puli było 15 poniższych CVE: CVE-2017-11108 The STP parser in tcpdump before 4.9.1 has a buffer over-read in print-stp.c, several functions. CVE-2017-11541 Several protocol parsers in tcpdump before 4.

Jul. 13, 2017

Podatności od “drugiej” strony – Windows patch diffing

Deweloperzy systemu operacyjnego Windows w tym roku nie mają łatwego życia – sama “dziesiątka” od początku roku uzbierała ponad 150 CVE. Microsoft, swoim zwyczajem wydaje poprawki w drugi wtorek każdego miesiąca (słynne “patch tuesday”). Dzień ten wypadł akurat przedwczoraj – więc stąd wpis nieco odmienny od głównej tematyki bloga 😉 Biuletyny bezpieczeństwa często bardzo enigmatycznie opisują co było zepsute i co zostało naprawione – pozostaje liczyć na writeupy badaczy (głównie Google Project Zero) i czasami Microsoft (tutaj drugi post).

Jun. 28, 2017

Petya Ransomware

Zachęcam do zapoznania sie z moim wpisem na blogu CERT Polska o wczorajszym ataku ransomware, który sparaliżował wiele instytucji na Ukrainie oraz w Polsce – Petya. Zajawka: Duet Petya & Mischa jest na rynku ransomware od końcówki 2015 roku. Po sukcesie ataku WannaCry, ostatni wariant został wzbogacony o funkcje propagacji wewnątrz sieci za pomocą exploita EternalBlue, PsExec oraz Windows Management Instrumentation Command-line (WMIC). Wczorajsza kampania uderzyła przede wszystkim w sieci ukraińskie (dostawca energii Ukrenergo, system monitoringu promieniowania elektrowni w Czarnobylu oraz producent samolotów Antonov) oraz rosyjskie.

Jun. 27, 2017

Pożyczony & zapomniany kod – dlaczego tego nie robić?

Krótka historyjka Mimo, że tytuł posta jest dosyć oczywisty – porusza on całkiem poważny problem wielu projektów open-source i nie tylko. Używamy cudzy kod, rozwijamy własny projekt, generalnie wszystko jest całkiem okej. Po pewnym czasie skupiamy się na funkcjonalnościach i problemach doraźnych, wiedząc, że “pożyczony” kod sobie działa i spełnia nasze oczekiwania. Mija nawet kilka lat, kod sobie dalej działa a priorytety projektu (i jego rozmiar) znacząco, lub nie, zostały zmienione i prawdopodobnie zmierzamy ku całkiem innemu celowi, niż pierwotnie zakładaliśmy.

May. 30, 2017

Podwójnie “złośliwe” makro VBA

Nieco przydługi wstęp Przyglądając się kampaniom mailingowym rozsiewającym złośliwe oprogramowanie, z dużą dozą pewności można stwierdzić, że w ponad 70% przypadków złośliwym załącznikiem jest plik pakietu Office – Word lub Excel zawierający makro. Na przestrzeni ostatnich miesięcy aktor określany jako Thomas jest “głównym graczem” na polskim rynku takiego mailingu – kampanie Play, Alior Bank czy Paczki w RUCHu to tylko wycinek z wykorzystywanych przez niego scenariuszy. Poza scenariuszami mailingu ich autor dba również o techniczną stronę przedsięwzięcia – dokumenty zawierają zaciemnione lub zahasłowane makra, które mają chronić przed analizą lub budową sygnatur (w tym miejscu pominę skuteczność tych metod 😉 ).

May. 16, 2017

WannaCry Ransomware

Zachęcam do zapoznania sie z moim wpisem na blogu CERT Polska o ransomware, który sparaliżował przed ostatnim weekendem (13-14 maja) masę instytucji w ponad 100 krajach – WannaCry. Zajawka: WannaCry (inne nazwy WCry, WannaCrypt, WanaCrypt0r) jest bardzo skutecznym w swoim działaniu złośliwym oprogramowaniem typu ransomware, które 12 maja swoim zasięgiem objęło ponad 100 krajów i 200 tysięcy komputerów z systemem operacyjnym Windows. Ofiarami padły takie instytucje jak: brytyjska służba zdrowia, Nissan, Telefonica, FedEx, rosyjskie banki i koleje państwowe, indyjskie linie lotnicze Shaheen Airlines oraz włoskie uniwersytety.

Apr. 29, 2017

[CVE-2017-6196] Ghostscript 9.21 – Use-after-free

Słowo wstępu Przez prawie 1,5 miesiąca nie pojawił się na blogu żaden post dt. podatności – zdecydowanie nadszedł czas, aby to zmienić. W tym poście opiszę bardzo ciekawe use-after-free w projekcie Ghostscript – interpreterze języka PostScript oraz plików PDF. Oprogramowanie to jest często wykorzystywane jako core generatorów plików PDF lub demon zajmujący się obsługą plików rastrowych w drukarkach komputerowych. Często można z niego korzystać nawet nie wiedząc o jego istnieniu 🙂

Apr. 13, 2017

LLVM LibFuzzer – Fast track #2

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Słowo wstępu Kolejna część szybkiego wprowadzenia do zagadnień związanych z LibFuzzerem – w tym poście skupię się na nieco “głębszym” wykorzystaniu wbudowanych funkcjonalności, tunigu wydajności fuzzera oraz pokryciu kodu za pomocą SanitizerCoverage. Bez zbędnego rozwlekania, przechodzimy do konkretów 🙂 Jak robić to lepiej? W moim rozumieniu: lepiej = większy code coverage || więcej execs/s.. Generalnie w przypadku fuzzerów zawsze należy pamiętać o prawidłowości: więcej execs/s -> większy korpus -> większy code coverage -> więcej potencjalnych crashy.

Mar. 23, 2017

LLVM LibFuzzer – Fast track #1

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj.Słowo wstępu Dużo ostatnio było o podatnościach – straciłem rachubę ile było to postów pod rząd 😉 W tym poście chciałbym przybliżyć bardzo ciekawy projekt LLVM LibFuzzer, w którym poziom testowania przeniesiony jest na poziom funkcji a nie całych binarek. Oczywiście generuje to pewne problemy, jak i również ma wiele zalet – ale o tym za chwilę.

Mar. 12, 2017

[CVE-2017-6181] Ruby 2.4.0 – Stack Overflow

Słowo wstępu Chwila odpoczynku od projektów wykorzystywanych w branży bezpieczeństwa – dzisiejszym targetem jest interpreter języka Ruby, podstawy popularnego frameworka webowego Ruby on Rails – obecnego w kodzie takich serwisów jak GitHub, BaseCamp, AirBnb czy Twitch. Krótki opis podatności Błąd znajdował się w wersji 2.4.0, a więc na dzień pisania posta ostatniej stabilnej (Git HEAD: fbd5cda6aad6db01bbca3d893a9970314a1bd52c). Funkcja parsująca wyrażenie regularne, przed sprawdzeniem głębokości wyrażenia regularnego, nie inicjalizowała zwracanej wartości, tylko tuż za nim (sprawdzeniem).

Feb. 27, 2017

[CVE-2017-5924] Yara 3.5.0 – Use after free #2

Słowo wstępu Kolejny tydzień – kolejne use-after-free w Yarze 🙂 Dla osób które nie znają backgroundu lub chciałyby dowiedzieć się więcej o “moich” błędach w tym projekcie – odsyłam tutaj i tutaj. Krótki opis podatności Błąd znajdował się w wersji 3.5.0 (Git HEAD: 890c3f850293176c0e996a602ffa88b315f4e98f) – jest to commit naprawiający poprzednie use-after-free. Biblioteka LibYara nie sprawdzała czy głębokość wyrażenia w regule Yara jest większa od zera – zakładała zawsze, że tak jest.

Feb. 8, 2017

[CVE-2016-10211] Yara 3.5.0 – Use after free #1

Słowo wstępu Kontyunuując temat niebezpiecznych narzędzi (w ostatniej odsłonie było radare2) dla osób związanych z bezpieczeństwem IT – kolejny już wpis o Yarze. Temat motywacji testów oraz funkcjonalności projektu opisałem we wcześniejszym poście, więc oszczędze przynudzania czytelnikom 🙂 Krótki opis podatności Błąd znajdował się w wersji 3.5.0 (Git HEAD: 779b9a77aa4377152a5cba031255029afb0c19a5). LibYara w poszukiwaniu identyfikatorów w regułce, przekracza zakres zaalokowanego na nie miejsca i próbuje odczytać adres z pamięci w którym znajdowały się wcześniej wyrażenia regularne.

Jan. 9, 2017

WebKit JavaScriptCore – Out of bounds read

Szybki wstęp Projekt WebKit kusi bughunterów przede wszystkim, bardzo dużym zasięgiem występowania błędu – wykorzystywany jest jako core przeglądarki Apple Safari, silnik Apple AppStore i komponent wielu aplikacji w systemach MacOS X oraz Linux. Między innymi to błędy w WebKitcie były punktem wejścia do jailbreaku iOS i odblokowania urządzeń Apple’a. Myślę, że lepszej motywacji do zajęcia się tym tematem nie trzeba 🙂 Opis podatności Dziura znajdowała się w rewizji SVN 208042 oraz w Safari Technology Preview Release 18 (i niżej).

Dec. 17, 2016

[CVE-2016-1000295] PCRE2 10.22 – Stack Buffer Overflow

Słowo wstępu Bardzo podoba mi się opis projektu – poza opisaniem funkcjonalności, odpowiada również na pytanie dlaczego jest to bardzo interesujący cel fuzzingu: The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. PCRE has its own native API, as well as a set of wrapper functions that correspond to the POSIX regular expression API. The PCRE library is free, even for building proprietary software.

Dec. 8, 2016

LatentBot – modularny i silnie zaciemniony bot

Zachęcam do zapoznania sie z moim wpisem na blogu CERT Polska, tym razem o ciekawym złośniku z aktywnego exploit-kita Rig – LatentBocie. Zajawka: LatentBot jest widoczny w sieci od 2013 roku, a na początku października rozpoczął swoją drugą młodość – dodany został jako payload do bardzo aktywnego exploit-kita Rig i jest serwowany zamiennie z takim złośliwym oprogramowaniem jak: Cerber, CryptFile2, Gootkit czy Vawtrak. Głównym wektorem infekcji dla użytkowników były dokumenty pakietu Microsoft Office zawierające exploity na podatności CVE-2010-3333, CVE-2012-0158, CVE-2013-3906 oraz CVE-2014-1761.

Oct. 8, 2016

Yara 3.5.0 – Błędy Double Free oraz Integer Underflow

Yara jest narzędziem do wyszukiwania wzorców tekstowych oraz binarnych w plikach. Z racji na jej specyficzne “moce” jest używana głównie przez analityków malware, oraz firmy \ projekty zajmujące się bezpieczeństwem IT. Z racji tego, że lubię wiedzieć czego używam, postanowiłem ją trochę pofuzzować za pomocą American Fuzzy Loop. Projekt czasowo “wstrzelił” się chwilę po wydaniu wersji 3.5.0 – wersji w której część kodu odpowiedzialna za parsowanie reguł YARA została zrefaktoryzowana. Jak się później okazało fuzzing + niedawna refaktoryzacja kodu to niezła kombinacja 😉

Sep. 4, 2016

Powrót “Komornika sądowego” z ransomware Mischa i Petya

Zachęcam do zapoznania sie z moim wpisem na blogu CERT Polska, tym razem o narzędziach (Mischa & Petya) użytych przez powracającego aktora, doskonale znanego polskim użytkownikom jako “Komornik sądowy”. Zajawka (jest niewinna, w poście znajduje się dużo “mięska” 😉 ): W pierwszym tygodniu sierpnia trafiła do nas wiadomość podszywająca się pod zawiadomienie od komornika sądowego o następującej treści: Nr sprawy EGZ/2035-TR/12C/08/2016 ZAWIADOMIENIE O WSZCZĘCIU EGZEKUCJI Komornik Sądowy przy Sądzie Rejonowym Poznań – Grunwald i Jeżyce w Poznaniu Piotr Tomaszewski zawiadamia o wszczęciu postępowania egzekucyjnego na wniosek wierzyciela: PKO Bank Polski Spółka Akcyjna ul.

Aug. 17, 2016

CryptXXX & CrypMIC – Analiza aktywnie rozwijanego ransomware

W poprzednim tygodniu, na blogu CERT Polska, pojawiła się moja analiza malware’u znanego jako CryptXXX oraz CrypMIC. Poniżej zajawka posta: Zagrożenie pojawiło się kilka miesięcy temu jako moduł exploit-kita Neutrino. Infekcja następuje po wejściu na stronę na której publikowane są złośliwe reklamy (malvertising). Celem ataku jest głównie nieaktualna wtyczka Adobe Flash Player (wersje do 21.0.0.213, podatność CVE-2016-4117). Złośliwe oprogramowanie dystrybuowane jest zamiennie z ransomware takim jak CryptoWall, TeslaCrypt, CryptoLocker i Cerber.

Jun. 20, 2016

Firmadyne – obiecujący framework do dynamicznej analizy firmware

Pod koniec lutego zrobiło się głośno o błędach w urządzeniach D-Linka (CVE-2016-1558 oraz CVE-2016-1559) znalezionych za pomocą tytułowego frameworku. Od początku ochoczo zabrałem się do testów, jednak nauczony doświadczeniem, że sporo projektów na GitHubie umiera po pierwszym commicie, postanowiłem wstrzymać się z jego opisaniem. Na szczęście projekt nie umarł i ma się całkiem dobrze (na dzień pisania posta, ostatni commit poczyniony został cztery dni temu). Firmadyne jest dzieckiem ludzi z CMU oraz Boston University.

Mar. 3, 2016

Nowe D-Linki, stare błędy

Testując frameworka Firmadyne (jego tematykę poruszę bardzo dokładnie w następnym poście – jeszcze w tym tygodniu 🙂 ) emulację oprogramowania D-Linka znalazłem nowe-stare błędy w urządzeniach DWR-921 rev. C (poprzedni opis dotyczył tylko rewizji A) oraz, routerze spoza rodziny DWR, DSL-2770L. Tym samym lista podatnych urządzeń urosła do dziewięciu modeli. Podatne wersje oprogramowania: DWR-921 rev. C – 3.00b7 (z dnia 2015-09-23) DSL-2770L – 1.03 (z dnia 2015-07-24) Szybkie przypomnienie znalezionych słabości:

Jan. 12, 2016

Return Oriented Programming – Praktyczna exploitacja binarek

Ten wpis jest częścią cyklu “Od zera do bughuntera” – listę wszystkich postów znajdziesz tutaj. Zamiast łamać kolejne urządzenie i oferować “rybę”, czytelnik otrzyma “wędkę” aby móc samemu wykorzystywać podatności typu Buffer Overflow. W tym poście przedstawię praktyczne wykorzystanie techniki “[Return-oriented programming][1]“, wraz z przykładowym kodem exploita. O co chodzi? Od dobrych paru lat systemy operacyjne wspierają zabezpieczenie zwane Data Execution Prevention (DEP). Podstawowym założeniem tego mechanizmu jest to, że żaden segment pamięci nie może być zapisywalny i wykonywalny w tym samym momencie (oznaczane inaczej jako W^X).

Jan. 4, 2016

Orange Livebox 2.0 (ZTE) – Niegroźny błąd Buffer Overflow & Information Disclosure

Kilka słów o tym, jak kończy się brak pamięci o walidacji jednego pola po stronie aplikacji internetowej (czyli de facto wykorzystanie tylko walidacji danych po stronie klienta) oraz dlaczego nie warto podłączać dysków USB do routera.  Bohater dzisiejszego wpisu – Orange Livebox 2.0 (producent ZTE). Post dotyczy słabości w wersji oprogramowania o identyfikatorze 2013-02-21_V6.1.27. Cały plik version.txt (wersje komponentów firmware) znajduje się tutaj. Buffer Overflow Skuteczne wykorzystanie podatności wymaga zalogowania do panelu administracyjnego oraz ręczną modyfikację żądania zmiany SSID sieci Wi-Fi.

Sep. 22, 2015

D-Link DWR-118 dołącza do grona podatnych routerów

D-Link DWR-118 Po analizie firmware’u nowości od D-Linka, czyli modelu DWR-118, śpieszę z informacją, że najnowsza wersja oprogramowania – 1.00b02 (z dnia 2015-08-28) jest podatna na błędy opisane w poniższych postach: Backdoor i parę “ciekawostek” w serii routerów D-Link DWR Backdoor i parę “ciekawostek” w serii routerów D-Link DWR – Reverse Engineering tylnej furtki Szybkie przypomnienie znalezionych słabości: Tylna furtka Podatności CSRF Ujawnianie haseł do sieci WiFi oraz parametrów pracy Wbudowany sniffer oraz logowanie zapytań DNS Ukryte strony administracyjne i pozostałości testowe Model ten jest w oficjalnej dystrybucji w Polsce.

Sep. 1, 2015

Debugowanie aplikacji w architekturze MIPS #2 – Konfguracja IDA + GDB Server

Druga i ostatnia część poradnika budowy środowiska do zdalnego debugowania binarek. W tej części zaprezentuję sposób uruchomienia aplikacji na maszynie wirtualnej QEMU, uruchomienie GDB Servera oraz podłączenie się do niego IDA Pro. Po wykonaniu wszystkich kroków będziemy mogli np. debugować pliki wyciągnięte z firmware różnych urządzeń 🙂 Co będzie potrzebne? Środowisko z poprzedniego posta IDA Pro Dowolna aplikacja skompilowana pod architekturę MIPS 1. Kopiowanie binarki do badania Jeżeli zarządzamy maszyną wirtualną poprzez SSH najwygodniej będzie skopiować aplikację poprzez SCP.

Aug. 6, 2015

Debugowanie aplikacji w architekturze MIPS #1 – Środowisko

Ten post powstał jako uaktualnienie procesu opisanego tutaj, przez Zacharego Cutlipa. Po ponad dwóch latach od napisania tamtego tutoriala pewne rzeczy nieco się zdezaktualizowały lub zostały pominięte w opisie, skutkiem czego przyspożyły mi żmudnej pracy, której Tobie chciałbym oszczędzić 🙂 Co będzie potrzebne? Wymagania nie powinny stanowić żadnego problemu: QEMU (wersja 2.0.0+) Ubuntu Linux (wersje 14.04+, ja używam 15.04) VirtualBox lub VMware Workstation 1. Kompilacja statyczna QEMU Z racji tego, że nowe wersje QEMU mają poprawiony błąd w pliku /linuxuser/elfload.

Aug. 2, 2015

IDA Pro – Tworzenie sygnatur FLIRT dla niestandardowych bibliotek

W pewnych sytuacjach mechanizmy rozpoznawania bibliotek w IDA Pro nie umieją sobie poradzić z bibliotekami z których korzysta dana binarka. Efekt widoczny na screenie poniżej: W oknie Functions widzimy, że wszystkie funkcje są rozpoznane jako pochodzące z zewnętrznych bibliotek (extern), a na pasku znajdującym się na górze zwizualizowany został spory fragment pamięci określony jako Unexplored (kolor khaki). W tej sytuacji możemy skorzystać z mechanizmu Fast Library Identification and Recognition Technology (FLIRT), pozwalającego na samodzielne wygenerowanie sygnatur brakujących, statycznychblibliotek i dodanie ich do IDA’y.

Jul. 24, 2015

Jak załatano backdoora w routerach D-Link DWR?

Korzystając z chwili wolnego czasu chciałbym przedstawić nieco inne spojrzenie na badanie firmware’u. Tym razem nie będę szukał podatności 😉 W tym poście skupię się na analizie zmian dokonanych w kodzie oprogramowania serwera htttpd w serii routerów D-Link DWR celem zablokowania możliwości administracji urządzeniem poprzez tylną furtkę. Krótkie przypomnienie Jeżeli pamietasz czego dotyczyła opisywana przeze mnie sytuacja możesz śmiało pominąć ten akapit. W przypadku chęci zgłębienia problemu zapraszam przeczytania tego posta.

Jun. 24, 2015

Backdoor i parę “ciekawostek” w serii routerów D-Link DWR – Reverse Engineering tylnej furtki

Z racji tego, że nie wszyscy mogą być zainteresowani procesem analizy tylnej furki, postanowiłem wydzielić tą część i przedstawić w osobnym poście. Opis reszty podatności routerów z serii DWR znajdziesz tutaj. Dla formalności jeszcze raz: Podatne urządzenia wraz z wersjami oprogramowania DWR-113 – Rev B. 2.03b DWR-116 – 1.05b DWR-118 – 1.00b02 DWR-512 – Rev A. 1.07b, Rev B. 2.00b DWR-712 – Rev B. 2.02b DWR-755 – 1.06b DWR-921 – Rev B.

Jun. 24, 2015

Backdoor i parę “ciekawostek” w serii routerów D-Link DWR

Ostatnimi czasy D-Link nie ma dobrej passy. Po [wpadce][1] z ichniejszym flagowcem [DIR-890L][2], oraz [jeszcze większej wpadce][3] (bardzo delikatnie mówiąc, dla leniuchów: poprawiano podatną funkcję, tą samą, podatną funkcją) z łataniem tego błędu (dla chętnych, tutaj jeszcze inny [śmieszny błąd][4]) , przyszedł czas na niezłą kombinację w sześciusiedmiu urządzeniach z serii DWR (113, 116, 118, 512 rev A, 512 rev B, 712 rev B, 921, DWR-927): tylną furtkę, CSRFy, ujawnianie haseł, wbudowany sniffer, zbieranie zapytań DNS oraz ukryte strony administracyjne pozwalające np.

May. 27, 2015

TP-Link TL-WA5210G – CSRF, kilka podatności XSS oraz DoS

Niedawno w moje ręce wpadł [TP-Link TL-WA5210G v1][1], brat bliźniak [Ubiquiti NanoStation 2][2]. Całkiem popularne urządzenie w Polsce i za granicą, zwłaszcza wśród niewielkich ISP dostarczających łącza drogą radiową. Pierwsza wersja tego urządzenia, która jest tematem tego posta, została już wycofana z produkcji. Druga jest w trakcie tego procesu. Przyjrzałem się temu urządzeniu i udało mi się znaleźć parę ciekawych słabości 🙂 TP-Link TL-WA5210G Urządzenie na którym zostały odkryte luki działało pod kontrolą firmware w wersji 4.

May. 24, 2015

Hardening Ubuntu Server 15.04 w jedenastu szybkich krokach

Ostatnio kilka osób pytało mnie jak uszczelnić serwery oparte na GNU\Linux w celu wystawienia ich na świat. Zasięgnąłem informacji przez Google’a i po polsku nie znalazłem całościowego poradnika krok po kroku jak to zrobić. Większość postów i publikacji dotyczyło jednej tematyki np. firewalla lub konfiguracji serwera SSH. Poniżej znajdziesz moją ściągawkę, którą z powodzeniem stosuje podczas wdrażania honeypotów i serwerów opartych o Linux’a. W poście korzystam z Ubuntu Server 15.04, lecz procedury są uniwersalne i nie różnią się zbytnio na innych systemach będących pochodnymi Debiana.

May. 7, 2015

Single Packet Authorization za pomocą fwknop

W [ostatnim poście][1] opisywałem grupę SSHPsychos, która przeprowadza ataki brute force na usługę SSH. Grupa w dalszym ciągu aktywnie działa, co potwierdzają logi z moich honeypotów 😉 W nawiązaniu do tego posta opiszę krok po kroku jak wdrożyć i skonfigurować jedną z rekomendacji którą zaproponowałem na końcu wpisu czyli Port Knocking, a konkretniej rozszerzenie tej techniki o nazwie Single Packet Authorization (w skrócie SPA). Czym jest Port Knocking? Port Knocking jest techniką pozwalającą zdalnie otwierać porty na firewallu.

Apr. 12, 2015

21 dni z honeypotem Kippo i grupa SSHPsychos

Zainspirowany ideą taniego honeypota z posta Piotr Marczaka, znanego jako steppe, na Z3S.pl zaopatrzyłem się w najnowsze Raspberry Pi (wersja B2) i uruchomiłem na nim Kippo – bardzo dobrego honeypota SSH. Udało mi się idealnie z nim wstrzelić w działania grupy nieformalnie znanej jako SSHPsychos. Poniżej przedstawiam co udało mi się zebrać w trakcie badania na temat ataków oraz wcześniej wymienionej grupy. Informacje podstawowe Dane były zbierane przez 21 dni (między 8 a 29 marca 2015 roku).

Mar. 22, 2015

Wprowadzenie do Metasploit Framework – pierwsze dwie prezentacje

Swoim zwyczajem, umieszczam pierwsze dwie prezentacje, z warsztatów “Wprowadzenie do Metasploit Framework” które są prowadzone przeze w ramach koła CyberSecurity WAT działającego przy Wojskowej Akademii Technicznej. Kolejne prezentacje będą sukcesywnie umieszczane, a na koniec opublikuję zbiorczego posta ze wszystkimi materiałami z warsztatów. Wprowadzenie do Metasploit Framework – Spotkanie 1 Wprowadzenie do Metasploit Framework – Pozyskiwanie informacji – Spotkanie 2 PS. Wraz z tym postem przemyciłem lekką zmianę layoutu bloga 🙂

Jul. 2, 2014

Podatność CSRF w routerze D-Link DSL-2640B umożliwiająca zdalny restart urządzenia

Po “męczeniu” niesławnego już Thomsona TC7200 postanowiłem przyjżeć się bliżej pierwszej generacji routera D-Link DSL-2640B , który zalegał u mnie, przez długi czas, w piwnicy. Urządzenie to nie grzeszy nowością, kupiłem je w 2008 roku, a jego wsparcie zakończyło się już w 2009 roku. Dlaczego taki staroć? Dlatego, że sporo osób dalej wykorzystuje go do podziału domowego łącza co widać np. na elektrodzie, a niektórzy nawet pokusili się o stwierdzenie nieśmiertelności tego urządzenia.

May. 17, 2014

Błąd w popularnych routerach od UPC (Technicolor TC7200 i Thomson TWG870) umożliwiający zdalny restart urządzenia

Populane urządzenia Thomsona (dystrybucję ich ciągle prowadzi UPC), które od jakiegoś czasu słyną z licznych błędów (więcej tutaj i tutaj), kolejny raz zaskakują trywialną podatnością. Po atakach CRSF i możliwości pobrania, z poziomu nieuwierzytelnionego użytkownika w panelu administracyjnym, backupu konfiguracji, czas na atak pozwalający zakłócić pracę urządzenia i w konsekwencji doprowadzić do zdalnego restartu routerów Technicolor TC7200 oraz Thomson TWG870. Tak jak pisałem wcześniej problem jest banalny i cały “atak” ogranicza się do wysłania pakietu z żądaniem GET lub POST, którego długość przekracza 306 bajtów (Technicolor TC7200) lub 544 bajty dla Thomsona TWG870.

Apr. 28, 2014

Podstawy administracji Windows – Prezentacje z całego cyklu warsztatów

Swoim zwyczajem umieszczam materiały z cyklu warsztatów “Podstawy administracji Windows” które przeprowadziłem w ramach koła CyberGuru działającego przy Wojskowej Akademii Technicznej. Cykl składał się z sześciu spotkań o następującej tematyce: Instalacja i konfiguracja środowiska roboczego + screencast Podstawowe narzędzia administracyjne Windows Active Directory Domain Services – Yyyy… OOO! Uprawnienia takie bezpieczne! Centralne zarządzanie od podszewki – Group Policy Konfiguracja i rozwiązywanie problemów z Group Policy (tylko rozpiska dem, zero contentu)

Nov. 4, 2013

Hello world!

Witam na “odrodzonym” blogu! Grubo po wakacjach postanowiłem całkowicie zmienić tematykę bloga. Z orbity wirtualizacji postanowiłem się przenieść na tematy związane z szeroko pojętym IT (Dev, Sieci, Linux, Windows, wirtualizacja, etc.). Moim zdaniem taka forma będzie lepsza dla czytelnika, gdyż każdy znajdzie coś dla siebie, nie tylko osoby zainteresowane jedną technologią. Oczywiście wirtualizacja dalej będzie jednym z głównych tematów, ale często będzie przeplatana innymi rzeczami. Na bloga będę wrzucał wszystko, co IMHO jest interesujące.