꿈을꾸는 파랑새

오늘은 북한 해킹 단체인 Lazarus(라자루스) 에서 만든 악성코드인 RAT PyLangGhost RAT인 util.py에 대해 글을 적어보겠습니다. 이번 util.py로 PyLangGhost RAT 마무리하게 됩니다.
ファイル名: util.py
サイズ: 1 MB
MD5:159aea5f0a38c4d85723658879177175
SHA-1: 0984aa46d7e79992fd294cb09457fd4cb4fb5fcc
SHA-256: ef04a839f60911a5df2408aebd6d9af432229d95b4814132ee589f178005c72f

util.py 악성코드
util.py 악성코드

util.py 분석

tar.gz로 묶기 및 풀기 목적
1.com0715press(paths, compress_root=False)
메모리 버퍼(BytesIO)에 w:gz 모드로 tar.gz 생성
compress_root=True 면 arcname=os.path.basename(path)로 지정->입력이 디렉터리면 최상위 디렉터리 한 겹을 만들어 그 아래 구조를 포함
compress_root=False 면 arcname=None->원본 경로 전체(상대, 절대 포함)가 아카이브에 포함
2,valid0715relPath(path)
의도: 절대경로 및 상위 디렉터리 참조차단.
3,decom0715press(src, dst)
tar.getmembers() 를 돌아다닌 면서 확인을 하고 member.isdir()/member.isfile()만 처리
링크/기타 타입은 무시.
valid0715relPath(member.name)로 경로 점검
파일은 tar.extractfile(member).read()로 전부 메모리에 읽고 나서 기록.
기능:
메모리 내 보관: 로컬 파일과 디렉토리 목록을 gzip으로 압축하여 메모리 내 버퍼에 보관된 tar 아카이브로 압축
메모리 내 압축 해제: 메모리 내 gzip으로 압축된 tar 아카이브에서 콘텐츠를 지정된 로컬 디렉터리로 추출
경로 검증 및 정리:절대 경로나 디렉터리 탐색 시퀀스가 포함된 경로로 파일을 추출하는 것을 방지하는 검사를 통합하여 추출된 파일이 배치되는 위치에 대한 제어를 강화
파일 및 디렉토리 처리: 압축 해제 프로세스 중에 디렉토리 생성과 일반 파일 추출을 명시적으로 처리
해당 코드는 주로 메모리 내 작업을 사용하여 파일과 디렉토리를 gzip으로 압축된 tar 아카이브 형식으로 압축 및 압축 해제하는 기능을 담당을 하고 있습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band