
XLM 매크로 추출 및 난독 해제 (일명 Excel 4.0 매크로)
XLMMacroDeobfuscator는 난독화된 XLM 매크로(Excel 4.0 매크로라고도 함)를 디코딩하는 데 사용할 수 있습니다. 내부 XLM 에뮬레이터를 활용하여 매크로를 완전히 실행하지 않고 해석합니다.
xls, xlsm 및 xlsb 형식을 모두 지원합니다.
xlrd2, pyxlsb2 및 자체 파서를 사용하여 각각 xls, xlsb 및 xlsm 파일에서 셀 및 기타 정보를 추출합니다.
XLM 문법은 xlm-macro-lark.template에서도 확인할 수 있습니다.
pip install XLMMacroDeobfuscator --force
또는
pip install xlmmacrodeobfuscator[defusedxml] --force
pip install -U https://github.com/DissectMalware/XLMMacroDeobfuscator/archive/master.zip --force
Excel 문서에서 매크로 난독화 해제:
xlmdeobfuscator --file document.xlsm
Excel 문서에서 매크로만 추출(난독화 해제 없이):
xlmdeobfuscator --file document.xlsm -x
들여쓰기 없이 난독화 해제된 매크로만 가져오기:
xlmdeobfuscator --file document.xlsm --no-indent --output-formula-format "[[INT-FORMULA]]"
출력을 JSON 형식으로 내보내기:
xlmdeobfuscator --file document.xlsm --export-json result.json
샘플 JSON 출력을 보려면 이 링크를 확인하세요.
구성 파일 사용:
xlmdeobfuscator --file document.xlsm -c default.config
default.config 파일은 다음과 같은 유효한 JSON 파일이어야 합니다:
{
"no-indent": true,
"output-formula-format": "[[CELL-ADDR]] [[INT-FORMULA]]",
"non-interactive": true,
"output-level": 1
}
_ _______
|\ /|( \ ( )
( \ / )| ( | () () |
\ (_) / | | | || || |
) _ ( | | | |(_)| |
/ ( ) \ | | | | | |
( / \ )| (____/\| ) ( |
|/ \|(_______/|/ \|
______ _______ _______ ______ _______ _______ _______ _______ _________ _______ _______
( __ \ ( ____ \( ___ )( ___ \ ( ____ \|\ /|( ____ \( ____ \( ___ )\__ __/( ___ )( ____ )
| ( \ )| ( \/| ( ) || ( ) )| ( \/| ) ( || ( \/| ( \/| ( ) | ) ( | ( ) || ( )|
| | ) || (__ | | | || (__/ / | (__ | | | || (_____ | | | (___) | | | | | | || (____)|
| | | || __) | | | || __ ( | __) | | | |(_____ )| | | ___ | | | | | | || __)
| | ) || ( | | | || ( \ \ | ( | | | | ) || | | ( ) | | | | | | || (\ (
| (__/ )| (____/\| (___) || )___) )| ) | (___) |/\____) || (____/\| ) ( | | | | (___) || ) \ \__
(______/ (_______/(_______)|/ \___/ |/ (_______)\_______)(_______/|/ \| )_( (_______)|/ \__/
XLMMacroDeobfuscator(v0.2.0) - https://github.com/DissectMalware/XLMMacroDeobfuscator
오류: --file 누락
usage: deobfuscator.py [-h] [-c FILE_PATH] [-f FILE_PATH] [-n] [-x]
[--sort-formulas] [--defined-names] [-2]
[--with-ms-excel] [-s] [-d DAY]
[--output-formula-format OUTPUT_FORMULA_FORMAT]
[--extract-formula-format EXTRACT_FORMULA_FORMAT]
[--no-indent] [--silent] [--export-json FILE_PATH]
[--start-point CELL_ADDR] [-p PASSWORD]
[-o OUTPUT_LEVEL] [--timeout N]
선택적 인수:
-h, --help 이 도움말 메시지를 표시하고 종료
-c FILE_PATH, --config-file FILE_PATH
구성 파일 경로 지정(유효한 JSON 파일이어야 함)
-f FILE_PATH, --file FILE_PATH
XLSM 파일의 경로
-n, --noninteractive 대화형 셸 비활성화
-x, --extract-only 에뮬레이션 없이 셀만 추출
--sort-formulas 추출된 수식을 셀 주소를 기준으로 정렬(-x 필요)
--defined-names 정의된 모든 이름 추출
-2, --no-ms-excel [사용 중단됨] XLS 파일을 처리할 때 MS Excel을 사용하지 않음
--with-ms-excel XLS 파일을 처리할 때 MS Excel 사용
-s, --start-with-shell
입력 매크로를 해석하기 전에 XLM 셸 열기
-d DAY, --day DAY 월의 일 지정
--output-formula-format OUTPUT_FORMULA_FORMAT
출력 수식 형식 지정([[CELL-ADDR]], [[INT-FORMULA]], [[STATUS]])
--extract-formula-format EXTRACT_FORMULA_FORMAT
추출된 수식 형식 지정([[CELL-ADDR]], [[CELL-FORMULA]], [[CELL-VALUE]])
--no-indent 수식 앞에 들여쓰기를 표시하지 않음
--silent 출력을 표시하지 않음
--export-json FILE_PATH
출력을 JSON으로 내보내기
--start-point CELL_ADDR
특정 셀 주소에서 해석 시작
-p PASSWORD, --password PASSWORD
보호된 문서를 해독할 비밀번호
-o OUTPUT_LEVEL, --output-level OUTPUT_LEVEL
표시할 세부 수준 설정 (0: 모든 명령, 1: 점프 없는 명령, 2: 주요 명령, 3: 주요 명령의 문자열)
--timeout N N초 후 에뮬레이션 중지 (0: 중단 없음, N>0: N초 후 에뮬레이션 중지)
다음 예제는 Python 프로젝트에서 XLMMacroDeobfuscator를 사용하여 XLM 매크로의 난독화를 해제하는 방법을 보여줍니다:
from XLMMacroDeobfuscator.deobfuscator import process_file
result = process_file(file='path/to/an/excel/file',
noninteractive= True,
noindent= True,
output_formula_format='[[CELL-ADDR]], [[INT-FORMULA]]',
return_deobfuscated= True,
timeout= 30)
for record in result:
print(record)
XLMMacroDeobfuscator가 의존하는 Python 라이브러리 목록은 requirements.txt 파일을 참조하세요.
xlmdeobfuscator는 모든 운영 체제에서 실행하여 xls, xlsm, xlsb 파일의 매크로를 추출하고 난독화를 해제할 수 있습니다. MS Excel을 설치할 필요가 없습니다.
참고: MS Excel(Windows)을 사용하려면 pywin32 라이브러리를 설치하고 --with-ms-excel 스위치를 사용해야 합니다. --with-ms-excel이 사용되면 xlmdeobfuscator는 먼저 MS Excel로 xls 파일을 로드하려고 시도하고, 실패하면 xlrd2 라이브러리를 사용합니다.
XLMMacroDeobfuscator는 다음 프로젝트에서 채택되었습니다:
프로젝트에 XLMMacroDeobfuscator를 포함시킨 경우 연락주시기 바랍니다.
버그를 발견하거나 개선 사항을 제안하려면 이슈 페이지에 새 이슈를 생성해 주세요.
프로젝트를 포크하고 풀 리퀘스트를 제출하여 자유롭게 기여해 주세요.
Twitter에서 @DissectMalware로 직접 메시지를 보내 연락하실 수 있습니다.