개요 :
배트로더는 이 시리즈의 새로운 멀웨어가 아니라, 새롭게 등장한 멀웨어입니다. 이전 블로그에서는 배트로더가 스틸러와 랜섬웨어를 포함한 다양한 유형의 멀웨어를 어떻게 유포하는지 살펴보았습니다. 또한 배트로더가 초기 접근 권한을 획득하는 역할을 하는 방식을 심층적으로 살펴보고, 매우 회피하기 쉬운 특성과 시간이 지남에 따라 지속적으로 업그레이드되는 능력에 대해서도 강조했습니다.
사용자 시스템에 악성코드를 유포하는 데에는 다양한 기법이 사용됩니다. 이러한 방법에는 피싱 이메일, 문서 위장, 크랙 소프트웨어 다운로드 등이 있습니다. 이 중 크랙 소프트웨어 다운로드는 일반 사용자에게는 무해해 보일 수 있습니다. 악성 코드 종종 진짜 파일 이름을 사용하고 대부분의 악성 활동을 백그라운드에서 수행하거나 악성 코드가 있는 깨끗한 파일을 주입합니다.
이 블로그에서는 Batloader가 페이로드를 로드하는 방식을 분석해보겠습니다. 이 경우에는 페이로드가 스틸러입니다.
기술적 분석 :

그림 1: 감염 사슬
캐비닛 파일에는 임시 위치에 놓여 실행된 후 나중에 삭제되는 박쥐 파일이 들어 있습니다.

그림 2: 캐비닛 파일

그림 3: 추출된 Bat 파일
난독화된 bat 파일의 시작 주석은 base64로 인코딩되고 AES로 암호화된 gZip 스트림입니다. 이 스트림은 나중에 dotnet 파일로 복호화되어 임시 위치에 저장됩니다.

그림 4: 난독화된 Bat 파일

그림 5: 난독화된 Bat 파일
난독화된 bat 파일에는 실제 powershell.exe를 현재 폴더로 복사하여 실행하는 PowerShell 스크립트가 포함되어 있습니다. PowerShell을 스크립트는 bat 파일의 시작 주석을 가져와 아래 작업을 수행합니다.
- 특정 키워드를 제거하세요.
- Base64 인코딩에서 변환합니다.
- CBC 모드를 사용한 AES 복호화.
- 3에서 받은 GZipStream을 압축 해제했습니다.rd
- EntryPoint에서 어셈블리를 로드합니다.

그림 6: PowerShell 스크립트
PowerShell 스크립트는 Asyncrat 맬웨어 dotnet exe를 temp 폴더로 옮기고 실행을 시작합니다.
3단계: AsyncRat
삭제된 파일은 보호되지 않고 난독화가 해제되었습니다.

그림 7: 삭제된 Exe 파일
asyncrat 실행은 CBC 모드에서 base64 인코딩을 사용하여 AES 암호화된 값을 복호화하여 구성을 초기화하는 것으로 시작됩니다.

그림 8: 구성 초기화

그림 9: AES 복호화
안티 분석 모듈
디버거, 샌드박스 및 기타 지표가 있는지 확인하여 샘플이 분석 중인지 확인하기 위해 환경을 검사합니다. 이러한 지표가 감지되면 실행을 종료합니다.

그림 10: 분석 방지 모듈
Taskmgr, ProcessHacker, ProcExp 등의 프로세스 목록 중에 실행 중에 감지되는 경우 해당 프로세스가 종료됩니다.

그림 11: 종료 프로세스
AMSI 및 이벤트 추적 우회
AMSI/이벤트 추적을 우회하려면 해당 함수가 호출되는 방식을 기준으로 시스템 아키텍처를 식별해야 합니다.

그림 12: 바이패스
AMSI는 애플리케이션과 서비스가 맬웨어 방지 제품과 통합될 수 있도록 하는 Windows 맬웨어 방지 검사 인터페이스입니다.
AMSI와 통합된 구성 요소는 다음과 같습니다.
- 사용자 액세스 제어
- 파워 쉘
- Windows 스크립트 호스트
- JavaScript와 VBScript
- Office VBA 매크로
이를 우회하려면 amsi.dll의 amsiscanbuffer() 함수를 패치합니다.

그림 13: AMSI 바이패스
이것을 달성하기 위해
- 먼저 해당 함수인 amsiscanbuffer의 주소를 검색합니다.
- 그런 다음 NtProtectVirtualMemory()를 사용하여 페이지가 새로운 지침을 쓸 수 있도록 메모리 보호를 변경합니다.
- 또한 해당 새 바이트로 메모리를 패치합니다.
- x86_am_si_패치 = 0xB8, 0x57, 0x00, 0x07, 0x80, 0xc2, 0x18, 0x00;
- x64_am_si_패치 = 0xB8, 0x57, 0x00, 0x07, 0x80, 0xc3;

그림 14: 메모리 패치
이벤트 추적은 사용자 및 커널 수준 애플리케이션/드라이버를 추적하는 데 사용되는 메커니즘으로, Windows 운영 체제의 일부입니다. 보안 업체가 실행 중인 애플리케이션에서 비정상적인 동작을 식별하는 데 도움이 되는 중요한 기능입니다.
우회하기 위해 ntdll의 EtwEventWrite() 함수를 패치합니다. 이를 위한 프로세스는 위에서 언급한 amsi 우회와 동일합니다. 새로 작성된 바이트는 다음과 같습니다.
- x64_etw_패치 = 0x48, 0x33, 0xc0, 0xc3;
- x86_etw_patch = 0x33, 0xc0, 0xc2, 0x14, 0x00;

그림 15: 이벤트 추적 우회
고집
관리자 권한이 있으면 실행 항목을 생성합니다. 권한이 없으면 적절한 시간에 실행되도록 예약된 작업을 생성합니다.

그림 16: 레지스트리 항목

그림 17: 일정 작업
임시 bat 파일을 만들어 %temp% 위치에 자체를 복사한 후 나중에 bat 파일을 삭제하고 삭제된 파일을 실행하기 시작합니다.

그림 18: 설치
그런 다음 Pastebin 세부 정보가 null로 설정되어 있는지 확인하고, "jzx100.myddns.me" URL로 연결을 시도합니다. 그 후, 연결이 될 때까지 루프를 돌며 연결을 시도합니다.

그림 19: CNC 연결
연결이 성공하면 그림에서 볼 수 있듯이 사용자 이름, OS, 카메라, 설치된 바이러스 백신 등의 정보가 전송됩니다.

그림 20: CnC에 정보 보내기
분석 당시 해당 URL은 활성화되어 있지 않았습니다. 코드 분석을 통해 CnC에서 아래 명령을 수신하는 것으로 보이며, 패킷에서 수신된 플러그인을 호출하고 연결을 유지하는 것으로 보입니다.

그림 21: CnC 명령
결론 :
사용자는 크랙된 소프트웨어를 다운로드하지 않아야 합니다. 사용자 모르게 더 큰 피해를 입힐 수 있기 때문입니다. CnC로 민감한 데이터를 전송하는 스틸러는 공격 계획이나 이익 획득에 악용될 수 있습니다. 더욱이, 이러한 스틸러는 더 많은 페이로드를 다운로드하는 기능을 갖추고 있어 시스템에 랜섬웨어가 유포될 수 있습니다.
IOC의:
96B07F8951F4BDEB95856D9477071865
1528F443777A42B09AE19D7E6F5F508A
저자:
루마나 시디키



