KOROMOON

착한 사마리아인이 되고 싶습니다.

1/31/2023

윈도우 파이썬 패키징 프로그램에 대한 언패킹 및 파이썬 바이트코드(.pyc) 디컴파일

 

( 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://velog.io/@vdoring/Python-.pyc-%ED%8C%8C%EC%9D%BC%EC%9D%84-.py%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

https://jaehoney.tistory.com/72

https://www.fortinet.com/blog/threat-research/unpacking-python-executables-windows-linux




============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.


댓글 없음:

댓글 쓰기