
NTFS용 포렌식 도구 (parser, mft, bitlocker, 삭제된 파일)
NTFSTool은 NTFS 볼륨에 초점을 맞춘 포렌식 도구입니다. 파티션 정보(MBR, 파티션 테이블, VBR) 읽기를 지원할 뿐만 아니라 마스터 파일 테이블, Bitlocker 암호화 볼륨, EFS 암호화 파일, USN 저널 등에 대한 정보도 제공합니다.
최신 바이너리는 AppVeyor에서 다운로드하거나 GitHub artefacts를 확인하세요.
아래에서 기능에 대한 몇 가지 예시를 확인하세요!
deepwiki에서 제공하는 대체 문서는 여기에서 확인할 수 있습니다 : https://deepwiki.com/thewhiteninja/ntfstool/
NTFSTool은 마스터 부트 레코드, 볼륨 부트 레코드, 파티션 테이블 및 $MFT 파일 레코드의 전체 구조를 표시합니다. 또한 모든 파일($MFT 또는 SAM 포함)을 덤프하거나, USN 저널, LogFile 및 대체 데이터 스트림(ADS)을 포함한 스트림을 구문 분석 및 분석할 수 있습니다. $MFT는 Zone.Identifier 구문 분석과 함께 csv 또는 json으로 덤프하여 다운로드한 파일을 신속하게 식별할 수 있습니다. 삭제 취소 명령은 "사용 중이 아님"으로 표시된 파일 레코드를 검색하여 파일(또는 이미 덮어쓰여진 경우 파일의 일부)을 복구할 수 있습니다. 이미지 파일, 라이브 디스크 또는 VeraCrypt 및 TrueCrypt와 같은 가상에서 입력을 지원하며, OSFMount와 같은 도구를 사용하여 디스크 이미지를 마운트할 수도 있습니다. 희소 파일 및 압축 파일(lznt1, xpress)도 지원됩니다.
Bitlocker 암호화 파티션의 경우 FVE 레코드를 표시하고, 비밀번호와 키(bek, 비밀번호, 복구 키)를 확인하며, VMK 및 FVEK를 추출할 수 있습니다. GPU 기반 크래킹이 더 효과적이므로 무차별 대입 기능은 없지만(Bitcracker 및 Hashcat 참조), 이러한 도구를 위한 해시를 얻을 수 있습니다.
마스터 키, 개인 키 및 인증서는 필요한 입력(SID, 비밀번호)을 사용하여 나열, 표시 및 복호화할 수 있습니다. 개인 키가 포함된 인증서는 백업 명령을 사용하여 내보낼 수 있습니다.
백업을 다른 컴퓨터에 다시 가져와서 암호화된 파일을 다시 읽을 수 있습니다!
또는 efs.decrypt 명령을 사용하여 백업된 키로 파일을 복호화할 수 있습니다.
자세한 내용은 Mimikatz Wiki를 참조하세요.
USN 저널 레코드는 사용자 정의 규칙을 사용하여 분석할 수 있으며, 의심스러운 프로그램 및 작업을 감지할 수 있을 뿐만 아니라 저널 개요(파일 삭제 비율, 생성 비율 등)를 확인할 수 있습니다.
기본 규칙: Rules/default.json``` { "id": "lsass-dump", "description": "Dumped LSASS.exe process.", "severity": "high", "rule": { "filename": "lsass(\.(dmp|dump))?" } }
여기서 실행 예제를 확인하세요: [usn.analyze](#usn-analyze)
### 셸
제한된 명령(exit, cd, ls, cat, pwd, cp, quit, rec)이 있는 셸이 제공됩니다.
`rec` 명령은 MFT 레코드 세부 정보를 표시합니다.
## 도움말 및 예제
도움말 명령은 각 명령에 대한 설명과 예제를 표시합니다.
옵션은 10진수 또는 "0x" 접두사가 있는 16진수로 입력할 수 있습니다(예: inode).
ntfstool help [command]
| 명령 | 설명 |
| --- | --- |
| [info](#info) | 모든 디스크와 볼륨에 대한 정보 표시 |
| [mbr](#mbr) | 디스크의 MBR 구조, 코드 및 파티션 표시 |
| [gpt](#gpt) | 디스크의 GPT 구조, 코드 및 파티션 표시 |
| [vbr](#vbr) | 지정된 볼륨(ntfs, fat32, fat1x, bitlocker 지원)의 VBR 구조 및 코드 표시 |
| [extract](#extract) | 볼륨에서 파일 추출. |
| [image](#image) | 디스크 또는 볼륨의 이미지 파일 생성. |
| [mft.dump](#mft-dump) | 지정된 형식(csv, json, raw)으로 $MFT 파일 덤프. |
| [mft.record](#mft-record) | 지정된 MFT inode의 FILE 레코드 세부 정보 표시. 거의 모든 속성 유형 지원 |
| [mft.btree](#mft-btree) | inode에 대한 VCN 콘텐츠 및 Btree 인덱스 표시 |
| [bitlocker.info](#bitlocker-info) | 모든 VMK에 대한 정보 및 해시($bitlocker$) 표시. 암호 또는 복구 키 테스트. |
| [bitlocker.decrypt](#bitlocker-decrypt) | 암호, 복구 키 또는 bek을 사용하여 볼륨을 파일로 복호화. |
| [bitlocker.fve](#bitlocker-fve) | 지정된 FVE 블록에 대한 정보 표시. |
| [efs.backup](#efs-backup) | EFS 키를 PKCS12(pfx) 형식으로 내보내기. |
| [efs.decrypt](#efs-decrypt) | PKCS12(pfx) 형식의 키를 사용하여 EFS 암호화 파일 복호화. |
| [efs.certificate](#efs-certificate) | 시스템 인증서(SystemCertificates/My/Certificates) 나열, 표시 및 내보내기. |
| [efs.key](#efs-key) | 개인 키(Crypto/RSA) 나열, 표시, 복호화 및 내보내기. |
| [efs.masterkey](#efs-masterkey) | 마스터 키(Protect) 나열, 표시 및 복호화. |
| [reparse](#reparse) | \$Extend\$Reparse에서 재분석 지점 파싱 및 표시. |
| [logfile.dump](#logfile-dump) | 지정된 형식(csv, json, raw)으로 $LogFile 파일 덤프. |
| [usn.analyze](#usn-analyze) | 지정된 규칙으로 $UsnJrnl 파일 분석. 출력: csv 또는 json. |
| [usn.dump](#usn-dump) | 지정된 형식(csv, json, raw)으로 $UsnJrnl 파일 덤프. |
| [shadow](#shadow) | 선택한 디스크 및 볼륨의 볼륨 섀도 스냅샷 나열. |
| [streams](#streams) | 대체 데이터 스트림 표시 |
| [undelete](#undelete) | 볼륨에서 삭제된 파일 검색 및 추출. |
| [shell](#shell-1) | 제한된 Unix 계열 셸 시작 |
| [smart](#smart) | S.M.A.R.T 데이터 표시 |
## 제한 사항
- 지원되지 않는 사례가 있습니다. 작업 중입니다.
- 문서 없음 :no_mouth:.
이슈를 열거나 새 기능을 요청하세요!
## 빌드
- [Visual Studio 2022](https://visualstudio.microsoft.com/fr/vs/) 설치
- 여기에 설명된 대로 vcpkg(필수 타사 라이브러리용) 설치: [vcpkg#getting-started](https://github.com/microsoft/vcpkg#getting-started)
```
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
```
- VisualStudio 환경에 통합:
```
vcpkg integrate install
```
빌드 시 VisualStudio가 `vcpkg.json` 파일을 감지하고 필요한 패키지를 자동으로 설치합니다.
타사 라이브러리:
- [openssl](https://www.openssl.org/): OpenSSL은 TLS(전송 계층 보안) 및 SSL(Secure Sockets Layer) 프로토콜을 위한 강력하고 상업용 등급의 완전한 기능을 갖춘 툴킷을 제공하는 오픈 소스 프로젝트입니다.
- [nlohmann-json](https://github.com/nlohmann/json): Modern C++용 JSON
- [distorm](https://github.com/gdabah/distorm): x86/AMD64를 위한 강력한 디스어셈블러 라이브러리
- [cppcoro](https://github.com/lewissbaker/cppcoro): 코루틴 TS를 위한 C++ 코루틴 추상화 라이브러리.
- [re2](https://github.com/google/re2): RE2는 역추적 정규 표현식 엔진에 대한 빠르고 안전하며 스레드 친화적인 대안입니다.
## 예제
### Info
<table>
<tr><td>info</td></tr>
<tr><td>
+-------------------------------------------------------------------------------------+
| Id | Model | Type | Partition | Size |
+-------------------------------------------------------------------------------------+
| 0 | Samsung SSD 850 EVO 500GB | Fixed SSD | GPT | 500107862016 (465.76 GiBs) |
| 1 | ST2000DM001-1ER164 | Fixed HDD | GPT | 2000398934016 (1.82 TiB) |
| 2 | 15EADS External | Fixed HDD | MBR | 1500301910016 (1.36 TiB) |
| 3 | osfdisk | Fixed HDD | MBR | 536870912 (512.00 MiBs) |
+-------------------------------------------------------------------------------------+
</td></tr>
<tr><td>info disk=3</td></tr>
<tr><td>
Model : osfdisk
Version : 1
Serial :
Media Type : Fixed HDD
Size : 536870912 (512.00 MiBs)
Geometry : 512 bytes * 63 sectors * 255 tracks * 65 cylinders
Volume : MBR