środa, 28 czerwca 2017

Atak ransomware - kilka przydatnych informacji Update: 28 06 2017 godzina 16:00

Poniżej przedstawiamy aktualne podsumowanie ataku ransomware Petya razem z kilkoma rekomendacjami dla osób obsługujących incydent:
  • OCHRONA: Instalacja wszystkich poprawek dla systemu Microsoft Windows. Możliwe, że w pierwszej fazie ataku wykorzystywana jest podatność (ofiara otrzymuje wiadomość email z załącznikiem – dokument doc/xls). Inny wariant – infekcja przez złośliwą aktualizację oprogramowania firmy M.E.DOC. Jeśli firmy są połączone przez VPN (z zagranicznym oddziałem) to w naszej sieci może nie być informacji o tej wiadomości lub złośliwej aktualizacji.
  • OCHRONA: Zalecamy wyłączenie protokołu SMBv1.
  • OCHRONA: Blokada dostępu do zasobów sieciowych Admin$. Złośliwe oprogramowanie w sieci wewnętrznej podłącza się do zasobów \\*\ADMIN$ i w katalogu \??\C:\Windows zapisuje pliki wykonywalne. Poniżej przykład zdarzeń 5140 i 5145 z kategorii File Share/Detailed File Share. Jeśli dzienniki zdarzeń nie zostały usunięte to będziemy mieli informację o komputerze który zainfekował pierwszy oraz o użytych danych uwierzytelniających.




Wgrywane pliki:

C:\Windows\Perfc.dat (biblioteka dll z głównym kodem malware)
C:\Windows\PSEXESVC.EXE – aplikacja psexesvc

W kodzie malware perfc jest wyłącznie odwołanie do Admin$ co może oznaczać, że wystarczy zablokować Admin$:


  • OCHRONA: Zalecane jest wyłączenie zdalnej obsługi przez WMI.
  • OCHRONA: Zalecamy utworzenie pliku perfc oraz perfc.dat w C:\Winodws. Inne zainfekowane komputery łączące się do komputera gdzie jest perfc nie będą wgrywały i uruchamiały tego pliku. Możliwe, że to częściowo pomoże tym co jeszcze nie są zainfekowani.
  • OCHRONA: Blokada uruchamiania plików z katalogu TEMP. Malware zapisuje plik wykonywalny w katalogu C:\Windows\Temp\B30B.tmp i uruchamia go. Mogą być inne nazwy plików. Jest to najprawdopodobniej plik dll który jest zawarty w perfc. Można go odczytać bezpośrednio z perfc zaczynając od offsetu 0x16060


  • OCHRONA: Blokada uruchamiana plików psexe, psexesvc, dllhost.dat.
  • OCHRONA: Zmiana haseł dla wszystkich kont uprzywilejowanych. Złośliwy kod wykorzystuje te dane do propagacji (załadowania i uruchomienia na innych komputerach). Jeśli mamy możliwość analizy zainfekowanego komputera to można z dzienników zdarzeń odczytać używane przez malware konta. Należy pamiętać, że konta uprzywilejowane pozwalają na szyfrowanie wszystkich plików oraz modyfikują MBR.
  • OCHRONA: Blokada na poziomie urządzeń sieciowych w sieci wewnętrznej portów TCP/UDP 445/135/137/138/139
  • OCHRONA: Blokada na hostach możliwości nawiązywania połączeń przez dllhost.dat. Z poziomu firewall w systemie Windows można też zablokować WMI.
  • Odtworzenie: Jest możliwe odtworzenie tablicy MBR i uruchomienie systemu (utworzenie tablicy partycji + odtworzenie rozmiarów partycji). W systemach tych nie ma malware dodanego do autostartu. Pliki są zaszyfrowane. Dla przypomnienia aby zidentyfikować partycje NTFS możemy użyć sygnatury "0xEB52904E". Jeśli natomiast ktoś chce zamontować partycję pod systemem linux to używamy parametru offset=$((wielkość*512)
  • Odtworzenie: Gdy przywrócimy MBR można uruchamiać komputer. Z naszych obserwacji wynika, że gdy w C:\Windows istnieje plik perfc, inne komputery (zainfekowane) po sprawdzeniu obecności pliku nie wykonują kolejnych działań (wgrania i uruchomienia malware) 
  • Odtworzenie: Gdy widzimy na ekranie komunikat CHKDSK – należy wyłączyć komputer. Choć najprawdopodobniej jest i tak za późno.
  • Odtworzenie: Nie widzimy aby malware usuwał Volume Shadow Copy
  • Detekcja: Sekwencja zdarzeń logowania: 4672, 4624 oraz 4634 pozwala również na identyfikację użytych danych uwierzytelniających do załadowania malware. Również zdarzenia 4648 - A logon was attempted using explicit credentials. Gdy malware używa co najmniej dwóch przejętych kont.
  • Detekcja: Tworzone są procesy (ID zdarzeń 4688) z Token Elevation Type  = 1 (Rundll32.exe,SearchFilterHost.exe,SearchProtocolHost.exe,System32\Cmd.exe,Conhost.exe,C:\Windows\Temp\B30B.tmp,Schtasks.exe,C:\Windows\dllhost.dat)
  • Detekcja: Tworzone jest zadanie, które ma po x minut (w poniższym przykładzie 1h) wywołać komendę shutdown.exe /r /f. ID Zdarzenia 4698. Z analizy dzienników zdarzeń oraz dysków wynika, że malware przed restartem szyfruje pliki i propaguje się. Z opisu zadania możemy uzyskać informacje na jakim koncie działał ransomware.
Task Information:
Task Name: \{BD9FB3E9-XXXX-XXXX-XXXX-XXXXXXXXXX}
Task Content: <?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2017-06-27T11:53:35</Date>
<Author>account</Author>
</RegistrationInfo>
<Triggers>
<TimeTrigger>
<StartBoundary>2017-06-27T12:54:00</StartBoundary>
<Enabled>true</Enabled>
</TimeTrigger>
</Triggers>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<Duration>PT10M</Duration>
<WaitTimeout>PT1H</WaitTimeout>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
<Priority>7</Priority>
<Settings>
<Actions Context="Author">
<Exec>
<Command>C:\windows\system32\shutdown.exe</Command>
<Arguments>/r /f</Arguments>
</Exec>
</Actions>
<Principals>
<Principal id="Author">
<UserId>DOMENA\accountname</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
</Task>

Komenda z pliku perfc

  • Detekcja: Przy szyfrowaniu w dzienniku zdarzeń będą zdarzenia 4656 – A handle to an object was requested. W account name będzie informacja o koncie używanym do szyfrowania. Object Name będzie nazwa szyfrowanego pliku.
  • Detekcja: Zdarzenie 4674 (Log security) – Sensitive Privilage Use - wywołane przez proces dllhost.dat
  • Detekcja: Uwaga 1. Pliki dziennika zdarzeń mogą być usunięte na niektórych zainfekowanych komputerach.
  • Odtworzenie: Uwaga 2. Pojawiają się pierwsze fałszywe deszyfratory.
  • Szyfrowanie: W pliku perfc.dat jest zaszyty klucz publiczny RSA który jest używany do zaszyfrowania klucza 128 BIT AES. Ten klucz (inny dla każdej partycji lub hosta) jest używany do szyfrowania plików. 
  • Szyfrowanie: Z niepotwierdzonych informacji wynika, że ten atak nie zakładał możliwości odszyfrowywania plików. 



piątek, 14 kwietnia 2017

Szczegóły techniczne ataku na banki w Polsce z użyciem serwera KNF



Dzisiaj chcemy podzielić się z Wami raportem, który powstał w wyniku prac, jakie realizowaliśmy dla instytucji finansowych w ramach świadczenia usług wsparcia w obsłudze incydentów. Prace opisane w raporcie były związane z obsługą incydentu ataku na sektor finansowy z udziałem serwera Komisji Nadzoru Finansowego na przełomie roku 2016 i 2017. To w wyniku przedstawionych analiz, został wyłączony serwer KNF.

Atak był opisywany już kilka razy, nie tylko przez media w Polsce ale również za granicą. Dotychczas podawane informacje dot. ataku były niepełne a czasami wręcz nieprawdziwe, z pogranicza hipotez i spekulacji.

Niniejszy raport skupia się na technicznych szczegółach ataku i przedstawia sposób działania oprogramowania złośliwego użytego w ataku. Naszym nadrzędnym celem jest ujawnienie tych informacji, które mogą pozwolić specjalistom bezpieczeństwa na lepsze przygotowanie, przeciwdziałanie i wcześniejsze wykrycie podobnych typów ataków w przyszłości oraz pozwolą na ograniczenie skutków tego typu ataków.

W raporcie opisaliśmy najistotniejsze sekwencje zdarzeń, jakie miały miejsce w analizowanych przez nas przypadkach.

Link do raportu: "Analiza ataku na banki w Polsce".

Miłej lektury.


piątek, 24 marca 2017

Exploit Kit dla ransomware

Już wszyscy jesteśmy przyzwyczajeni do tego, że ransomware jest głównie dystrybuowany z użyciem załączników do wiadomości email. Drugą, alternatywną metodą jest wykorzystanie podatności. Poniżej opiszemy tą metodę. W tym konkretnym przypadku atak wykorzystuje podatność w Adobe Flash.
Użytkownik po wejściu na zainfekowaną stronę jest przekierowywany na właściwą serwer z exploit-em. Na początku zwracanych jest kilka zaciemnionych java skryptów, które pobierają obiekt flash wykorzystujący podatność a następnie tworzą szablon wywołujący obiekt flash. Skrypty mogą też sprawdzać zainstalowaną wersję flash aby przesłać „właściwy” obiekt flash.




Analizując pobierany obiekt z użyciem JPEXS Free Flash Decompiler możemy zauważyć długi ciąg znaków.  Jest to shellcode uruchamiany po udanym wykorzystaniu podatności.


Po wczytaniu do narzędzia IDA widzimy, że na samym początku są instrukcje odkodowujące dalszą część shellcode. Kluczem dla XOR jest wartość 0x84.


Spróbujmy odkodować ten fragment za pomocą skryptu w Python:

b = bytearray(open('payload, 'rb').read())
for i in range(len(b)-0x14):
    b[i+0x14] ^=0x84   
open('rezultat,'wb').write(b)


Poniżej wynik:


Jest to komenda, która do pliku o32.tmp zapisuje plik javascript który następnie jest wywoływany za pomocą komendy wscript. Jego celem jest pobranie i uruchomienie właściwego pliku z ransomware (w tym przypadku o nazwie Cerber).

czwartek, 9 marca 2017

Ćwiczenie: Skuteczny atak socjotechniczny



Wstęp

Ataki socjotechniczne są ciągle jedną z najskuteczniejszych metod wykorzystywaną przez intruzów. Aby zrozumieć metody stosowane przez intruzów od czasu do czasu musimy zasymulować taki atak. W tym artykule krok po kroku pokażemy jak wygląda przykładowa faza przygotowania scenariusza ataku socjotechnicznego z użyciem złośliwego oprogramowania.
Opisane przykłady mogą być stosowane wyłącznie w celach edukacyjnych.

Veil-Evasion

Veil-Evasion jest aplikacją z zestawu narzędzi Veil-Framework, który służy do generowania złośliwego oprogramowania (obecnie 51 modułów) oraz obfuskacji już wcześniej wygenerowanego złośliwego kodu. Veil-Evasion pozwala nam na generowanie payload-ów w różnych językach programowania.
Poniżej fragment dostępnych modułów:


Nie wszystkie modułu tego generatora są jednakowo skutecznie. Co ciekawe zastosowanie niektórych z nich powoduje większą wykrywalność niż w przypadku zastosowania natywnych modułów metasploit. Przyjrzyjmy się bliżej jak działa jeden z dostępnych modułów. Użyjemy modułu ruby/shellcode_inject/base64, który możemy zaliczyć do tych bardziej skutecznych (czyli mających małą wykrywalność).
Poniżej przykład konfiguracji:


W ustawieniach samego payloadu, zostawiamy opcje COMPILE_TO_EXE na wartość Y oraz domyślną metodę iniekcji czyli INJECT_METHOD na Virtual. Następnym krokiem będzie wybranie opcji generate oraz dostarczenie potrzebnego shellcode’u poprzez oprogramowanie msfvenom.


Veil-Evasion w tym wypadku da nam możliwość wybrania i wygenerowania shellcode używając bazy msfvenom. Wspominaliśmy wcześniej że payloady wygenerowane w msfvenom są wykrywalne, jednakże w połączeniu z metodą obfuskacji jaką dostarcza Veil-Evasion możemy spokojnie skorzystać z już gotowych modułów msfvenom, oczywiście jeżeli chodzi o sam shellcode.
Wybieramy payload: windows/meterpreter/reverse_https, następnie podajemy adres serwera C&C. Dlaczego https? Nie wszystkie organizacje analizują ruch https. Oczywiście możemy też użyć np. komunikacji DNS ale tak jak już kiedyś pisaliśmy testy socjotechniczne mają też na celu przetestowanie infrastruktury zamawiającego pod katem różnych ustawień bezpieczeństwa.
Na koniec zostaniemy poproszeni o nazwę naszego payload-u, np. ruby_payload.
Poniżej znajduję się kod malware przed przekształceniem do formy pliku wykonywalnego exe:


Możemy zauważyć że zawarte tam są:

  • Wymagane moduły,
  • Wywołania API dzięki którym załadowany i uruchomiony zostanie shellcode,
  • Zakodowany ciąg kodu malware (shellcode) w postaci base64.

Wiadomość email

Często powtarzającym się scenariuszem (ze względu na skuteczność) jest przygotowanie wiadomości z załącznikiem. Treść wiadomości to zazwyczaj informacja o nieopłaconej fakturze albo „ważne dokumenty” dla odbiorcy. Jest to jeden z ważniejszych elementów ataku – a treść i forma jest bardzo istotna i ma kluczowy wpływ na skuteczność całego przedsięwzięcia.

Załącznik

Czasami atakujący załącza bezpośrednio złośliwy plik do wiadomości – np. javascript dodatkowo kompresuje go i zabezpiecza hasłem. Czasami jest to link do dokumentu pdf znajdujący się na zewnętrznym serwerze. Innym mechanizmem jest implementacja złośliwego makra w dokumencie Office. O ile makro jest dosyć skutecznym sposobem osadzenia malware to okazuje się że organizacje coraz częściej blokują ich obsługę.
W opisywanym scenariuszu zastosujemy inną ciekawą opcję umieszczenia złośliwego oprogramowania w dokumencie. Jest nim umieszczenie obiektu OLE (Object Linking and Embedding) w wcześniej stworzonym dokumencie. Z naszego doświadczenia wynika że jest to często zapomniany element, który nie jest poddawany weryfikacji pod kątem obecności malware (niektóre rozwiązania bezpieczeństwa mają możliwość blokowania „aktywnej zawartości” w dokumentach).
Sposób osadzania obiektu w dokumencie pozwala nam ma utworzenie bardzo przekonującego scenariusza, który zwiększa szanse na przeprowadzenie udanego ataku.
Załóżmy, że naszym celem będzie dział reklamacji firmy X. Z informacji z strony www wiemy że na adres mailowy firmy X czyli reklamacje@firma_x.pl można zgłaszać reklamacje jako klient indywidualny.
Stwórzmy najpierw prosty dokument Microsoft Word, który po uruchomieniu będzie wyglądał jakby jego czcionka nie została poprawnie wyświetlona. Robimy tak pisząc na przykład w mniej używanej czcionce np. MT Extra. Inną metodą jest po prostu utworzeniu ciągu znaków [] co będzie przypominało ciąg znaków z źle wyświetloną czcionką.



Dodajemy do dokumentu również informacje o tym, iż jeżeli dokument nie został wyświetlony poprawnie to prosimy o uruchomienie/instalację czcionek. Dodajemy więc informacje, tak jak zostało to przedstawione poniżej:


Teraz zostaje nam jedynie osadzenie obiektu OLE, który jest plikiem ze złośliwym oprogramowaniem, a dla osoby która otrzyma ten dokument, jedynie „przyciskiem” do „aktywacji czcionek”. Przed wstawieniem zmieniamy jeszcze nazwę wygenerowanego złośliwego pliku na „Microsoft Word.exe”.
Samo umieszczenie obiektu OLE z pliku nie jest zbyt zachęcające nawet dla przeciętnego użytkownika, dlatego też zaznaczamy opcje „Wyświetl jako ikonę”. W tym przypadku nazwiemy nasz plik „Aktywuj czcionki” a ikonę wybierzemy z znanej biblioteki shell32.dll. Po spreparowaniu odpowiednio naszego obiektu oraz wprowadzeniu go do dokumentu, całość powinna przedstawiać się tak:


Nasz dokument jest prawie gotowy, teraz jedynie należy mu nadać odpowiednią nazwę.
Każda próba „aktywacji czcionek” powodowała nawiązywanie sesji do serwera C&C na którym znajdował się skrypt wykonujący kilka podstawowych komend na komputerze ofiary. 

Podsumowanie

Pomimo faktu, że technologia osadzania obiektów OLE w plikach z pakietu MS Office była już w przeszłości używana do przenoszenia złośliwego oprogramowania, to z wykorzystaniem odpowiednich sztuczek socjotechnicznych oraz braku odpowiednich mechanizmów ochrony jest duża szansa udanego ataku. Ataku, który jest prosty i skuteczny.

Źródła