Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SwishDbgExt — 사고 대응 및 디지털 포렌식 디버깅 확장 | Kitploit
도구/GitHubGitHub/magnetforensics/swishdbgext
Memory ForensicsReverse EngineeringDebuggersMalware AnalysisDigital ForensicsIncident Response
GitHubmagnetforensics/swishdbgext

SwishDbgExt

사고 대응 및 디지털 포렌식 디버깅 확장

저장소 보기
401977년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

#SwishDbgExt

SwishDbgExt는 Microsoft WinDbg 디버깅 확장 프로그램으로, Microsoft WinDbg에서 사용 가능한 명령어 세트를 확장하고 기존 명령어를 수정 및 개선합니다. 이 확장 프로그램은 Matt Suiche(@msuiche)가 개발했습니다. 추가 기능 요청, 기여 제안, 버그 신고는 [email protected]로 연락 주세요.

SwishDbgExt는 다양한 디버깅, 사고 대응 및 메모리 포렌식 명령어를 제공하여 커널 개발자, 문제 해결사 및 보안 전문가의 작업을 더 쉽게 만드는 것을 목표로 합니다. SwishDbgExt는 WinDbg 디버깅 확장 프로그램이므로 로컬 또는 원격 커널 디버깅 세션, Microsoft LiveKd에서 생성된 라이브 세션, 블루 스크린으로 인한 Microsoft 크래시 덤프 또는 Comae DumpIt 같은 하이브리드 유틸리티에서 사용할 수 있습니다.

2016 대회

자세한 내용은 https://blog.comae.io/comae-2016-contest-swishdbgext-features-3c9a63c62209#.tnt1b9usx 에서 확인하세요.

설치

WinDbg 확장 프로그램을 해당 (x86 또는 x64) WinDbg 폴더에 복사하거나 아래와 같이 !load 명령어를 사용하여 수동으로 로드할 수 있습니다. 대상 DLL의 전체 경로에는 공백이나 따옴표를 사용할 수 없습니다. !load X:\FullPath\SwishDbgExt.dll

###예제:

root@kitploit:~
kd> !load E:\projects\labs\SwishDbgExt\bin\x64\SwishDbgExt.dll;
       SwishDbgExt v0.7.0 (Nov  2 2016) - Incident Response & Digital Forensics Debugging Extension
       SwishDbgExt Copyright (C) 2016 Comae Technologies FZE - http://www.comae.io
       SwishDbgExt Copyright (C) 2014-2016 Matthieu Suiche (@msuiche)

       This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
       This is free software, and you are welcome to redistribute it
       under certain conditions; type `show c' for details.

WinDbg 템플릿을 더 DML 친화적인 템플릿으로 업데이트하려면 패키지에 포함된 windbg_template.reg 파일을 직접 가져올 수 있습니다.

TODO

  • 구조체 정의
  • 명령어 정의
  • 기능 대회 발표

명령어

!SwishDbgExt.help

사용 가능한 확장 명령어에 대한 정보를 표시합니다.

이 명령어는 인수를 지정하지 않으면 모든 명령어 목록을 보여주고, 기존 명령어의 이름을 인수로 지정하면 해당 명령어의 매개변수 목록을 보여줍니다.

!ms_callbacks

콜백 함수 표시

!ms_checkcodecave

사용된 코드 케이브 검색

!ms_consoles

콘솔 명령어 기록 표시

!ms_credentials

사용자 자격 증명 표시 (gentilwiki의 mimikatz 기반)

!ms_drivers

드라이버 목록 표시. !ms_drivers는 현재 로드된 드라이버 목록을 표시합니다. 이 예제에서는 이 커널 덤프에서 충돌 시점에 로드된 몇 가지 드라이버를 보여줍니다. 이 명령어로 드라이버에 대한 심층 IRP 정보도 볼 수 있습니다: 위 이미지에서 e1cexpress.sys의 IRP 내 드라이버별 I/O 스택 위치를 확인할 수 있습니다. 여기에는 IRP_MJ_CREATE 같은 함수 코드가 표시되며, 이는 대상 장치 객체를 열어 해당 장치가 I/O 작업에 사용 가능함을 나타냅니다.

!ms_dump

메모리 공간을 디스크에 덤프

!ms_exqueue

Ex 큐에 대기 중인 작업자 표시.

!exqueue는 Windows 8에서 제대로 작동하지 않으므로, 작동하는 버전을 구현해야 했습니다. 원래 명령어와 마찬가지로 대기 중인 작업 스레드를 표시합니다.

!ms_fixit

WinDbg에서 세그먼테이션 재설정 (Fix "16.kd>")

!ms_gdt

GDT 표시.

!ms_gdt는 전역 디스크립터 테이블을 표시합니다. x64에서는 모든 셀렉터가 플랫(0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF)입니다. 이 명령어는 GDT에 대한 의심스러운 후킹을 확인하는 데 매우 유용할 수 있습니다. x64에서 GDT 후킹을 시도하면 버그 체크가 호출되기 때문입니다. x64에서는 GDT 후킹이 금지되어 있습니다.

!ms_hivelist

레지스트리 하이브 목록 표시.

ms_hivelist는 레지스트리 하이브 목록을 표시합니다. 하이브(예: \Registry\Machine\Software)를 직접 열어 하위 키, 값 등을 볼 수 있습니다:

대체 텍스트

!ms_idt

IDT 표시.

!ms_idt는 인터럽트 디스크립터 테이블을 표시합니다. GDT와 매우 유사하게, x64 시스템에서 IDT가 후킹되면 버그 체크가 호출됩니다. 이는 Microsoft가 커널 모드 드라이버가 IDT에 대한 호출을 가로채 자체 처리를 추가하는 것을 방지하도록 (프로그래밍 방식으로) 구현했기 때문입니다. 따라서 위 이미지에서는 모든 항목에 'No'가 표시됩니다.

!ms_malscore

메모리 공간을 분석하고 악성코드 점수 지수(MSI)를 반환합니다 (Frank Boldewin의 작업 기반)

!ms_mbr

마스터 부트 레코드(MBR) 스캔

!ms_netstat

네트워크 정보 표시 (소켓, 연결 등)

!ms_object

객체 목록 표시

!ms_process

프로세스 목록 표시. !ms_process는 !process 및 !dml_proc의 개선된 버전입니다. 아래에서 확인할 수 있듯이 DML(Debugger Markup Language)을 명령어와 함께 사용하는 것이 좋은 점 중 하나입니다. 밑줄 친 모든 명령어는 실제로 명령어에 대한 링크입니다. 아래 예제에서는 /vads /scan 옵션의 출력을 볼 수 있습니다. VAD(가상 주소 디스크립터)를 스캔합니다. "Malware Score Index" 열이 있어 셸코드나 힙 스프레이를 탐지하는 데 유용할 수 있습니다. 아래 스크린샷에서는 힙 스프레이 사용으로 인해 여러 VAD에서 비정상적으로 높은 점수를 볼 수 있습니다. 점수를 클릭하면 스캔 알고리즘이 실행됩니다. 스캔 알고리즘은 Frank Boldewin의 OfficeMalScanner 유틸리티를 기반으로 합니다. 그리고 셸코드의 위치에 대한 정보를 반환합니다: /scan 옵션은 내보내기 함수에 사용하여 EAT(Export Address Table)가 패치되었는지 또는 함수 프롤로그가 수정되었는지 확인할 수도 있습니다.

SSDT(!ms_ssdt)에 대해서도 유사한 테스트가 가능합니다.

!ms_readkcb

키 제어 블록 읽기

!ms_readknode

키 노드 읽기. !reg WinDbg 명령어는 버그로 인해 오랫동안 불편했습니다. 따라서 SwishDbgExt에는 레지스트리 데이터에 최대한 간단하게 접근할 수 있도록 자체 레지스트리 탐색기 함수가 있습니다.

!ms_readkvalue

키 값 읽기

!ms_scanndishook

의심스러운 NDIS 후크 스캔 및 표시

!ms_services

서비스 목록 표시

!ms_ssdt

서비스 디스크립터 테이블(SDT) 함수 표시. !ms_ssdt는 시스템 서비스 디스패치 테이블을 표시합니다. 이 명령어는 DKOM(Direct Kernel Object Manipulation)을 통한 의심스러운 루트킷 후크 조사에 매우 유용합니다. nt!NtEnumerateKey 같은 낮은 수준의 루틴이 후킹된 것을 발견하면, 이는 루트킷 감염 가능성을 분석하는 데 도움이 됩니다.

!ms_store

스토어 관리자(ReadyBoost) 관련 정보 표시.

이 명령어는 운영 체제에서 사용 중인 현재 ReadyBoost(USB 3.0 필요) 캐시를 나열하고, 스토어 관리자가 관리하는 메모리 페이지 로그를 표시합니다. 매개변수: /cache

!ms_timers

KTIMER 목록 표시.

!ms_timers는 KTIMER 구조를 표시합니다. 이 구조는 다양한 타이머 객체를 나타내고 포함하는 불투명 구조체입니다. 이 명령어는 어떤 드라이버가 어떤 타이머 객체를 생성했는지, 어떤 드라이버가 어떤 루틴을 호출했는지 등을 파악하는 데 도움이 될 수 있습니다.

!ms_vacbs

캐시된 VACB 목록 표시

!ms_verbose

상세 모드 켜기/끄기

!ms_lxss

다음은 Alex Ionescu가 발표한 연구를 기반으로 하며, https://github.com/ionescu007/lxss/ 에서 확인할 수 있습니다.

이 기능은 Windows 10+ 운영 체제에서 선택적 기능으로 제공되며, 다음 PowerShell 명령어로 설치할 수 있습니다:

root@kitploit:~
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Windows Subsystem for Linux에 대한 자세한 내용은 다음 링크를 참조하세요:

  • https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/
  • https://channel9.msdn.com/Blogs/Seth-Juarez/Windows-Subsystem-for-Linux-Architectural-Overview
  • https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
root@kitploit:~
	Windows Subsystem for Linux Overview.
	Instance 0xFFFFE704EEB8F010
	GUID: {E29032FD-35D3-4C53-AB68-6BCEBDA7176F}
	State:            (1) [STARTED]
	Creation Flags:   00000001
	GlobalData:       0xFFFFF802ED4138A0
	Root Handle:      80000834
	Temp Handle:      80000838
	Job Handle:       8000083c
	Token:            80000818
	Event Handle:     800008bc

	Map Paths (0):    0xFFFFE704EF437920
	VFS Context:      0xFFFFE704EEFC4710
	Memory Flags:     0x2

	Last PID:         35
	Thread Groups:    3
		Session 0xFFFFE704EDB79EC0
		Instance:         0xFFFFE704EEB8F010
		Console inode:    0x0
		Foreground PID:   -1
			Process Group 0xFFFFE704EDB79AE0
			Instance:      0xFFFFE704EEB8F010
			Session:       0xFFFFE704EDB79EC0
				Thread Group 0xFFFFE704EF4F8000
				Binary Path:           /init
				Thread(s):             1
				Owner Process Group:   0xFFFFE704EDB79AE0
				Flags:                 0x00000000
				Main Thread:           0xFFFFE704EF5CC010
				Arguments (006 bytes): 0x00007FFFC081D6E0
					Process 0xFFFFE704EF2F1D70
					Instance:            0xFFFFE704EEB8F010
					NT Process Object:   0xFFFFAE05E84EF800
					NT Process Handle:   0xFFFFFFFF80000F58
					VDSO Address:        0x00007FFFC0849000
					Stack Address:       0x00007FFFC001E000
		Session 0xFFFFE704EF5DB830
		Instance:         0xFFFFE704EEB8F010
		Console inode:    0xFFFFE704EF32D7A0
		Foreground PID:   2
			Process Group 0xFFFFE704EF5EF970
			Instance:      0xFFFFE704EEB8F010
			Session:       0xFFFFE704EF5DB830
				Thread Group 0xFFFFE704EF5EE000
				Binary Path:           /bin/bash
				Thread(s):             1
				Owner Process Group:   0xFFFFE704EF5EF970
				Flags:                 0x0000000C
				Main Thread:           0xFFFFE704EF5F8010
				Arguments (010 bytes): 0x00007FFFDF34E418
					Process 0xFFFFE704EDEF6EC0
					Instance:            0xFFFFE704EEB8F010
					NT Process Object:   0xFFFFAE05E84E6800
					NT Process Handle:   0xFFFFFFFF80000D9C
					VDSO Address:        0x00007FFFDF883000
					Stack Address:       0x00007FFFDEB4F000
		Session 0xFFFFE704EF0A8ED0
		Instance:         0xFFFFE704EEB8F010
		Console inode:    0xFFFFE704EF06B9C0
		Foreground PID:   19
			Process Group 0xFFFFE704F059CBC0
			Instance:      0xFFFFE704EEB8F010
			Session:       0xFFFFE704EF0A8ED0
				Thread Group 0xFFFFE704EDE51000
				Binary Path:           /bin/bash
				Thread(s):             1
				Owner Process Group:   0xFFFFE704F059CBC0
				Flags:                 0x0000000C
				Main Thread:           0xFFFFE704EDC78090
				Arguments (010 bytes): 0x00007FFFF78CFB78
					Process 0xFFFFE704F06389B0
					Instance:            0xFFFFE704EEB8F010
					NT Process Object:   0xFFFFAE05E618D800
					NT Process Handle:   0xFFFFFFFF80001650
					VDSO Address:        0x00007FFFF7C99000
					Stack Address:       0x00007FFFF70D0000

!ms_yarascan

Yara 규칙으로 프로세스 메모리 스캔.

프로세스 메모리 스캔.

root@kitploit:~
!ms_yarascan /pid 0x228 /yarafile /yarafile C:\Rules.yar

모든 프로세스 메모리 스캔.

root@kitploit:~
!for_each_process "r? @$t0 = (nt!_EPROCESS *) @#Process; .process /r /p @$t0; !ms_yarascan /pid @@C++(@$t0->UniqueProcessId) /yarafile C:\\Rules.yar"

클래스

PEFile

MsPEImageFile은 Windows 바이너리(PE)에서 사용하는 기본 공통 정보를 포함하며, 다음 세 가지 클래스로 파생됩니다:

  • MsProcessObject
  • MsDllObject
  • MsDriverObject
도구 다운로드