( 1 ) 파이썬 패키징 프로그램
< Exeinfo PE 툴로 확인한 파이썬 패키징 프로그램 정보 >
윈도우 파이썬 패키징 프로그램을 악성여부 분석하다가 파이썬 소스코드까지 디컴파일하는게 결코 쉽지 않음.
파이썬 패키징 프로그램은 파이썬으로 짠 코드가 운영 체제에서 독립적으로 실행할 수 있는 실행 파일로 일반 악성코드와는 다르게 보안이나 난독화가 되어 있지 않음.
보통 파이썬 패키징 프로그램을 만들 때 Pyinstaller 컴파일러로 만듬.
Pyinstaller 홈페이지 링크 : https://pyinstaller.org/
Pyinstaller 컴파일러로 사용할 경우 아래와 같이 수행함.
1. 모든 .py 소스 파일을 파이썬 바이트코드(.pyc 파일)로 컴파일함.
2. 모든 Pytion 컴파일 소스 코드 및 Python 종속성을 수집함.
3. 운영 체제 종속 Python 인터프리터(ex. Windows 일 경우 python37.dll 이거나 Linux 일 경우 libpython3.9.so.1.0)를 포함함.
4. 먼저 이러한 파일을 디스크나 메모리에 압축 해제한 다음 포함된 인터프리터를 사용하여 원래 Python 코드를 실행하는 스텁(Stub)과 함께 이 모든 것으로 번들(Bundles)로 묶음.
악성여부 분석하고자 할 경우 파이썬 패키징 프로그램을 언패킹 시킨 후 그 안에 파이썬 바이트코드(.pyc 파일)를 디컴파일 시키면 됨.
그리고 파이썬 소스코드에 악의적인 코드가 있는지 여부를 조사하면 됨.
( 2 ) 파이썬 패키징 프로그램 언패킹
Pyinstaller 컴파일러로 제작된 파이썬 패키지 프로그램일 경우 PyInstaller Extractor 를 이용하여 파일 내용을 추출함.
PyInstaller 란 Python 어플리케이션과 모든 종속성 파일을 단일 실행 파일로 만드는 라이브러리임.
PyInstaller Extractor 는 Pyinstaller 에서 생성한 실행 파일의 내용을 추출하는 Python 스크립트이며 다운로드 링크와 명령어 사용예는 아래와 같음.
다운로드 링크 : https://github.com/extremecoders-re/pyinstxtractor
명령어 사용예 : python pyinstxtractor.py test.exe
( 3 ) 파이썬 바이트코드(.pyc 파일) 디컴파일
위 언패킹 과정은 어렵지 않으나 파이썬 바이트코드(.pyc 파일) 디컴파일할 경우 파이썬 버전별로 디컴파일 도구가 다름.
언패킹 후 파일 내용에 python 관련 dll 버전을 확인하면 됨. (ex. python310.dll)
파이썬 3.9 미만 버전일 경우 uncompyle6 도구 사용하며 다운로드 링크와 명령어 사용예는 아래와 같음.
실행 파일로 된 링크로 바로 사용이 가능함.
다운로드 링크 : https://github.com/extremecoders-re/uncompyle6-builds/releases
명령어 사용예 : uncompyle6.exe -o . file_to_decompile.pyc
파이썬 3.9 이상 버전일 경우 Decompyle++ (다른 명칭으로 pycdc) 도구 사용하며 다운로드 링크와 명령어 사용예는 아래와 같음.
https://github.com/zrax/pycdc 홈페이지 가보면 소스코드로 되어 있어 실행 파일로 컴파일되어 있지 않음. ㅠㅠ
직접 컴파일 해서 내 구글 드라이브에 올려놓음. 참고로 암호도 설정되어 있음. (암호 : koromoon1004)
다운로드 링크 : https://drive.google.com/file/d/1ffS8T-KfIP0HB7AQfH-RDtNrNMgOrMOg/view?usp=share_link
명령어 사용예 : pycdc.exe [PATH TO PYC FILE]
참고 사이트 :
https://jaehoney.tistory.com/72
https://www.fortinet.com/blog/threat-research/unpacking-python-executables-windows-linux
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기