COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
MITRE T1036.001 Invalid Code Signature 기법의 동작 원리와 MetaTwin, SigFlip 도구를 활용한 실제 공격 사례를 분석합니다. 3CX 공급망 공격부터 방어 전략까지 완전 해부.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
T1036.001 Invalid Code Signature는 정상 소프트웨어의 디지털 서명 정보를 복사하여 악성 파일을 위장하는 기법이다. MITRE ATT&CK 프레임워크에 따르면 2개 APT 그룹이 이 기법을 사용한다.
2017년 ShadowPad 공급망 공격부터 2023년 3CX 공급망 침해까지 수많은 보안 사고에서 핵심 역할을 했다.
Windows 95 시절에는 인터넷에서 다운받은 실행 파일의 출처를 확인할 방법이 없었다. "Microsoft Update.exe"나 "Adobe Flash Installer.exe" 같은 이름으로 악성 파일을 만들어도 구별이 불가능했다.
Microsoft는 Windows 2000부터 Authenticode 코드 서명 시스템을 도입했다. 개발자가 CA에서 발급받은 인증서로 서명하면 파일의 출처와 무결성을 확인할 수 있다.
하지만 공격자들은 이 메커니즘도 우회했다. 정상 파일의 서명 정보를 복사해서 악성 파일에 붙이는 T1036.001 기법이다.
T1036.001 Invalid Code Signature는 정상 파일의 메타데이터와 서명 정보를 복사하여 악성 파일에 붙이는 방어 회피 기법이다.
MITRE ATT&CK 공식 정의:
Adversaries may attempt to mimic features of valid code signatures to increase the chance of deceiving a user, analyst, or tool. Code signing provides a level of authenticity on a binary from the developer and a guarantee that the binary has not been tampered with. Adversaries can copy the metadata and signature information from a signed program, then use it as a template for an unsigned program. — MITRE ATT&CK T1036.001
핵심은 서명 대체가 아닌 서명 사칭이다. 유효한 서명을 전송하는 것이 아니라 겉모습만 비슷하게 만든다.
| 용어 | 설명 |
|---|---|
| Valid Code Signature | 목적: 소프트웨어 무결성 보장 / 유효성: 암호학적 검증 통과 / 탐지 방법: 디지털 서명 검증 API |
| Invalid Code Signature | 목적: 사용자/도구 기만 / 유효성: 암호학적 검증 실패 / 탐지 방법: 서명 유효성 검사 |
| Code Signing Certificate | 목적: 개발자 신원 증명 / 유효성: CA에서 발급한 유효 인증서 / 탐지 방법: 인증서 체인 검증 |
| Self-Signed Certificate | 목적: 개발자가 직접 생성 / 유효성: 신뢰할 수 없는 루트 / 탐지 방법: 신뢰 체인 부재 |
| Expired Certificate | 목적: 만료된 인증서로 서명 / 유효성: 시간 기준 무효 / 탐지 방법: 유효 기간 검사 |
Microsoft, Adobe, Google 같은 대형 소프트웨어 회사의 실행 파일을 타겟으로 선택한다.
# 정상 파일의 서명 정보 확인
signtool verify /v /pa explorer.exe
# 출력 예시:
# Signing Certificate: Microsoft Corporation
# Issued by: Microsoft Code Signing PCA
# Valid from: 01/01/2023 to 01/01/2024
ResourceHacker로 정상 파일의 버전 정보, 아이콘, 문자열 등을 추출한다.
# ResourceHacker로 리소스 추출
ResourceHacker.exe -open explorer.exe -save resources.rc -action extract
추출 대상:
SigThief로 디지털 서명 정보를 추출한다.
# SigThief 사용 예시
python sigthief.py -i explorer.exe -o signature.bin
# 추출된 서명 정보 확인
python sigthief.py -t signature.bin
추출 항목:
MetaTwin이 모든 과정을 자동화한다.
# MetaTwin으로 메타데이터와 서명 이식
python metatwin.py -t malware.exe -s explorer.exe -o disguised_malware.exe
MetaTwin의 내부 동작:
완성된 위조 파일의 특성이다.
# 위조된 파일의 속성 확인
Get-AuthenticodeSignature disguised_malware.exe
# 결과:
# Status: Invalid (서명 검증 실패)
# StatusMessage: The signature is not valid
# Path: disguised_malware.exe
# SignerCertificate: CN=Microsoft Corporation
암호학적 검증은 실패한다. 하지만 겉으로 보이는 서명 정보는 정상 파일과 동일하다.
2023년 3CX 공급망 공격에서 사용된 SigFlip은 더 정교한 방식을 사용한다.
# SigFlip으로 서명을 유지하면서 페이로드 삽입
SigFlip.exe -i legitimate_app.exe -s shellcode.bin -o trojanized_app.exe
SigFlip의 특별한 점:
T1036.001이 선호되는 이유는 인간의 심리적 편향과 보안 도구의 한계를 동시에 악용할 수 있기 때문이다.
1. 보안 도구의 오판 유도
많은 안티바이러스 제품이 서명 정보만 확인하고 실제 검증은 생략한다.
# 잘못된 검증 로직 예시
def is_trusted_file(filepath):
signature_info = get_signature_info(filepath)
if signature_info.company_name == "Microsoft Corporation":
return True # 실제 서명 검증 없이 신뢰
return False
MetaTwin 연구에 따르면 메타데이터만 추가해도 안티바이러스 탐지율이 76%에서 58%로 감소한다. 서명 정보까지 추가하면 탐지율이 추가로 하락한다.
2. 사용자 신뢰도 악용
일반 사용자는 시각적 단서에 의존한다. Windows 속성창의 "디지털 서명" 탭, 파일 아이콘과 설명, "이 게시자를 신뢰합니까?" 대화상자가 모두 위조 가능하다.
# 사용자가 보는 정보 (위조 가능)
File: disguised_malware.exe
Publisher: Microsoft Corporation
Description: Windows Explorer
3CX Supply Chain Attack (2023년)
UNC4736 그룹이 3CX Desktop 앱을 트로이목마화했다. SigFlip으로 정상 서명을 유지한 채 악성 페이로드를 삽입했다.
# 공격 전 정상 파일
3CXDesktopApp.exe
- Valid Signature: 3CX Ltd
- File Hash: ABC123...
# 공격 후 트로이목마 파일
3CXDesktopApp.exe
- Valid Signature: 3CX Ltd (동일!)
- File Hash: DEF456... (변경됨)
- Hidden Payload: 악성 DLL 로더
전 세계 600,000개 이상 조직에 배포됐다.
ShadowPad 공급망 공격 (2017년)
CCleaner 5.33 버전에 백도어를 삽입했다. 정상 Piriform/Avast 서명 정보를 복사하여 사용자들이 공식 업데이트로 인식하게 만들었다. 30일간 탐지되지 않았다.
1. 서명 유효성 강제 검증
# PowerShell로 실제 서명 검증
$signature = Get-AuthenticodeSignature "suspicious_file.exe"
if ($signature.Status -ne "Valid") {
Write-Host "Invalid signature detected!" -ForegroundColor Red
# 파일 실행 차단
}
2. 인증서 체인 분석
# OpenSSL로 인증서 체인 검증
openssl pkcs7 -inform DER -in signature.p7s -print_certs -text
검증 요소:
3. 행동 기반 탐지
서명만으로 판단하지 말고 실제 동작을 모니터링한다.
# YARA 룰 예시
rule Suspicious_Signed_File {
condition:
has_signature and
(network_connection or registry_modification or file_creation)
}
4. 화이트리스트 기반 실행 제어
# AppLocker 정책으로 서명 검증 강제
New-AppLockerPolicy -RuleType Publisher -User Everyone -Action Allow
-Condition "O=Microsoft Corporation,CN=Microsoft Corporation"
이중 검증 체계: 서명 유효성 + 파일 해시 검증, 알려진 악성 서명 블랙리스트 운영
사용자 교육: "디지털 서명됨" ≠ "안전함" 인식 제고, 의심 파일은 VirusTotal에서 추가 검증
네트워크 레벨 차단: 알려진 C&C 서버 IP 차단, DNS 기반 악성 도메인 필터링
T1036.001은 디지털 서명 시스템의 신뢰성을 악용하는 방어 회피 기법이다. MetaTwin, SigFlip 같은 도구로 쉽게 시도할 수 있지만 암호학적 검증으로 탐지 가능하다.
이 기법은 T1036 위장 공격: 85개 APT 그룹이 정체를 숨기는 12가지 기법의 하위 기법이다. 다른 위장 기법들과 함께 사용될 때 더 강력해진다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.