03 — Praktika
Tyrimo atvejai
Šeši detalūs scenarijai iš realios praktikos. Kiekvienam pateikiama: situacija, žingsninė
metodika, įrankių rinkinys, galimi rezultatai ir pavyzdinė tyrimo išvada.
Scenarijus
DeFi protokolas praranda 2.41M USDT dėl smart contract pažeidžiamumo. Lėšos akimirksniu konvertuojamos į ETH ir per Tornado Cash mikserį pradedamos „skalbti". Užduotis — atkurti pinigų judėjimo kelią, identifikuoti išvedimo taškus ir paruošti KYC užklausą biržoms.
Tyrimo žingsniai
- Pradinio piniginės adreso identifikavimas (eksploito tranzakcija)
- Adresų klasterizavimas (common-input ownership heuristika)
- „Peeling chain" sekimas — smulkesnių pervedimų grandinė
- Mikserio depozitų laiko ir denominacijų koreliacija
- Išėjimo (off-ramp) taškų identifikavimas — CEX deposit adresai
- KYC užklausa per FNTT, Europol kanalus
Galimi rezultatai
- Adresų klasterio žemėlapis su 87% lėšų sekamumu
- Identifikuotas išėjimo taškas (Binance, KuCoin deposit ID)
- KYC duomenys per teisėtus kanalus (paso kopija, IP, sesijos)
- Tarpinis „mule" agentas, kurio sąskaita naudota išvedimui
- Funkcijų signatūrų atitikimas su žinomomis Lazarus, FIN7 atakomis
Teisinis pagrindas
LR BPK 154, 158 str. · FATF Travel Rule (R.16) · AMLD6 direktyva · Tarptautinė pagalba pagal Budapešto konvenciją.
case://BC-2024-0091.tracing
# Lėšų judėjimo žemėlapis
source: 0x4a1c…d8e2 (exploited vault)
stolen: 2,412,890 USDT # Ethereum mainnet
first_hop: 0x9c33…f721 # Uniswap swap to ETH
mixer: Tornado Cash 100 ETH pool
deposits: 28 tx in 9h 14m # pattern: 10 ETH x 28
## Off-ramp clusters (post-mixer)
cluster_A: Binance hot wallet 2,099,514 USDT (87.0%)
cluster_B: KuCoin deposit 265,418 USDT (11.0%)
cluster_C: unknown / OTC desk 47,958 USDT ( 2.0%)
## KYC request status
jurisdiction: LT (FNTT) - BVI (Binance)
filed: 2024-08-22 11:04 EET
response: received 2024-09-01 | passport, IP, session UA
linked_id: Subject-7193 (see case://NEE-2024-0473)
Scenarijus
E-komercijos platforma (WordPress, WooCommerce) pastebi neįprastą administratoriaus paskyrų skaičių. Klientai praneša, kad atsiskaitymo lange parodomas svetimas mokėjimo langas. Įtariama, kad svetainėje veikia web shell ir suklastota mokėjimų forma (Magecart-style).
Tyrimo žingsniai
- Nginx, Apache access ir error logų rinkimas (90 d.)
- WAF (ModSecurity, Cloudflare) įvykių koreliacija
- Failų sistemos diff — naujai sukurti ar pakeisti PHP failai
- YARA signatūrų taikymas web shell aptikimui
- Užkratos vektoriaus (CVE) identifikavimas plugin'e
- JS injekcijos paieška checkout puslapyje (Magecart skimmer)
- DB užklausų analizė — kokie duomenys eksfiltruoti
Galimi rezultatai
- Tiksli atakos chronologija nuo zero-day iki eksfiltracijos
- Web shell hash, virš 12 IOC indikatorių
- Eksfiltruotų kortelių sąrašas (klientų informavimas pagal BDAR)
- Magecart skimmer C2 endpoint'as ir DOMAIN sąsaja
- Privilegijų eskalacijos kelias nuo www-data iki root
nginx/access.log — užkratos akimirka
# Įsibrovimo HTTP užklausa
185.220.101.42 - - [14/Aug/2024:02:17:33 EEST] "POST
/wp-content/plugins/wpforms-lite/includes/admin/ajax-actions.php
?action=wpforms_form_save&data=PD9waHAgZX..."
200 412
"-" "ZmEu"
# Po 2 sek. — web shell suaktyvinamas
185.220.101.42 - - [14/Aug/2024:02:17:35 EEST] "GET
/wp-content/uploads/2024/08/.cache.php?cmd=id"
200 86
# Magecart skimmer įdiegimas checkout.js
185.220.101.42 - - [14/Aug/2024:02:18:11 EEST] "POST"
/wp-admin/admin-ajax.php?action=heartbeat"
200 # inject: cdn-pay[.]net/skim.js
## IOC
shell_sha256: 9f3c1a7e4d2b5c8a6f0e9b4d7a3c1e5f2b8a6d9c7e1f0a4b3d8c5e2f1a9b6d3
skimmer_c2: cdn-pay[.]net # registered 6 days before attack
cve: CVE-2024-10571 (WPForms Lite < 1.9.1)
Scenarijus
SOC analitikas pastebi keistą periodinį TLS srautą iš darbo stoties į 185.220.101.42 kas 67 sekundes. EDR sprendimas nieko nemarkiruoja. Įtariamas fileless C2 beaconing. Prieš išjungiant darbo stotį, padaroma RAM išklotinė ir paimamas pilnas tinklo PCAP iš core switch SPAN porto.
Tyrimo žingsniai
- PCAP failo „carve" (Arkime, Moloch)
- JA3, JA4 TLS clientHello fingerprintų lyginimas su žinomais
- Beaconing intervalų analizė (jitter, sleep skew)
- DNS užklausų DGA (Domain Generation Algorithm) aptikimas
- Eksfiltracijos „byte volume" anomalijų paieška
- C2 infrastruktūros žemėlapis per passive DNS, VirusTotal
Galimi rezultatai
- Patvirtintas C2 protokolas, raktinis žodis URI
- JA3 atitikimas Cobalt Strike Malleable C2 profiliui
- Beacon intervalas: 67 ± 11 s (sleep jitter 16%)
- Eksfiltruoti ~412 MB per HTTPS POST į kelis CDN
- Atributacija į žinomą APT (TTP atitikimas 78%)
zeek/conn.log — beaconing pattern
# Periodiniai beacon prisijungimai (kas ~67 s)
ts=1716042893.21 uid=Co7wxR orig=10.0.42.117 resp=185.220.101.42:443
proto=tcp duration=8.31s orig_bytes=512 resp_bytes=128
conn_state=SF history=ShADdaF
ja3=e7d705a3286e19ea42f587b344ee6865 Cobalt Strike default
ja3s=ec74a5c51106f0419184d0dd08fb05bc
ts=1716042960.43 uid=Co8axR orig=10.0.42.117 resp=185.220.101.42:443
duration=7.94s orig_bytes=528 resp_bytes=144
ja3=e7d705a3286e19ea42f587b344ee6865
## Eksfiltracijos „sprogimas" (00:14:22 UTC)
ts=1716046462.18 uid=Cq9zxR resp=185.220.101.42:443
duration=412.7s orig_bytes=432,189,440 412 MB uplink
conn_state=SF
# Statistika
beacons_total: 1,247 over 23h 11m
avg_interval: 67.2s (±10.8s jitter)
classification: Cobalt Strike Beacon (high confidence)
Scenarijus
Ligoninės darbo stotis užšifruota nežinomu ransomware. Antivirusas signatūros nepažįsta, dekriptorius viešai neegzistuoja. Užduotis — atlikti pilną binarinio failo analizę, identifikuoti šifravimo schemą, nustatyti, ar raktas saugomas vietoje, perduodamas į C2, ar formuojamas determinuotai (galima atvirkščia inžinerija).
Tyrimo žingsniai
- Statinė analizė: PE header, sekcijos, eilutės, imports (IDA, Ghidra)
- Packer'io aptikimas (DIE, PE-bear) ir unpacking (UPX, custom)
- Dinaminė analizė izoliuotoje smėlio dėžėje (Cuckoo, ANY.RUN)
- API call trace — CryptoAPI, BCrypt kvietimai
- Šifravimo algoritmo ir režimo identifikavimas (Chacha20, AES-CBC)
- Raktų valdymo schema: PRNG seed, C2, laikinas raktas
- CAPA, YARA signatūrų kūrimas šeimos identifikavimui
Galimi rezultatai
- Pilna IOC ataskaita (hashes, mutex'ai, kelias, raktai)
- C2 protokolas dekoduotas — galima konfigūracijos ištrauka
- Šifravimo schemos diagrama (kaip generuojamas raktas)
- Atributacija pagal kodo panašumus (Black Basta, LockBit, Akira)
- Galima dekriptoriaus prielaida (jei naudojamas silpnas PRNG)
# Anti-analysis
capa: detect virtual machine via CPUID (T1497.001)
capa: detect debugger via IsDebuggerPresent (T1622)
capa: check for sandbox via timing-attack (T1497.003)
# Encryption
capa: encrypt data using ChaCha20 (T1486)
capa: generate key via CryptGenRandom # weak seed
capa: encode key in registry HKCU\Software\... (T1112)
# C2 communication
capa: resolve domain via DNS-over-HTTPS (T1071.004)
capa: communicate via HTTPS POST (T1071.001)
capa: send RSA-encrypted session key
# Persistence
capa: persist via Run registry key (T1547.001)
capa: persist via Scheduled Task "AdobeUpdateService" (T1053.005)
# Impact
capa: delete Volume Shadow Copies (vssadmin) (T1490)
capa: drop ransom note "!HOW_TO_RECOVER.txt"
## Atributacija
rich_header: matches Black Basta build chain
code_sim: 82% overlap with Akira r3-2024
verdict: ransomware — variant Akira.B, Black Basta hybrid
Scenarijus
Įmonės direktoriaus kompiuteris elgiasi neįprastai: lėtas, periodiškai siunčia paketus net tada, kai naršyklė uždaryta. Antivirusas ir EDR — švarūs. Diske įtartinų failų nėra. Tipinis „living off the land" scenarijus, kur kenksmingas kodas egzistuoja tik atmintyje. Padaroma RAM išklotinė per WinPMEM prieš sistemos perkrovimą.
Tyrimo žingsniai
- RAM atvaizdo paėmimas (WinPMEM, FTK Imager Lite)
- OS profilio identifikavimas (vol3 windows.info)
- Procesų medis — pstree, malfind, ldrmodules
- Proceso injekcijos paieška (hollow process, DLL injection)
- Slėpti tinklo prisijungimai (netscan)
- Cmdline ir envars istorija (cmdline, envars)
- YARA skenavimas tiesiai per memory (yarascan)
Galimi rezultatai
- Injekuoto proceso PID ir „parent" (svchost, spoolsv, injected)
- C2 ryšiai, kurių EDR neaptiko (raw socket)
- In-memory PowerShell payload (Base64, GZip)
- Tikras paleistas kodas, kuris skiriasi nuo disko failo (hollowing patvirtinimas)
- Iškrautas iš RAM pilnas vykdomasis failas (procdump)
vol3 windows.malfind — injekcija aptikta
# Volatility 3 — proceso injekcijos požymiai
$ vol3 -f mem.raw windows.malfind
PID Process Start VPN End VPN Tag Protection
---- ------- --------- ------- --- ----------
1240 svchost.exe 0x1f0000 0x1ffffff VadS PAGE_EXECUTE_READWRITE
# Disassembly preview:
0x1f0000 e8 00 00 00 00 call 0x1f0005
0x1f0005 58 pop rax
0x1f0006 48 83 c0 12 add rax, 0x12
0x1f000a 48 31 c9 xor rcx, rcx
# Hallmark of reflective loader, Cobalt Strike beacon
$ vol3 -f mem.raw windows.netscan
Proto Local Addr Foreign Addr State Owner
----- ---------- ------------ ----- -----
TCP 10.0.42.117:51234 185.220.101.42:443 ESTABLISHED svchost.exe (1240)
# But EDR shows no network activity for PID 1240 — hidden
$ vol3 -f mem.raw windows.cmdline --pid 1240
PID Process CommandLine
---- ------- -----------
1240 svchost.exe C:\Windows\System32\svchost.exe -k netsvcs -p -s Schedule
legitimate command line — but executable image differs
$ vol3 -f mem.raw windows.dumpfiles --pid 1240
dumped 1240.svchost.exe.bin (SHA256: a7c3…f902)
# Hash NOT matching legitimate svchost.exe — confirmed process hollowing
Scenarijus
Smurto auka įtaria, kad jos buvęs partneris seka jos buvimo vietą realiu laiku ir mato susirašinėjimą. Telefone (Android 14) nematyti įtartinų aplikacijų, bet baterija išsenka per 6 valandas, įrenginys įkaista. Užduotis — atlikti telefono forensinį tyrimą ir paruošti įrodymus prokuratūrai dėl privataus gyvenimo neliečiamumo pažeidimo (LR BK 167 str.).
Tyrimo žingsniai
- Loginis nuskaitymas su aukos sutikimu (Cellebrite, MOBILedit)
- Įdiegtų aplikacijų inventorizacija (įsk. system-level)
- Slėpto „launcher'io" be ikonos paieška
- Pranešimų ir „accessibility service" leidimų analizė
- GPS, lokacijos istorija (Google, Android sistemos logai)
- WhatsApp, Signal duomenų bazės dekriptavimas
- Stalkerware signatūrų taikymas (mvt-android)
- Tinklo srauto analizė per VPN proxy (jei galima)
Galimi rezultatai
- Stalkerware aplikacijos identifikavimas, kūrėjo URL
- Diegimo data ir aplinkybės (USB debugging, sideload)
- Eksfiltracijos kanalas — C2 serverio adresas
- Aukos lokacijos taškų sąrašas, perduotų stalkeriui
- Galimas atakuotojo identifikavimas per C2, pay-per-use paskyrą
Teisinis pagrindas
LR BK 167 str. (privataus gyvenimo neliečiamumas) · 168 str. (informacijos neteisėtas rinkimas) · BPK 158 str. (objektų apžiūra) · Eksperto skyrimas pagal BPK 84 str.
mvt-android scan — stalkerware aptiktas
# Mobile Verification Toolkit — Android scan results
$ mvt-android check-backup --output ./case-mobile-06 backup/
## Įdiegtų aplikacijų patikra (suspicious)
[!] Detected app: com.qoolsoft.androidsystemwebview
name: "Android System WebView" # spoofed
real_pkg: not from Google Play
install: 2024-02-14 21:33 EET # installed via adb sideload
permissions: ACCESS_FINE_LOCATION, RECORD_AUDIO, READ_SMS,
READ_CONTACTS, READ_CALL_LOG, BIND_ACCESSIBILITY
launcher_icon: hidden
matches: mvAndroidStalkerware:FlexiSPY rule
## SafetyNet, Play Protect bypass
[!] Device Owner: "com.qoolsoft.androidsystemwebview"
# App promoted to device admin — cannot be uninstalled normally
## Tinklo srautas (paskutinės 24 val.)
domain: api.flexispyclient[.]com 1,247 prisijungimai
domain: geo-tracker-cdn[.]net 8,932 POST užklausų
total_exfil: 147 MB (audio, SMS, GPS, contacts)
## Išvada
verdict: commercial stalkerware (FlexiSPY-family)
vector: fizinis prieigos langas, USB sideload
evidence: tinkama BPK 158 str. apžiūros aktui
recommend: KYC užklausa FlexiSPY (UK) per Europol