Komendy Linuksa jako pierwsza linia analizy incydentu
W codziennej pracy analityka bezpieczeństwa (SOC) umiejętność szybkiego korzystania z wbudowanych poleceń Linuksa bywa bezcenna. Gdy liczy się czas – na przykład podczas triage incydentu lub szybkiej analizy forensic – często jedynym narzędziem jest konsola SSH bez dostępu do interfejsu graficznego. Instalacja dodatkowego oprogramowania zwykle nie wchodzi w grę, więc klasyczne polecenia powłoki Bash stają się pierwszą linią obrony Blue Team.
Krytyczna luka w Oracle Java 7 (JDK/JRE 7u10 i starsze) pozwalała na zdalne wykonanie kodu przez applet lub Java Web Start (drive‑by). Java 6 nie była podatna. CVSS v2: 10.0.
Mechanizm: obejście Security Managera przez dwie podatności: (a) łańcuch JMX/MBean (getMBeanInstantiator → findClass), (b) błąd w Reflection (rekurencja i pominięcie kontroli). Powszechnie wykorzystywana w styczniu 2013 r. (m.in. Blackhole/Nuclear Pack).
Oracle wydało poza‑cykliczną łatę (7u11) i podniosło domyślny poziom bezpieczeństwa Javy do High (klik‑to‑run).
Typowe ślady: łańcuch procesów browser → jp2launcher/java[w].exe → cmd/powershell/wscript, pobrania .jar/.jnlp z nieznanych domen, logi Sun/Java/Deployment.
Mitigacje: aktualizacja/wyłączenie wtyczki Java, blokada MIME application/java-archive i application/x-java-jnlp-file, polityki ASR/EDR.
Krótka definicja techniczna
CVE‑2013‑0422 to para luk w Oracle Java 7 umożliwiająca zdalne wykonanie kodu i wyjście z piaskownicy przez niezaufane applet/JNLP w przeglądarce. Wektor: drive‑by. Dotyczy JDK/JRE 7u10 i starszych; JDK/JRE 6 nie dotyczy. CVSSv2=10.0.
Gdzie występuje / przykłady platform
Windows/macOS/Linux (endpoint, przeglądarka + plugin Java) — klientowe uruchomienie applet/JNLP. Nie dotyczy serwerów ani samodzielnych aplikacji Java bez przeglądarki.
VDI / środowiska korporacyjne — stacje administracyjne z historycznie zainstalowaną Javą 7.
Proxy/NGFW/MDE/EDR/SIEM — główne źródła telemetrii do detekcji.
Chmury (M365/Azure/AWS/GCP) — detekcja po stronie endpointów zarządzanych (Defender for Endpoint), na brzegach (CloudFront/NGFW) lub – rzadziej – w CloudTrail (gdy organizacja sama hostowała artefakty .jar/.jnlp w S3).
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Atak następował po wejściu użytkownika na złośliwą lub skompromitowaną stronę. Niezaufany applet/JNLP wykorzystywał dwa błędy w Javie 7:
JMX/MBean — publiczne getMBeanInstantiator w JmxMBeanServer dawało dostęp do prywatnego obiektu MBeanInstantiator i metod findClass, co umożliwiało załadowanie klas poza kontrolą Security Managera.
Reflection — rekurencyjne wywołania API refleksji omijały kontrolę w MethodHandles.Lookup.checkSecurityManager z powodu sposobu działania sun.reflect.Reflection.getCallerClass. W praktyce oznaczało to pełne RCE z uprawnieniami użytkownika po samej wizycie na stronie (0‑click beyond browsing). Luki były aktywnie wykorzystywane przez Blackhole i Nuclear Pack od 10–11 stycznia 2013 r. Oracle zareagowało alarmem bezpieczeństwa i 7u11 (zmiana default na High, wymuszając potwierdzenia dla appletów).
Artefakty i logi
Źródło
EID/typ
Co szukać
Uwagi
Sysmon
1 (Process Create)
chrome/iexplore/firefox → jp2launcher.exe/java.exe/javaw.exe; dalej spawn cmd.exe, powershell.exe, wscript.exe, mshta.exe
jp2launcher.exe = Java Web Launcher.
Sysmon
3 (Network Connect)
java[w].exe łączące się do Internetu (80/443) tuż po pobraniu .jar/.jnlp
Korelować z proxy/DNS.
Sysmon
7 (Image Load)
DLL wtyczki Java (np. npjp2.dll, jp2iexp.dll)
Indykatory uruchomienia pluginu.
Sysmon
11/22
Tworzenie plików w %AppData% / zapytania DNS przez java.exe
Dropper po eksploatacji.
Windows Security
4688/4689
Tworzenie/zamknięcie procesu jak wyżej
Włącz audyt procesu.
Windows Filtering Platform
5156/5157
Dopuszczenie/blokada połączeń java.exe
Korelacja z hostem docelowym.
Proxy/NGFW
HTTP
Odpowiedzi Content-Type: application/java-archive (.jar), application/x-java-jnlp-file (.jnlp) z nietypowych domen
Wzorzec drive‑by.
Java Deployment
pliki
deployment.properties, logi w …\LocalLow\Sun\Java\Deployment\
Lokacje użytkownika na Windows/macOS/Linux.
MDE (Advanced Hunting)
DeviceProcessEvents, DeviceNetworkEvents
Te same łańcuchy + zdalne URL .jar/.jnlp
CloudTrail (S3 data events)
GetObject
Jeśli organizacja hostowała .jar/.jnlp — nieoczekiwane pobrania/UA z Java 1.7
title: Java Process Network Activity To Untrusted Domains
id: 8b0f7c87-8d07-4a1b-9f77-jar-net
status: experimental
logsource:
product: windows
category: network_connection
detection:
selection:
Image|endswith:
- '\java.exe'
- '\javaw.exe'
DestinationPort:
- 80
- 443
filter_corp_domains:
DestinationHostname|endswith:
- '.corp.local'
- '.trusted.example'
condition: selection and not filter_corp_domains
level: medium
tags:
- attack.t1189
- attack.t1203
Splunk (SPL)
index=winevent* (EventCode=4688 OR sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1)
| eval parent=coalesce(ParentImage,ProcessGuidParent,ParentProcessName)
| search parent IN ("*\\chrome.exe","*\\iexplore.exe","*\\firefox.exe","*\\msedge.exe")
| search Image IN ("*\\java.exe","*\\javaw.exe","*\\jp2launcher.exe")
| stats earliest(_time) as first_seen, values(CommandLine) values(ParentCommandLine) by host, Image, parent, ProcessId
| join type=left host, ProcessId [ search index=winevent* EventCode IN (4688,1) Image IN ("*\\cmd.exe","*\\powershell.exe","*\\wscript.exe","*\\mshta.exe") | table host, ParentProcessId, Image, CommandLine, _time ]
| sort - first_seen
KQL (Microsoft 365 Defender – Advanced Hunting)
let browsers = dynamic(["chrome.exe","iexplore.exe","firefox.exe","msedge.exe"]);
let shells = dynamic(["cmd.exe","powershell.exe","wscript.exe","mshta.exe"]);
DeviceProcessEvents
| where Timestamp > ago(7d)
| where FileName in~ ("java.exe","javaw.exe","jp2launcher.exe")
| where InitiatingProcessFileName in~ (browsers)
| join kind=leftouter (
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where FileName in~ (shells)
| project DeviceId, ShellTime=Timestamp, FileName, ProcessCommandLine, InitiatingProcessId
) on DeviceId, InitiatingProcessId
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, RemoteUrl
CloudTrail (CloudWatch Logs Insights — S3 data events)
Uwaga: tylko gdy masz S3 data events. Szuka pobrań .jar/.jnlp z User-Agent zawierającym „Java”.
fields @timestamp, eventSource, eventName, sourceIPAddress, userAgent, requestParameters.bucketName as bucket, requestParameters.key as key
| filter eventSource = "s3.amazonaws.com" and eventName = "GetObject"
| filter key like /(\.jar|\.jnlp)$/i
| filter userAgent like /Java/i
| sort @timestamp desc
Elastic EQL
sequence by host.id with maxspan=5m
[ process where event.action == "start" and
process.name in ("chrome.exe","iexplore.exe","firefox.exe","msedge.exe") ]
[ process where event.action == "start" and
process.name in ("java.exe","javaw.exe","jp2launcher.exe") and
process.parent.name in ("chrome.exe","iexplore.exe","firefox.exe","msedge.exe") ]
[ process where event.action == "start" and
process.parent.name in ("java.exe","javaw.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","mshta.exe") ]
Skan hostów pod kątem dropperów w %AppData% i autostartu.
CISO (strategiczna):
Eliminacja Javy w przeglądarkach (M1042) + polityka click‑to‑run.
Patch management i wycofanie legacy (M1051).
Wymuszenie EDR/ASR (M1040) i filtracji na brzegu (M1037).
Segmentacja (M1030) dla stacji wysokiego ryzyka.
Priorytetyzacja KEV i regularne tabletopy „drive‑by → execution”.
Uwaga końcowa: Oracle wskazuje, że podatność dotyczyła tylko klientowych wdrożeń Javy (applet/JNLP), a nie serwerów czy samodzielnych aplikacji Java; poprawka 7u11 wprowadziła High jako domyślny poziom bezpieczeństwa. Dziś najlepszą praktyką jest całkowite usunięcie lub odseparowanie wtyczki Java z przeglądarek użytkowników.
Luka w Silverlight 5 (tzw. Double Dereference) umożliwia zdalne wykonanie kodu po odwiedzeniu strony z przygotowaną aplikacją Silverlight. W praktyce wpisuje się to w Drive‑by Compromise (T1189) i Exploitation for Client Execution (T1203). Naprawa: aktualizacja do 5.1.20125.0 lub — lepiej — usunięcie Silverlight (EOL 2021‑10‑12). Detekcja: procesy‑dzieci powłok uruchamiane przez iexplore.exe/firefox.exe po załadowaniu npctrl.dll, zdarzenia Sysmon (EID 1/7), detekcje Defendera.
Krótka definicja techniczna
CVE‑2013‑0074 to błąd nieprawidłowej walidacji wskaźników podczas renderowania obiektu HTML w Silverlight 5, który pozwala napastnikowi na RCE poprzez złośliwą aplikację Silverlight osadzoną na stronie WWW (w kontekście uprawnień aktualnego użytkownika).
Gdzie występuje / przykłady platform
Windows (klienci i serwery) z zainstalowanym Silverlight/ActiveX lub NPAPI pluginem (IE/Firefox historycznie).
macOS (Safari/Firefox – historycznie) z Silverlight 5 / Developer Runtime.
Przeglądarki: wsparcie dla Silverlight zostało wycofane (EOL 2021‑10‑12; Chrome od 2015, Firefox od 2017), co redukuje wektor, ale nie eliminuje ryzyka na hostach legacy.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Atak wymaga nakłonienia użytkownika do odwiedzenia strony WWW zawierającej złośliwą aplikację Silverlight. Wtyczka ładuje npctrl.dll i komponenty Silverlight, po czym błąd double dereference w mechanizmie renderowania HTML umożliwia kontrolę przebiegu wykonywania i wykonanie kodu z uprawnieniami użytkownika. W 2013–2015 luka była chętnie wykorzystywana w exploit kitach (często łączona z innymi błędami Silverlight, np. do obejścia mitigacji).
Dlaczego skuteczna:
Łańcuch drive‑by: pojedyncza wizyta na stronie/baner malvertising.
Kontekst użytkownika (często lokalny admin w środowiskach legacy) zwiększa wpływ – instalacja oprogramowania, modyfikacja danych, tworzenie kont.
W tamtym okresie szeroka obecność Silverlight (np. w środowiskach korporacyjnych), mimo że obecnie produkt jest EOL.
Nie dotyczy – atak jest kliencki. Jeśli jednak Windows‑logi są forwardowane do CloudWatch Logs, użyj Logs Insights do wyszukania sllauncher.exe, npctrl.dll lub wzorca z powyższych reguł.
Elastic / EQL
process where
process.parent.name in ("iexplore.exe","firefox.exe","chrome.exe","plugin-container.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe")
Uwaga operacyjna: jeżeli logujesz Sysmon EID 7, możesz dodać korelację „ImageLoad npctrl.dll + proces‑dziecko przeglądarki w oknie kilku sekund”.
Heurystyki / korelacje
Korelacja fazy ładowania pluginu:ImageLoad(npctrl.dll) → w krótkim czasie dziecko przeglądarki będące LOLBin/skript hostem.
Exploit‑kit telemetry: wizyty z reklam/malvertising + wywołania do znanych domen EK; pomocne sygnatury IPS dla CVE‑2013‑0074.
AV/EDR: wykrycie Exploit:MSIL/CVE‑2013‑0074 i pokrewne sygnatury Defendera powiązać z sesją przeglądarki i artefaktami Silverlight.
False positives / tuning
Legitne procesy‑dzieci przeglądarki (instalatory pluginów, helpery) – dziś rzadkie.
Środowiska z własnymi aplikacjami Silverlight OOB (sllauncher.exe) – whitelistuj znane ścieżki i podpisy.
Ogranicz zakres EID 7 do procesów przeglądarek (filtrowanie Sysmon), by zbić szum.
Playbook reagowania (kroki + komendy)
Identyfikacja i skoping
Inwentaryzuj hosty z Silverlight i wersję: Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Silverlight','HKLM:\SOFTWARE\WOW6432Node\Microsoft\Silverlight' -ErrorAction SilentlyContinue | Select-Object PSPath, Version Lub sprawdź wersję pliku: (Get-Item 'C:\Program Files (x86)\Microsoft Silverlight\sllauncher.exe').VersionInfo Wersja ≥ 5.1.20125.0 nie jest podatna (dla 2013 r.); rekomendowane całkowite usunięcie (EOL).
Cichy uninstall przez MSI (przykładowy GUID spotykany w praktyce): msiexec /x {89F4137D-6C26-4A84-BDB8-2E5A4BB71E00} /qn /norestart (Zalecane: pobrać właściwy GUID z kluczy ...CurrentVersion\Uninstall\ przed wykonaniem).
Triage i dochodzenie
Przejrzyj Sysmon EID 1/7 w oknie czasowym alertu; wypunktuj procesy‑dzieci, DLL‑e pluginu i artefakty dyskowe.
Sprawdź log Defendera EID 1116 i artefakty kwarantanny.
Izoluj host, jeśli doszło do wykonania kodu; uruchom playbook Lateral Movement/Privilege Escalation.
Remediacja i hardening
Upewnij się, że Silverlight jest odinstalowany w całej organizacji; w GPO/WDAC zablokuj sllauncher.exe i ActiveX CLSID.
Komunikacja do użytkowników nt. EOL i ryzyk.
Przykłady z kampanii / case studies
Exploit‑kity (np. 2014–2015) wykorzystywały CVE‑2013‑0074 w łańcuchach drive‑by; nierzadko łączone z innymi błędami Silverlight dla obejść (ROP).
W momencie publikacji biuletynu MS13‑022 brakowało doniesień in the wild, jednak szybko pojawiły się sigantury IPS i artefakty w IR.
Lab (bezpieczne testy) — przykładowe komendy
Wyłącznie w izolowanym labie. Celem jest weryfikacja detekcji, nie eksploatacji.
Generowanie EID 7 (ImageLoad) i EID 1 (ProcessCreate):
Uruchom przeglądarkę IE na hoście labowym z zainstalowanym Silverlight (legacy).
Wejdź na wewnętrzną, nieszkodliwą stronę z aplikacją Silverlight (np. hello‑world firmy).
Równolegle obserwuj Microsoft-Windows-Sysmon/Operational dla ImageLoad npctrl.dll oraz ewentualnych procesów‑dzieci.
Symulacja uruchomienia komponentu OOB:"C:\Program Files (x86)\Microsoft Silverlight\sllauncher.exe" /? -> powstaje EID 1 do przetestowania pipeline (alert powinien zostać benign‑closed).
Walidacja reguły Sigma lokalnie: wyeksportuj logi Sysmon do pliku i przetestuj regułę narzędziem sigmac/SilkETW (dowolny standardowy workflow).
Mapowania (Mitigations, Powiązane techniki)
Mitigations (ATT&CK Enterprise):
M1042 – Disable or Remove Feature or Program: odinstalowanie Silverlight / zablokowanie ActiveX/NPAPI.
M1051 – Update Software: jeśli utrzymujesz hosty legacy – minimum to 5.1.20125.0 (historycznie), ale preferowane całkowite usunięcie (EOL 2021).
M1040 – Behavior Prevention on Endpoint: EDR/Exploit Guard, blokady zachowań (np. powłoki potomne przeglądarki).
Powiązane techniki ATT&CK:
T1189 – Drive‑by Compromise (Initial Access)
T1203 – Exploitation for Client Execution (Execution)
Włączone i zcentralizowane logi Sysmon EID 1/7 dla procesów przeglądarek.
Reguły: „browser → LOLBins” + korelacja z ImageLoad(npctrl.dll).
Monitoruj Defender EID 1116 i automatyczne case’y IR.
Blokady w EDR: uruchamianie powłok z przeglądarek, wstrzyknięcia, ROP.
CISO / SecEng:
Odinstaluj Silverlight w całej organizacji (EOL).
Jeśli absolutnie potrzebny – izolacja VDI i reguły AppControl/WDAC.
Polityki aktualizacji/whitelisting pluginów (zablokowane ActiveX/NPAPI).
Przegląd zgodności: hosty legacy, stacje Kiosk/OT z instalacją Silverlight.
Uwaga końcowa: Silverlight jest wycofany od 2021‑10‑12; najsilniejszą kontrolą jest pełne usunięcie komponentu i blokady pluginów. Pozostałe hosty traktować jako techniczne długi ryzyka i izolować.
CVE‑2012‑1889 to podatność RCE w Microsoft XML Core Services 3.0/4.0/5.0/6.0 (MSXML) wyzwalana przez przeglądarkę/ActiveX — masowo wykorzystywana w kampaniach watering‑hole (drive‑by).
Realistyczne mapowanie do ATT&CK: T1189 (wejście przez stronę), T1203 (eksploatacja klienta), T1204.001 (kliknięcie w link).
Detekcja: korelacja dziecko procesu iexplore.exe/Office ⇒ cmd.exe/powershell.exe/mshta.exe/rundll32.exe, ładowanie msxml*.dll, artefakty proxy/IDS (sygnatury CVE‑2012‑1889).
Priorytet: systemy z MSXML 4.0 (EoL) i legacy IE; podatność jest w CISA KEV — traktuj jako must‑patch.
CVE‑2012‑1889 to błąd niezainicjalizowanego dostępu do pamięci w MSXML (klasa use‑after‑free), który podczas wywołań API obiektów DOM/ActiveX (np. getDefinition / get_definition) pozwala złośliwej stronie WWW doprowadzić do zdalnego wykonania kodu w kontekście użytkownika. Najczęściej exploit był dostarczany przez IE (ActiveX) w scenariuszu drive‑by lub jako zawartość dokumentów Office (MSXML5).
Gdzie występuje / przykłady platform
Windows (klient/VDI/serwery terminalowe) – Internet Explorer/ActiveX, MSXML 3/4/6 w systemie; MSXML 5 w Office 2003/2007.
Active Directory środowiska korporacyjne – wektory przez stacje użytkowników domenowych (przeglądarka).
Chmury (AWS/Azure/GCP) – wektorem jest klient użytkownika; payloady bywały hostowane na serwerach/obiektach web/S3 (telemetria proxy/CloudTrail pomocna, ale sama podatność nie dotyczy usług chmurowych).
ESXi/K8s – nie dotyczy bezpośrednio (klient‑side).
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
MSXML udostępnia obiekty COM/ActiveX do pracy z XML (DOM/SAX/XMLHTTP). W podatnych wersjach wywołanie metod na niezainicjalizowanym węźle mogło skutkować korupcją pamięci (UAF) i przekierowaniem sterowania do shellcode (typowo po heap‑sprayu). Atakujący osadzali kod w zainfekowanych stronach („watering‑hole”), iframe’ach lub reklamach (malvertising). Mechanizm działał bez dodatkowej interakcji poza odwiedzeniem strony (lub kliknięciem linku) i był aktywnie wykorzystywany przed poprawką (zero‑day); Microsoft opublikował tymczasowy „Fix it” oraz finalny biuletyn MS12‑043 z łatami dla MSXML 3/4/5/6.
Dlaczego skuteczne: powszechność MSXML/IE w tamtym okresie, niski próg aktywacji (wizyta na stronie), możliwość obejścia zabezpieczeń przeglądarki (wówczas). Kampanie Elderwood i VOHO używały m.in. tego CVE w łańcuchach SWC (strategic web compromise).
6) Artefakty i logi
Źródło
Artefakt / pole
Co szukać
Uwagi
Sysmon EID 1/ProcessCreate
ParentImage=iexplore.exe/winword.exe/excel.exe/powerpnt.exe; Image w {cmd.exe,powershell.exe,mshta.exe,wscript.exe,cscript.exe,rundll32.exe,regsvr32.exe,bitsadmin.exe,certutil.exe}
Dziecko procesu po renderowaniu treści/ActiveX
Typowy post‑exploit (payload).
Sysmon EID 7/ImageLoaded
ImageLoaded ~ \msxml*.dll
Ładowanie biblioteki MSXML w kontekście przeglądarki/Office
Koreluj z EID 1.
Sysmon EID 11/FileCreate
Tworzenie plików w %TEMP%, %APPDATA% po wizycie na stronie
Wskaźnik droppera
Security 4688
Tworzenie procesu (Windows)
Lustrzane do Sysmon EID 1
WFP 5156 / Proxy
Połączenia HTTP(S) do nieznanych domen bezpośrednio po wizycie na stronie; UA zaw. MSIE/Trident
Korelacja czasu/Referrer
Aplikacja 1000/1001
Błędy IE/wyjątki
Czasem towarzyszą RCE
IDS/IPS/WAF
Sygnatury „MSIE MSXML CVE‑2012‑1889”
Trafienia podczas wizyty na stronie
Przykładowa sygnatura Broadcom.
CloudTrail
—
Nie dotyczy (klient‑side). Możliwa analiza S3 GetObject jako źródła payloadu.
let parents = dynamic(["iexplore.exe","winword.exe","excel.exe","powerpnt.exe"]);
let children = dynamic(["cmd.exe","powershell.exe","mshta.exe","wscript.exe","cscript.exe","rundll32.exe","regsvr32.exe","bitsadmin.exe","certutil.exe"]);
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName in~ (parents)
| where FileName in~ (children)
| join kind=leftsemi (
DeviceImageLoadEvents
| where FileName startswith_cs "msxml" // korelacja ładowania MSXML
) on DeviceId, InitiatingProcessId
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, AccountName
CloudTrail Lake (pomocniczo: hostowanie payloadu na S3/CloudFront)
Uwaga: sama podatność jest kliencka; to zapytanie pomaga znaleźć źródła plików potencjalnie serwujące exploity/payloady do przeglądarek użytkowników (np. S3/public bucket).
SELECT eventTime, userAgent, sourceIPAddress,
requestParameters.key AS object_key, recipientAccountId
FROM $EDS
WHERE eventSource = 's3.amazonaws.com'
AND eventName = 'GetObject'
AND (userAgent LIKE '%MSIE%' OR userAgent LIKE '%Trident/%')
AND (object_key LIKE '%.hta' OR object_key LIKE '%.js' OR object_key LIKE '%.cab' OR object_key LIKE '%.dll' OR object_key LIKE '%.exe')
ORDER BY eventTime DESC
LIMIT 200;
Elastic / EQL
process where event.type == "start" and
process.parent.name in ("iexplore.exe","winword.exe","excel.exe","powerpnt.exe") and
process.name in ("cmd.exe","powershell.exe","mshta.exe","wscript.exe","cscript.exe","rundll32.exe","regsvr32.exe","bitsadmin.exe","certutil.exe")
Heurystyki / korelacje
Sekwencja czasu: wizyta na stronie (proxy) → iexplore.exe ładuje msxml*.dll (EID 7) → proces‑dziecko LOLBIN/script engine (EID 1) → plik w %TEMP% (EID 11).
Punkt ciężkości: hosty z MSXML 4.0 (brak wsparcia, duże ryzyko), legacy IE/tryb kompatybilności.
Źródło payloadu: domeny niedawno zarejestrowane/CDN‑y/obiekty S3 z publicznym dostępem (UA MSIE/Trident).
Proxy + IDS: trafienie sig. „MSIE MSXML CVE‑2012‑1889” + korelacja z pobraniem pliku i uruchomieniem dziecka przeglądarki.
False positives / tuning
Prawdziwe aktualizatory/instalatory wywołujące skrypty z aplikacji Office/IE (rzadkie dziś, ale możliwe w środowiskach legacy).
Dodatki Office/COM mogą sporadycznie tworzyć procesy pomocnicze — ogranicz listę do „red flag” (mshta, wscript, cscript, rundll32 z nietypowymi argumentami).
Warunek czasowy i kierunek: ucinaj FP, jeśli brak poprzedzającego ruchu web lub brak ładowania msxml*.dll.
Rozważ listy wyjątków dla znanych ścieżek podpisanych instalatorów.
Playbook reagowania (IR)
Triage & izolacja: odłącz host (EDR isolate), zapisz pamięć RAM/dysk jeśli to możliwe.
Szybkie KQL/Splunk: wyszukaj łańcuch parent browser/Office → LOLBIN/script engine (zapytania z sekcji 7).
Inwentaryzacja MSXML (PowerShell, tylko w labie/IR): gci "$env:WINDIR\System32" -Filter "msxml*.dll" | Select Name, @{n='Version';e={(Get-Item $_.FullName).VersionInfo.FileVersion}}
Blokada źródeł: domeny/URL z proxy/EDR; jeżeli payload z S3 — zablokuj bucket/klucz na bramie.
Łatanie: wdroż MS12‑043 (KB2719985, KB2721691, KB2596856/KB2687497 dla MSXML5/Office) oraz usuń MSXML 4.0 (EoL).
Hunting retrospektywny (7–30 dni): sprawdź podobne sekwencje, zbieżne domeny, UA MSIE.
Lessons learned: egzekwuj politykę „remove legacy ActiveX/MSXML4”, wymuś modernizację przeglądarek.
Przykłady z kampanii / case studies
Elderwood Project (2012) — łańcuch watering‑hole wykorzystujący m.in. CVE‑2012‑1889 obok CVE‑2012‑1875/CVE‑2012‑0779. Raport Symantec dokumentuje listę zerodayów i modus operandi.
VOHO / RSA FirstWatch — kompromitacje stron branżowych z przekierowaniami do exploitów, m.in. XML Core Services (CVE‑2012‑1889).
Zscaler (2013) — obserwacje, że exploity na CVE‑2012‑1889 „wciąż żyją” w dzikich kampaniach (obfuskowane strony dla graczy).
Lab — przykładowe komendy
Wyłącznie w izolowanym labie. Nie używamy exploitów. Celem jest wygenerowanie telemetrii odpowiadającej post‑eksploitowi (T1189/T1203/T1204.001), aby zweryfikować reguły.
Atomic Red Team (Invoke‑Atomic)# Przygotowanie Set-ExecutionPolicy Bypass -Scope Process -Force iwr https://raw.githubusercontent.com/redcanaryco/invoke-atomicredteam/master/install.ps1 -UseB -OutFile install.ps1 .\install.ps1 # Przykładowe atomiki pokrewne (execution / user execution) Invoke-AtomicTest T1204.002 -ShowDetails # Malicious File (bezpieczne warianty) Invoke-AtomicTest T1204.002 -TestNumbers 1Zweryfikuj, że reguły z sekcji 7 wyłapują procesy potomne/LOLBIN‑y.
Symulacja post‑eksploatacyjna z przeglądarki
Uruchom iexplore.exe (w labie) i ręcznie uruchom benigny proces (np. notepad.exe) z EDR console lub skryptu testowego, aby zasymulować „dziecko przeglądarki”.
Potwierdź, że Sysmon EID 1 + korelacja z EID 7 (ładowanie msxml*.dll jeśli środowisko ładuje biblioteki) wyzwala alert.
Program NIDS/NIPS (M1031) oraz telemetria proxy z korelacją do endpointów.
Regularne testy z Atomic Red Team (kontrola pokrycia detekcji).
Uwagi końcowe: CVE‑2012‑1889 jest starszą, ale dobrze udokumentowaną podatnością z bogatą historią realnych nadużyć. Nawet dziś bywa przydatna do huntingu retro oraz do budowy uniwersalnych detekcji post‑exploit po Drive‑by Compromise. W praktyce kluczowe są: łatanie (MS12‑043), eliminacja komponentów legacy (MSXML4/ActiveX) oraz korelacje telemetryjne opisane wyżej.
Błąd w podsystemie HotSpot/bytecode verifier Javy umożliwia zdalne wykonanie kodu oraz ucieczkę z sandboxa po wejściu na złośliwą stronę lub uruchomieniu nieufnego apletu/JNLP. W praktyce był intensywnie wykorzystywany przez zestawy exploitów (np. Blackhole) do początkowej infekcji stacji roboczych. Aktualizacja JRE/JDK do 7u5/6u33+ i blokada treści web to kluczowe działania. Mapa do ATT&CK: T1189 + T1203.
Krótka definicja techniczna
CVE-2012-1723 to krytyczna podatność RCE w Oracle Java SE (HotSpot) polegająca na błędnej optymalizacji i niewystarczającym sprawdzaniu typów w weryfikatorze bajtkodu dla instrukcji dostępu do pól/statycznych, co umożliwia sandbox escape i wykonanie dowolnego kodu w kontekście użytkownika.
Gdzie występuje / przykładowe platformy
Windows / macOS / Linux (endpointy z JRE/JDK, dawne wtyczki przeglądarek NPAPI, Java Web Start) — scenariusz klienta (najczęstszy).
AD / M365 / ESXi / K8s / chmury (AWS/Azure/GCP): brak bezpośredniego wektora — wpływ pośredni poprzez kompromitację stacji użytkownika i dalsze TTPs (np. kradzież sesji/danych po inicjalnym dostępie). [Nie dotyczy bezpośrednio].
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Błąd wynika z nieprawidłowej optymalizacji i niedostatecznej kontroli typów przez weryfikator bajtkodu HotSpot dla instrukcji GETFIELD/PUTFIELD/GETSTATIC/PUTSTATIC, co prowadzi do niespójności typów i obejścia kontroli bezpieczeństwa. Skutkiem jest ucieczka z sandboxa JRE i możliwość załadowania dodatkowych klas z podwyższonymi uprawnieniami, a dalej RCE. Podatność była wieloplatformowa i szybko trafiła do Blackhole exploit kit oraz do modułów narzędzi ofensywnych, przez co stała się powszechna w kampaniach drive‑by.
Z punktu widzenia ofiary inicjatorem jest zwykle przeglądarka otwierająca stronę z applet/JAR/JNLP, co powoduje załadowanie złośliwej klasy Javy i eksploitację bez dodatkowej interakcji użytkownika (CVSS UI:N). Efektem wtórnym bywają procesy potomne (np. cmd.exe, powershell.exe) lub pobieranie dodatkowych plików (droppers).
index=endpoint sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
| eval parent=lower(ParentImage), child=lower(Image)
| search parent="*\\java.exe" OR parent="*\\javaw.exe"
| search child="*\\cmd.exe" OR child="*\\powershell.exe" OR child="*\\wscript.exe" OR child="*\\cscript.exe" OR child="*\\rundll32.exe" OR child="*\\mshta.exe"
| stats count min(_time) as first_seen max(_time) as last_seen by host, ParentImage, ParentCommandLine, Image, CommandLine, User, process_guid, parent_process_guid
KQL (Microsoft 365 Defender)
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where FileName in~ ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","rundll32.exe","mshta.exe")
| summarize count(), first_seen=min(Timestamp), last_seen=max(Timestamp)
by DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, FileName,
InitiatingProcessCommandLine, CommandLine, InitiatingProcessSHA256, SHA256
(Opcjonalnie, korelacja ruchu sieciowego):
DeviceNetworkEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where RemoteUrl has_any (".jar",".jnlp",".class")
| summarize dcount(RemoteUrl), makeset(RemoteUrl) by DeviceName, InitiatingProcessFileName, bin(Timestamp, 15m)
AWS (CloudTrail Lake / Athena — tylko gdy włączone S3 Data Events)
-- CloudTrail Lake / Athena (przykład): pobrania *.jar* przez tożsamości korp.
SELECT eventTime, userIdentity.arn, sourceIPAddress, requestParameters.bucketName as bucket,
requestParameters.key as objectKey, userAgent
FROM cloudtrail_logs
WHERE eventSource = 's3.amazonaws.com'
AND eventName = 'GetObject'
AND requestParameters.key LIKE '%.jar'
AND userAgent LIKE 'Java/%';
Wymaga rejestrowania Data Events dla S3 i zapytań Lake/Athena.
Elastic (EQL)
process where
process.parent.name in ("java.exe","javaw.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","rundll32.exe","mshta.exe")
Heurystyki / korelacje (co łączyć)
Łańcuch czasowy (±5 min): (Proxy/EDR) pobranie *.jar/*.jnlp → (Sysmon)java[w].exe start → proces potomny z interpretatorem/skryptem → (Sysmon 3) nowa sesja sieciowa C2.
UA i referer: User-Agent: Java/ + domena świeżo zarejestrowana + brak wcześniejszych hitów w organizacji.
Ścieżki plików: zapisy w %TEMP%, %USERPROFILE%\AppData\Local\Temp\ z rozszerzeniami .jar/.class, po których następuje wykonanie EXE/DLL.
EDR/AV: alarmy typu Exploit:Java/CVE-2012-1723 skorelowane z ruchem do nowych domen.
False positives / tuning
Deweloperzy Java (Maven/Gradle/ant) mogą sporadycznie uruchamiać powłokę — whitelisting hostów dev, podpisanych ścieżek narzędzi (np. maven wrapper) i repozytoriów artefaktów.
Instalatory (np. launchery gier/aplikacji na Javie) — filtruj po kataloguProgram Files\Java\bin\java.exe vs. embedded JRE w katalogu aplikacji.
Agreguj alert dopiero, gdy co najmniej dwa warunki spełnione: java → child proci pobranie *.jar/.jnlp z nieznanej domeny.
Playbook reagowania (IR)
Kwalifikacja/izolacja: odłącz host od sieci (EDR izolacja).
Identyfikacja wersji JRE/JDK: java -version; w Windows sprawdź HKLM\Software\JavaSoft\Java Runtime Environment\*.
Blackhole exploit kit (2012): szybka integracja exploitu na CVE‑2012‑1723; ataki drive‑by masowo infekowały hosty przez aplety Javy; publiczny opis procesu wykorzystania i ucieczki z sandboxa.
Microsoft WDSI: rodzina detekcji Exploit:Java/CVE‑2012‑1723 — aplet pobiera i uruchamia dodatkowe pliki z zewnętrznego hosta po wejściu na zhakowaną stronę.
Sygnatury IPS (Broadcom/Symantec): gotowe reguły sieciowe podkomponentu HotSpot dla tego CVE.
CISA KEV: CVE wpisany do Known Exploited Vulnerabilities (wymóg patchowania dla FCEB). Informacja widnieje m.in. na karcie NVD (odniesienie do KEV).
Lab (bezpieczne testy) — symulacja dla SOC
Cel: przetestować reguły bez eksploitacji — wygenerować podejrzany łańcuch java → shell.
Kod (bezpieczny):TestSpawn.javaimport java.io.*; public class TestSpawn { public static void main(String[] args) throws Exception { new ProcessBuilder("cmd.exe", "/c", "echo HelloFromJava").start().waitFor(); } }
Budowa i uruchomienie (host testowy/VM):javac TestSpawn.java jar --create --file test.jar TestSpawn.class java -cp . TestSpawn java -jar test.jar
Oczekiwane artefakty: Sysmon EID=1 (java.exe → cmd.exe), opcjonalnie EID=3 (połączenia, jeśli dodać curl w ProcessBuilder).
Weryfikacja: sprawdź, czy zadziałały Sigma/SPL/KQL/EQL z sekcji 7.
Uwaga: Testy wyłącznie w odizolowanej VM i ze znanym, niewinnym ładunkiem.
M1021/M1031: restrykcja treści web i IPS na granicy
Program zarządzania technologiami starszymi (EOL) oraz egzekwowanie standardów oprogramowania
Uwaga o ryzyku: CVE‑2012‑1723 pozostaje klasycznym przykładem, jak jedna luka w środowisku klienckim może zapewnić atakującym natychmiastowy punkt wejścia (Initial Access) i wykonanie kodu (Execution). Nawet dziś, w retrospektywie, jej wzorce artefaktów (Java → child proc, pobrania JAR) są cennymi sygnałami do budowy analityk behawioralnych w SOC.
EDR, MDR, XDR – trzy popularne skróty w świecie cyberbezpieczeństwa, często pojawiające się w ofertach dostawców i dyskusjach specjalistów. Oznaczają odpowiednio Endpoint Detection and Response, Managed Detection and Response oraz Extended Detection and Response. Choć brzmią podobnie, reprezentują różne podejścia do wykrywania zagrożeń i reagowania na nie.
CVE‑2012‑0507 to błąd type confusion w Java SE (klasa AtomicReferenceArray), umożliwiający zdalne wykonanie kodu przez złośliwy aplet na stronie (drive‑by). Luka była masowo wykorzystywana w 2012 r. (m.in. Blackhole EK i botnet Flashback), szczególnie na macOS, gdzie łatka pojawiła się z opóźnieniem. SOC powinien łączyć telemetry z przeglądarek/proxy (pobrania JAR), EDR (łańcuch procesów java[w].exe → LOLBIN), Sysmon (EID 1/3/11/22) i M365 UrlClickEvents. Podstawowe mitygacje: aktualizacje (M1051), wyłączenie/odinstalowanie wtyczki Java (M1042), restrykcja treści web (M1021), kontrola egzekucji (M1038).
Krótka definicja techniczna
CVE‑2012‑0507 to podatność w Java Runtime Environment (JRE 7u2 i starsze, 6u30 i starsze, 5.0u33 i starsze) w module Concurrency; nieprawidłowe sprawdzanie typów w AtomicReferenceArray pozwala atakującemu ominąć sandbox i wykonać dowolny kod w kontekście użytkownika po otwarciu złośliwego apletu/aplikacji Java Web Start.
Gdzie występuje / przykłady platform
Windows / Linux / macOS: przeglądarka z wtyczką Java/Java Web Start. W 2012 r. Flashback masowo infekował macOS przez CVE‑2012‑0507 (ponad 550k–600k hostów), m.in. z powodu opóźnienia w wydaniu łatki dla Java na macOS.
VDI/DaaS, stacje adminów, serwery jump: ryzyko przy swobodnym surfowaniu z podatną wtyczką.
Chmura / M365: wektor kliknięcia z e‑maila/Teams (telemetria UrlClickEvents), hosty w VDI w chmurze.
Przeglądarki: drive‑by przez skompromitowane witryny, malvertising, iFrame; klasyczny T1189.
Szczegółowy opis techniki (jak działa, cele, skuteczność)
CVE‑2012‑0507 umożliwia eskalację uprawnień apletu poprzez błędną obsługę typów w AtomicReferenceArray. Poprzez manipulację obiektem zserializowanym atakujący doprowadza do type confusion i zapisu referencji poza oczekiwanym typem, co skutkuje wyjściem z sandboxa Javy i RCE. W praktyce exploit był osadzany w stronie www; odwiedziny (lub przeklikany link) inicjowały pobranie JAR i łańcuch dalszej egzekucji/pobrania ładunku (np. przez exploit kity typu Blackhole), czyli T1189 → T1203, często poprzedzone T1204.001.
Dlaczego skuteczna? W 2012 r. wtyczki Java były powszechne; rozproszenie wersji, opóźnienia łatek (zwł. macOS) i automatyczne uruchamianie apletów w przeglądarkach sprzyjało cichym kompromitacjom (drive‑by). Kampania Flashback osiągnęła setki tysięcy ofiar; Oracle załatało błąd w lutym 2012, a Apple dostarczyło aktualizację dla macOS dopiero na początku kwietnia.
# Child processes z Java (Sysmon)
index=endpoint sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
(ParentImage="*\\java.exe" OR ParentImage="*\\javaw.exe")
Image IN ("*\\powershell.exe","*\\cmd.exe","*\\wscript.exe","*\\cscript.exe","*\\rundll32.exe","*\\mshta.exe","*\\regsvr32.exe","*\\msiexec.exe")
| stats count earliest(_time) as first latest(_time) as last by host, ParentImage, ParentCommandLine, Image, CommandLine, ParentProcessGuid, ProcessGuid
# Proxy/secure web gateway: pobrania JAR z UA Java (dostosuj pola)
index=proxy (cs_user_agent="Java*" OR user_agent="Java*") (uri_path="*.jar" OR url="*.jar")
| stats count by src_ip, user, url, user_agent
KQL (Defender for Endpoint / Microsoft 365 Defender)
// 1) Child processy z Java
DeviceProcessEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where FileName in~ ("powershell.exe","cmd.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","msiexec.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine
// 2) Pobrania JAR przez procesy Java
DeviceNetworkEvents
| where InitiatingProcessFileName in~ ("java.exe","javaw.exe")
| where RemoteUrl endswith ".jar" or RequestUrl endswith ".jar"
| summarize cnt=count(), firstSeen=min(Timestamp), lastSeen=max(Timestamp) by DeviceName, InitiatingProcessFileName, RemoteUrl
// 3) Kliknięcia linków (MDO Safe Links)
UrlClickEvents
| where Url has ".jar" or Url has "java" // dopasuj pod kampanie
| project Timestamp, AccountUpn, Url, ActionType, Workload, IPAddress, ThreatTypes
(„UrlClickEvents” w Advanced Hunting zawiera pełny URL i werdykt kliknięcia.)
fields @timestamp, @message
| filter @message like /User-Agent=.*Java\/[0-9]/ and @message like /\.jar/
| sort @timestamp desc
| limit 100
(*CloudTrail nie loguje żądań HTTP do aplikacji; użyj logów ALB/CloudFront/WAF lub NGFW.)
Elastic / EQL
// Java -> LOLBIN
process where process.parent.name in ("java.exe","javaw.exe") and
process.name in ("cmd.exe","powershell.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","msiexec.exe")
// HTTP: UA Java + JAR (przykładowy ECS)
network where network.protocol == "http" and
http.request.method == "GET" and
http.request.headers.user_agent : "Java*" and
url.path : "*.jar"
Heurystyki / korelacje
Łańcuch czasowy: browser → java[w].exe → LOLBIN → outbound (HTTP/DNS) w krótkim oknie.
Proxy/NGFW: UA „Java/*” oraz *.jar z domen o niskiej reputacji → koreluj z procesami Java na hostach.
macOS: brak Gatekeeper promptów przy apletach w WWW (historycznie); sprawdzaj ~/Library/LaunchAgents po nietypowych wpisach.
Zestawy exploitów: obserwuj wzorce Blackhole/Blacole (historyczne IOC/telemetria) jako retro‑threat hunting.
False positives / tuning
Instalatory oparte na Java (Install4j/Launch4j) uruchamiają msiexec.exe/regsvr32.exe — whitelist po ścieżce, podpisie i hashu.
Narzędzia deweloperskie (Gradle/Maven) – generują ruch HTTP; filtruj po docelowych repo (repo.maven.org, wew. Artifactory).
UA „Java/*” bywa używany przez skrypty integracyjne — weryfikuj hosty serwerowe vs. stacje użytkowników.
OSX/Flashback (2012) — masowe infekcje macOS (550k–600k hostów) przez CVE‑2012‑0507; Apple wydało aktualizację w kwietniu 2012 i dodało narzędzia usuwające.
Cel: wygenerować telemetrię detekcyjną, bez exploita.
Proxy/ALB telemetry: serwuj plik hello.jar z wewn. HTTP i symuluj pobranie „klient‑Java”: # serwer python3 -m http.server 8000 # klient (symulacja UA Java z curl) curl -A "Java/1.6.0_31" http://<lab-web>:8000/hello.jar -o /tmp/hello.jar Następnie uruchom zapytania (Splunk/Elastic/KQL/Insights) z sekcji 7.
EDR/Sysmon łańcuch procesów (symulacja benign): uruchom legalną aplikację Java, a oddzielnie (ręcznie) proces pomocniczy, by sprawdzić reguły korelacyjne — nie symuluj złośliwego kodu.
M365: wyślij do siebie e‑mail z bezpiecznym linkiem do hello.jar w labie i sprawdź UrlClickEvents (czy klik i domena są odnotowane).
Mapowania (Mitigations, powiązane techniki)
Mitigations (ATT&CK):
M1051 – Update Software (szybkie łatanie JRE/JDK; polityki patch).
M1042 – Disable or Remove Feature or Program (wyłączenie/odinstalowanie wtyczki Java w przeglądarkach).
M1037 – Filter Network Traffic (blokada znanych domen EK/C2, polityki egress).
M1017 – User Training (świadomość dot. linków/ostrzeżeń przeglądarki).
Powiązane techniki:
T1189 — Drive‑by Compromise – Exploit ładuje się po wejściu na stronę (watering hole/malvertising/iFrame), skanuje wersje wtyczek i serwuje JAR z exploitem; po skutecznym RCE dropper pobiera właściwy malware.
T1203 — Exploitation for Client Execution – Wykorzystanie luki w aplikacji klienckiej (tu: plugin/Java Web Start) do wykonania kodu — bez potrzeby interakcji poza wejściem na stronę.
T1204.001 — User Execution: Malicious Link – Często poprzedza drive‑by; kliknięcie linku kieruje do strony serwującej exploit i uruchamia T1203.