1. 개요
Cython으로 작성된 악성코드를 운 좋게 수집했습니다. 분석해보겠습니다~!
1.1. Cython이란?
CPython 확장 모듈을 손쉽게 생성하도록 고안된 컴파일 언어입니다. 파이썬 문법을 기반으로 C/C++ 루틴 호출을 위한 외부 함수 인터페이스와 실행 속도 향상을 위한 정적형 지정 등이 추가된 형태를 하고 있습니다.
출처 : 위키백과 - Cython
2. 악성코드 정보
MD5 | 2672083D2050BD3AF383DECC32A7666B |
FileName | 3444.exe |
C2 | 154.38.109.230 (Hong Kong) |
3. 악성코드 흐름도
먼저 악성코드의 흐름은 아래 그림과 같습니다.
먼저, Cython을 로드해 정보 수집 등의 악성행위를 수행하고, 수집한 데이터를 암호화해 공격자의 C2서버로 전송합니다.
4. 상세 분석
4.1. Cython Load
Cython 악성코드는 exe 리소스 섹션에 UPX로 패킹되어 있습니다.
실행 시, 아래 그림처럼 VirtualAlloc 함수를 통해 할당된 메모리 공간에 악성 DLL 파일을 로드합니다.
이후, CreateThread 함수를 통해 Thread를 생성항 위 단계에서 로드한 악성 DLL의 코드 섹션으로 이동합니다.
생성된 쓰레드에 의해 실행된 코드는 config_read_env_vars 함수를 실행한다. 이 함수는 환경변수를 읽어 해당 프로그램의 설정 값을 읽습니다.
다음으로 Py_Initialize, PySys_SetArgvEx 함수를 실행하여 Python 인터프리터가 사용하는 시스템 인자 목록을 설정해 초기화 작업을 수행합니다.
실제 악성행위는 DLL(Cython)에서 수행되며, 3444.exe는 DLL(Cython_0_29_13)을 로드합니다.
위 과정와 같은 과정이 완료되면 Cython의 Python 인터프리터가 정상적으로 로드되게 됩니다.
4.2. 악성행위 수행
아래 그림을 보면 aaa.py라는 악성 스크립트가 존재하며, 이 스크립트가 Cython을 통해 실행 및 로드됩니다. 그 과정은 Line, C Line, FileName 인자 값을 설정하는 패턴으로 실행되는데, 여기서 line은 Python 코드의 줄 번호, cline은 변환된 C 코드의 줄 번호, filename은 해당 코드가 포함된 파일명을 의미합니다.
추가로, 일반적인 .py 파일은 쉽게 읽고 수정할 수 있지만, Cython은 Python 코드를 C 코드로 변환하고, 이를 다시 컴파일된 바이너리(예: .so, .pyd, .exe)로 만들게 됩니다. 이렇게 되면 원본 Python 소스 코드가 존재하지 않기 때문에 디컴파일을 해도 완전한 원본 코드로 복구하는 것이 매우 어렵습니다.
첫번째로 실행되는 함수는 “reg_init” 이며, 해당 함수에서는 레지스트리와 관련된 작업을 수행하는 기능을 가지고 있습니다.
RegOpenKeyExA 함수를 통하여 레지스트리의 핸들러를 획득하고 “Software\Microsoft\Windows\Cur rentVersion\Internet Settings” 서브키를 확인하여 여러 레지스트리 서브 키의 데이터를 확인합니다.
test_ip, m_post 함수에서는 정보를 수집 및 수집된 데이터를 암호화하여 C2서버에 데이터를 전송하는 역할을 수행합니다.
먼저, 피해자 PC에서 IP, 호스트 정보 등의 정보를 수집합니다.
이후, 수집한 데이터를 암호화하기 위해 랜덤 함수를 통해 0x3A 만큼의 난수를 생성한다. 이 값을 시드(Seed) 값으로 사용하여 수집된 데이터 암호화를 수행합니다.
데이터 수집 및 암호화 과정 다음으로는 윈도우 소켓을 통하여 공격자 C2 서버(154.38.109.230/443)에 연결을 수행합니다.
C2 연결 이후, POST 메소드를 통하여 수집된 데이터를 전송합니다.
최종적으로 공격자의 C2 서버에 전송되는 네트워크 패킷은 아래 그림과 같습니다.
하지만, C2로부터 추가 응답이 없어, 커넥션이 끊기고 1분마다 “m_post” 함수를 실행하여 커넥션(Connect, Disconnect, Reconnect)이 연속적으로 반복됩니다.
5. 결론
해당 악성코드는 리소스 섹션에 UPX로 패킹된 악성 Cython DLL 파일이 숨겨져 있으며, 실행 시 DLL 파일을 메모리에 로드해 악성 행위를 수행합니다.
최종적으로, 피해자 PC에서 IP, 호스트 이름 등의 정보를 수집해 공격자의 C2서버(154.38.109.230/443)로 전송하고 공격자의 명령을 통해 추가 악성행위를 수행하는 BotNet 유형의 악성코드입니다.
출처
나(xenen)
'악성코드 분석 (Malware Analysis) > 기타 (etc)' 카테고리의 다른 글
[악성코드 분석] 게임핵을 받으면 악성코드까지 같이? Gh0st RAT (0) | 2025.02.17 |
---|