ddコマンド

Linux
OLYMPUS DIGITAL CAMERA
この記事は約6分で読めます。

ddの由来は、 “data duplicator” 。 要はコピーするコマンドです。

コピーコマンド: ” cpコマンド” との違い

コピーするコマンドと言えば真っ先に ” cpコマンド” が思い浮かびます。

例えば下の例はファイルAをファイルBにコピーするコマンドですが、

ddコマンドは同じコピーでも、cpコマンドとは違ってディスクの領域全てをコピーします。

違いを分かりやすく言うと、ファイルとファイルの隙間の空白部分までをも全部コピーします。(低レベルコピーと呼ばれます)

空白部分の重要性

そしてこの空白部分(ノートで言うと白紙部分)こそが実は重要で、そこには “既に削除されたファイル” などが埋まっていたりする訳です。

よく “削除されたファイルを復旧(復元)する” などと言われてますが、アレです。

ハッキングされたマシンのハードディスクなどを検査・検証する作業をフォレンジクスと言います。

この作業では、まずは下準備として検査対象のディスク(メディア・ストレージなど)を、空白部分を含めて全て丸々コピーしてくる過程が必要です。

重要な証拠物のコピーですね。

その際のコピーコマンドが “ddコマンド” です。

ddコマンドと同機能・同系統の進化版ツールに “dcfldd” や “dc3dd” があります。これらは次回以降にて。

逆に、空白部分も含めて、コピー機能を利用して丁寧に丹念に上書き(全部ゼロで埋めたりします)して、(もはや復旧できないように)証拠隠滅する完全消去する作業も “ddコマンド” で出来ます。

コピー元の選択

本番では、ハッキングされたマシンのストレージ(ハードディスク・メディア等)を、そっくりそのまま証拠としてコピーします(そしてそれを後で解析しますが)

そのようなものは無いので、今回使用するのは32GBの古いUSBメモリにしました。

USM memory32GB

これ20年くらい前に使っていたもので、最近15年くらいは殆ど使っていません(普段のデータ移動はcloud経由のデータ受け渡しで事足りてますので)

あまり容量の大きいメモリだと時間がかかり過ぎるので、出来るだけ小さいものを探しましたがこれが最小でした。

これをラズパイのUSBポートに差し込みます。

するとデスクトップにアイコンが現れます。

Desktop

丁度、中身のファイルはゼロの状態です。(しかし過去には無数に書き込みと消去を繰り返しています)

/media/kali/TRANSCEND

パスは “/media/kali/TRANSCEND”

ddコマンドの設定と実行

このコマンドの基本的な設定は下記の通り。入力ファイルから出力ファイルへとコピーします。

出力先には当然、入力される容量よりも大きな容量が必要です。

入力ファイルの指定の仕方

入力ファイルとなってますが、空白部分までコピーするので基本的にはディスク・メディア全部(又はそのパーティション)が入力対象となります。

その為特殊な指定方法となります。

lsblkコマンド

lsblkコマンドは、システム下のデバイスとパーティションをツリー形式で表示するコマンドです。

上記コマンドで得られた情報を元に、ターゲットのデバイス名(パーティション名)を確認、特定します。

isblk

sda, sdb, sdc, …がデバイス名、sda1, sda2, sda3 …がパーティション名です。

上記の例では “sda” を選択します。( “mmcblk0” の方はラズパイ本体のストレージです)

ddでの “io= ” オプションには ” /dev/” の後にこの名称を使用します。

自動マウントされた場合のアンマウント

マウントされていない状態にして読み取りを行います。

“unmount” ではなく “umount”

実行例では、マウントはされていませんでした。

unmount

でもGUIではマウントされているという不思議な状況になっています。
この謎解きも面白そうですが、今は拘らないことにします。
ちなみにGUIからのアンマウントは無効で、ディスク取り出しにするとデスクトップから消えまして、その時のlsblkは下記でした。

読取専用化

hdparmは “HardDisk Parameter Modifier” の略。ディスク管理ツール。

このコマンドを使用して、読取専用に設定します。

“-r” オプションはread onlyフラグを設定します。デフォルトは0、read onlyなら1

hdparm

実行前のチェックリスト

コピーの実行

では実際に実行してみましょう。

下記オプションを付加します。

書き込みファイルは、 “/mnt/forensics/transcend01.dd” としました。

コピーが始まります。

dd start

コピーが完了しました。

dd end

32GBのファイルが作成されています。

product

ハッシュの作成

フォレンジクス作業の場合には取得したコピーのハッシュを記録しておきます。

以下、各種ハッシュの作成例。

MD5ハッシュ
md5

ハッシュログの保存

hashlog
SHA1ハッシュ
SHA256ハッシュ

まとめ

今回はddコマンドについて、フォレンジックの準備段階としてのコピー作業の使用に絞って取り上げました。

なお作成されたコピーは証拠物となり、次の段階として “autopsy” などのツールで解析されます。

補足:ゼロで埋める方法

参考までに、証拠隠滅セキュリティ保持の為に、過去に削除したファイルも含めて全て消したい時。

入力ファイルはゼロを生み出す ” /dev/zero” を設定して、出力ファイルの方をゼロで埋めたいディスク・メディアにします。

ランダム数字で埋める方法

全部ゼロだと偽装工作がわざとらしいので、ランダムな数字で埋めたい場合はこちら。

入力を ” /dev/urandom” にします。

途中に出てきた “hdparmコマンド” でもデータの完全消去が出来るようです。(機会あれば取り上げます)

コメント

タイトルとURLをコピーしました