Communitygithub.com

dd 및 dcfldd를 이용한 디스크 이미지 획득

Linux 포렌식 워크스테이션에서 dd 또는 dcfldd를 사용하여 포렌식하게 건전한 비트 단위(bit-for-bit) 디스크 이미지를 생성하고, 이미징 과정 중 해시 검증(MD5/SHA)을 통해 증거 무결성을 유지합니다. 의심스러운 드라이브, USB 장치, 메모리 카드 이미징, 침해 대응 시 휘발성 디스크 증거 보존, 또는 파괴 분석 전 법적 절차를 위한 검증된 사본 생산에 사용합니다.

dd 및 dcfldd를 이용한 디스크 이미지 획득란 무엇인가요?

이 스킬은 Linux 포렌식 워크스테이션에서 `dd` 또는 `dcfldd`를 사용하여 포렌식 디스크 이미징을 수행하는 방법을 상세히 안내합니다. `dd`는 모든 Linux 시스템에 기본 내장된 유틸리티지만 포렌식 목적을 위해 `conv=noerror,sync` 등의 옵션을 지정해야 합니다. 반면 `dcfldd`는 DoD 포렌식 연구소에서 개발된 개선판으로, 이미징 과정에서 실시간 해시 계산(SHA-256, MD5), 분할 이미징, 검증 패스 등의 기능을 내장하여 증거 무결성을 훨씬 강력하게 보장합니다. 이 스킬은 물리적 저장 장치(HDD, SSD, USB, 메모리 카드)를 안전하게 이미징하는 전체 워크플로우를 제공합니다. 하드웨어 또는 소프트웨어 쓰기 차단기(write-blocker) 설정부터 출처 드라이브 식별 및 사전 해싱, 이미징 실행, 검증, 최종 분석 보고서 생성까지 모든 단계를 다룹니다. 특히 `dcfldd`의 해시 윈도우 기능, 분할 출력, 검증 로그 기능을 활용하여 법정 제출 가능한(forensically sound) 이미지를 얻는 방법에 초점을 맞추며, 원격 네트워크 이미징 및 고장 드라이브 이미징 같은 고급 시나리오도 포함합니다. 검증된 해시 일치, 체계적인 문서화, 체인 오브 커스터디(chain of custody) 유지가 강조됩니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/acquiring-disk-image-with-dd-and-dcfldd

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

dd 및 dcfldd를 이용한 디스크 이미지 획득하기

사용 시기

  • 수사 목적으로 의심스러운 드라이브의 포렌식 사본을 만들어야 할 때
  • 침해 대응 중 휘발성 디스크 증거를 분석 전에 보존해야 할 때
  • 법 집행 기관이나 법적 절차에서 검증된 비트 단위 사본이 필요할 때
  • 저장 장치에 대해 파괴적 분석을 수행하기 전
  • 물리적 드라이브, USB 장치, 메모리 카드에서 이미지를 획득할 때

전제 조건

  • Linux 기반 포렌식 워크스테이션 (SIFT, Kali 또는 모든 Linux 배포판)
  • dd (모든 Linux 시스템에 기본 설치) 또는 dcfldd (향상된 포렌식 버전)
  • 하드웨어 쓰기 차단기(write-blocker) 또는 소프트웨어 쓰기 차단 구성
  • 충분한 저장 공간이 있는 대상 드라이브 (출처보다 큼)
  • 포렌식 워크스테이션의 root/sudo 권한
  • SHA-256 또는 MD5 해싱 유틸리티 (sha256sum, md5sum)

워크플로우

1단계: 대상 장치 식별 및 쓰기 보호 활성화

# 연결된 모든 블록 장치를 나열하여 대상 식별
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL

# 장치 세부 정보 확인
fdisk -l /dev/sdb

# 소프트웨어 쓰기 차단 활성화 (하드웨어 블로커가 없는 경우)
blockdev --setro /dev/sdb

# 읽기 전용 상태 확인
blockdev --getro /dev/sdb
# 출력: 1 (읽기 전용 활성화됨)

# 또는 지속적인 쓰기 차단을 위해 udev 규칙 사용
echo 'SUBSYSTEM=="block", ATTRS{serial}=="WD-WCAV5H861234", ATTR{ro}="1"' > /etc/udev/rules.d/99-writeblock.rules
udevadm control --reload-rules

2단계: 대상 준비 및 출처 문서화

# 사례 디렉토리 구조 생성
mkdir -p /cases/case-2024-001/{images,hashes,logs,notes}

# 출처 드라이브 정보 문서화
hdparm -I /dev/sdb > /cases/case-2024-001/notes/source_drive_info.txt

# 시리얼 번호와 모델 기록
smartctl -i /dev/sdb >> /cases/case-2024-001/notes/source_drive_info.txt

# 출처 장치 사전 해싱
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_before.txt

3단계: dd를 사용하여 이미지 획득

# 진행 상황 및 오류 처리를 포함한 기본 dd 획득
dd if=/dev/sdb of=/cases/case-2024-001/images/evidence.dd \
   bs=4096 \
   conv=noerror,sync \
   status=progress 2>&1 | tee /cases/case-2024-001/logs/dd_acquisition.log

# 공간 절약을 위한 압축 이미지
dd if=/dev/sdb bs=4096 conv=noerror,sync status=progress | \
   gzip -c > /cases/case-2024-001/images/evidence.dd.gz

# 특정 크기만큼만 획득하는 부분 이미징
dd if=/dev/sdb of=/cases/case-2024-001/images/first_1gb.dd \
   bs=1M count=1024 status=progress

4단계: dcfldd를 사용한 이미지 획득 (권장 포렌식 방법)

# dcfldd가 없으면 설치
apt-get install dcfldd

# 내장 해싱 및 분할 출력 기능으로 이미지 획득
dcfldd if=/dev/sdb \
   of=/cases/case-2024-001/images/evidence.dd \
   hash=sha256,md5 \
   hashwindow=1G \
   hashlog=/cases/case-2024-001/hashes/acquisition_hashes.txt \
   bs=4096 \
   conv=noerror,sync \
   errlog=/cases/case-2024-001/logs/dcfldd_errors.log

# 대용량 이미지를 관리 가능한 세그먼트로 분할
dcfldd if=/dev/sdb \
   of=/cases/case-2024-001/images/evidence.dd \
   hash=sha256 \
   hashlog=/cases/case-2024-001/hashes/split_hashes.txt \
   bs=4096 \
   split=2G \
   splitformat=aa

# 검증 패스 포함 획득
dcfldd if=/dev/sdb \
   of=/cases/case-2024-001/images/evidence.dd \
   hash=sha256 \
   hashlog=/cases/case-2024-001/hashes/verification.txt \
   vf=/cases/case-2024-001/images/evidence.dd \
   verifylog=/cases/case-2024-001/logs/verify.log

5단계: 이미지 무결성 검증

# 획득한 이미지 해싱
sha256sum /cases/case-2024-001/images/evidence.dd | \
   tee /cases/case-2024-001/hashes/image_hash.txt

# 출처 해시와 이미지 해시 비교
diff <(sha256sum /dev/sdb | awk '{print $1}') \
     <(sha256sum /cases/case-2024-001/images/evidence.dd | awk '{print $1}')

# 분할 이미지를 사용한 경우 각 세그먼트 검증
sha256sum /cases/case-2024-001/images/evidence.dd.* | \
   tee /cases/case-2024-001/hashes/split_image_hashes.txt

# 변경 사항이 없음을 확인하기 위해 출처 재해싱
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_after.txt
diff /cases/case-2024-001/hashes/source_hash_before.txt \
     /cases/case-2024-001/hashes/source_hash_after.txt

6단계: 획득 과정 문서화

# 획득 보고서 생성
cat << 'EOF' > /cases/case-2024-001/notes/acquisition_report.txt
디스크 이미지 획득 보고서
==============================
사건 번호: 2024-001
날짜/시간: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
검사관: [이름]

출처 장치: /dev/sdb
모델: [hdparm 출력에서]
시리얼: [hdparm 출력에서]
크기: [fdisk 출력에서]

획득 도구: dcfldd v1.9.1
블록 크기: 4096
쓰기 차단기: [하드웨어/소프트웨어 모델]

이미지 파일: evidence.dd
이미지 해시 (SHA-256): [해시 파일에서]
출처 해시 (SHA-256): [해시 파일에서]
해시 일치: 예/아니요

획득 중 오류: [오류 로그에서]
EOF

# 보관을 위한 로그 압축
tar -czf /cases/case-2024-001/acquisition_package.tar.gz \
   /cases/case-2024-001/hashes/ \
   /cases/case-2024-001/logs/ \
   /cases/case-2024-001/notes/

주요 개념

개념설명
비트 단위 사본할당되지 않은 공간과 슬랙 공간을 포함한 출처의 정확한 복제본
쓰기 차단기증거 매체에 대한 쓰기를 방지하는 하드웨어 또는 소프트웨어 메커니즘
해시 검증출처와 이미지를 비교하여 무결성을 증명하는 암호학적 해시
블록 크기 (bs)속도에 영향을 미치는 전송 청크 크기; 포렌식에서는 일반적으로 4096 또는 64K 사용
conv=noerror,sync읽기 오류 시에도 계속 진행하고 오프셋 정렬 유지를 위해 0으로 패딩
체인 오브 커스터디증거가 변조되지 않았음을 증명하는 문서화된 추적 기록
분할 이미징저장 및 운송을 위해 큰 이미지를 작은 파일로 나누기
Raw/dd 형식메타데이터 컨테이너 오버헤드가 없는 비트 단위 이미지 형식

도구 및 시스템

도구용도
dd표준 Unix 디스크 복제 유틸리티, 로우 이미징용
dcflddDoD 컴퓨터 포렌식 연구소의 향상된 dd 버전, 해싱 기능 포함
dc3ddDoD 사이버 범죄 센터의 또 다른 포렌식 dd 변형
sha256sum무결성 검증을 위한 SHA-256 해시 계산
blockdev블록 장치 읽기 전용 모드를 설정하는 Linux 명령어
hdparm드라이브 식별 및 매개변수 보고
smartctl드라이브 상태 및 식별을 위한 S.M.A.R.T. 데이터 검색
lsblk블록 장치 열거 및 식별

일반적인 시나리오

시나리오 1: 용의자 노트북 하드 드라이브 획득 Tableau T35u 하드웨어 쓰기 차단기를 통해 드라이브를 연결하고, /dev/sdb로 식별한 후, SHA-256 해싱과 함께 dcfldd를 사용하여 4GB 세그먼트로 분할(DVD 보관용), 해시 일치 확인, 사례 노트에 문서화.

시나리오 2: 손상된 워크스테이션의 USB 플래시 드라이브 이미징 blockdev --setro로 소프트웨어 쓰기 차단을 사용하고, MD5 및 SHA-256 이중 해싱을 포함한 dcfldd로 획득, 이미지가 단일 파일로 충분히 작은 경우 단일 파일로 저장하고 암호화된 사례 드라이브에 보관.

시나리오 3: 네트워크를 통한 원격 획득 원격 획득을 위해 netcat 또는 ssh를 통해 dd를 파이프: ssh root@remote "dd if=/dev/sda bs=4096" | dd of=remote_image.dd bs=4096, 양쪽 끝을 독립적으로 해싱하여 전송 무결성 확인.

시나리오 4: 고장 드라이브에서 획득 먼저 ddrescue를 사용하여 읽기 가능한 섹터를 복구한 다음, conv=noerror,sync와 함께 dd를 사용하여 갭을 0으로 채우고, 오류 로그에 읽을 수 없는 섹터를 문서화.

출력 형식

획득 요약:
  출처:       /dev/sdb (500GB Western Digital WD5000AAKX)
  대상:  /cases/case-2024-001/images/evidence.dd
  도구:         dcfldd 1.9.1
  블록 크기:   4096 bytes
  소요 시간:     2h 15m 32s
  복사된 바이트: 500,107,862,016
  오류:       0 bad sectors
  출처 SHA-256:  a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
  이미지 SHA-256:   a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
  검증:    통과 - 해시 일치

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

관련 스킬