스패로웍을 조심하세요: 물어뜯는 백도어, 탐지하는 명령어
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
중국과 연계된 APT 그룹 FamousSparrow가 이전 SparrowDoor 임플란트를 대체하여 새로운 모듈형 C++ 백도어인 SparroWocky를 배포했습니다. 이 악성코드는 스택 스푸핑 및 반사 메모리 로딩과 같은 고급 안티 분석 기능을 포함하고 있습니다. 현재 활동은 라틴 아메리카의 정부 기관을 중심으로 집중되고 있습니다.
조사
ESET 연구원들은 그 모듈형 구조와 독특한 코드 특성, Jabberwocky 시에 대한 참조를 통해 SparroWocky를 식별했습니다. 연구는 DLL 사이드 로딩과 RC4로 복호화되는 사용자 정의 페이로드 포맷을 활용하는 삼지창 로더 스킴을 밝혀냈습니다. 분석가들은 또한 Mbed TLS 및 MinHook 같은 오픈소스 라이브러리가 은폐성과 기능성을 개선하는데 사용되고 있음을 관찰했습니다.
완화
조직은 DLL 사이드 로딩에 대한 엄격한 통제를 시행하고, 의심스러운 서비스 생성이나 레지스트리 Run 키 변경을 모니터링해야 합니다. 메모리 전용 PE 실행과 스택 조작을 식별할 수 있는 고급 엔드포인트 탐지도 중요합니다. Exchange 서버를 포함한 공개 애플리케이션은 초기 접근 기회를 줄이기 위해 즉시 패치되어야 합니다.
대응
SparroWocky 활동이 탐지되면, 영향을 받은 시스템은 즉시 격리되어 측면 이동 및 명령 제어 통신을 방지해야 합니다. 응답자는 반사적으로 로드된 모듈을 식별하기 위해 메모리 포렌식을 수행하고 하이재킹된 실행 흐름을 조사해야 합니다. 또한 무단 서비스 설치나 SnapCart와 같은 지속성 메커니즘에 대한 변경을 검토하기 위해 감사 로그도 검토되어야 합니다. SnapCart 레지스트리 값.
공격 흐름
이 부분은 아직 업데이트 중입니다.
탐지
가능한 지속성 포인트 [ASEPs – 소프트웨어/NTUSER Hive] (via registry_event)
가능한 지연된 실행 동작 (via cmdline)
IOC (HashSha1) 탐지: 주의! SparroWock: 물어오는 백도어, 명령어를 포획하다
IOC (SourceIP) 탐지: 주의! SparroWock: 물어오는 백도어, 명령어를 포획하다
IOC (DestinationIP) 탐지: 주의! SparroWock: 물어오는 백도어, 명령어를 포획하다
SparroWocky 백도어 반사 코드 로딩 탐지 [Windows Sysmon]
SparroWocky 백도어 C&C 통신 및 프록시 탐지 [Windows 네트워크 연결]
SparroWocky 메모리 내 실행 탐지 [Windows 프로세스 생성]
시뮬레이션 실행
-
공격 서사 및 명령: 적은 C2(명령 및 제어) 서버와 비밀 통신 채널을 수립하려고 합니다. 간단한 주변 방어를 우회하기 위해, 공격자는 SOCKS5 프록시를 사용하여 트래픽을 터널링하고, 감염된 엔드포인트에서 나온 것이 아닌 합법적인 프록시 서버에서 나오는 것처럼 보이게 합니다. 이 동작은
선택_http_프록시탐지 규칙에서 SO=list을 생성하여 프로토콜을 SOCKS5로 식별하고 동작을 ‘허용’으로 설정하도록 트리거하는 것을 목적으로 합니다. -
회귀 테스트 스크립트:
# SOCKS5 프록시를 통한 SparroWocky C2 시뮬레이션 # 주의: '허용' 로그를 트리거하기 위해 도달 가능한 프록시나 시뮬레이션 리스너가 필요합니다. $ProxyServer = "127.0.0.1:1080" # 시뮬레이션 목적을 위한 로컬 리스너/프록시 가정 $TargetUrl = "http://example.com" Write-Host "[+] C2를 시뮬레이션하기 위해 SOCKS5 프록시 연결을 시도 중..." # PowerShell을 사용하여 프록시를 통한 연결 강제 시도 $proxy = New-Object System.Net.WebProxy("http://$ProxyServer") $wc = New-Object System.Net.WebClient $wc.Proxy = $proxy try { $wc.DownloadString($TargetUrl) Write-Host "[+] 연결 시도됨. 방화벽 로그에서 SOCKS5/HTTP 프록시 활동을 확인하십시오." } catch { Write-Host "[-] 연결 실패(리스너가 없는 경우 예상됨), 하지만 네트워크 스택에 의해 여전히 수집된 텔레메트리가 있어야 합니다." } -
정리 명령:
# 실험실 설정의 일부로 시작된 로컬 프록시 리스너 중단 Stop-Process -Name "nc" -ErrorAction SilentlyContinue Stop-Process -Name "python" -ErrorAction SilentlyContinue Write-Host "[+] 정리 완료."