一覧OP-12-1 · 探索・収集・持ち出し・影響の痕跡

ファイルの探索・収集・圧縮の追跡

同じプロセスの記録から、一覧取得、成功した読取り、拒否された読取り、ZIPの中身へ進みます。収集の証拠と、外部へ送られた証拠を分ける調査を学びます。

説明

ファイル一覧の取得、内容の読取り、アーカイブの作成は、それぞれ別の行動です。対象にアクセスできそうだったことと、実際に内容を集めたことを同じ範囲として数えないようにします。

同じプロセスの記録から、一覧取得、成功した読取り、拒否された読取り、ZIPの中身へ進みます。収集の証拠と、外部へ送られた証拠を分ける調査を学びます。

1同じプロセスの行動を並べる

processは固定資料内で一意の識別子です。

from oplab import * db=connect(12) show(db, 'SELECT同じプロセスの行動を並べる * FROM activity WHERE process="g7" ORDER BY t')

一覧取得後に二つのファイルを読み、アーカイブを作っています。各操作の結果が異なる点を確認します。

2成功した読取りを抽出する

readだけでなくresultも条件に含めます。

show(db, 'SELECT成功した読取りを抽出する id,target FROM activity WHERE action="read" AND result="success"')

成功した読取りはa.csvです。b.csvへの要求が記録されていても、内容を取得できたとは扱いません。

3作成されたアーカイブを調べる

生成物のパスを確認します。

show(db, 'SELECT作成されたアーカイブを調べる id,target,result FROM activity WHERE action="archive"')

data.zipの作成成功が記録されています。アーカイブ名だけでは、格納されているファイルは分かりません。

4格納されている内容を確認する

archive表は取得済みZIPのメンバー一覧を抽出したものです。

show(db, 'SELECT格納されている内容を確認する * FROM archive')

入っているのはa.csv、1000バイトです。圧縮後のZIPサイズはヘッダーや圧縮率の影響を受け、1000と同じとは限りません。

5拒否された読取りを残す

収集に成功した範囲とは別に、試みた対象を残します。

show(db, 'SELECT拒否された読取りを残す id,target,result FROM activity WHERE action="read" AND result<>"success"')

b.csvは試行の証拠として残ります。試行と取得を一つの件数へまとめると、影響範囲を大きく見積もってしまいます。

6同じプロセスの送信を調べる

アーカイブ作成後の転送記録を見ます。転送物のハッシュはこの資料では未収集です。

show(db, 'SELECT同じプロセスの送信を調べる id,destination,bytes,result FROM transfer WHERE process="g7" ORDER BY t')

800バイトの送信成功はありますが、それがdata.zipだったかは未確定です。収集と送信を結ぶには転送対象の追加情報が必要です。

まとめ

800バイトの送信成功はありますが、それがdata.zipだったかは未確定です。収集と送信を結ぶには転送対象の追加情報が必要です。

表示された証拠IDと検索条件を残すと、調査結果を元の記録までたどれます。

操作履歴と解説を振り返れます。

Python 3.15 / SQLite・固定の調査記録

1
from oplab import * db=connect(12) show(db, 'SELECT * FROM activity WHERE process="g7" ORDER BY t')
id | t | host | process | action | target | result
e1 | 10 | ws7 | g7 | list | C:/Data | success
e2 | 11 | ws7 | g7 | read | C:/Data/a.csv | success
e3 | 12 | ws7 | g7 | read | C:/Data/b.csv | denied
e4 | 14 | ws7 | g7 | archive | C:/Temp/data.zip | success
2
show(db, 'SELECT id,target FROM activity WHERE action="read" AND result="success"')
id | target
e2 | C:/Data/a.csv
3
show(db, 'SELECT id,target,result FROM activity WHERE action="archive"')
id | target | result
e4 | C:/Temp/data.zip | success
4
show(db, 'SELECT * FROM archive')
path | member | bytes
C:/Temp/data.zip | a.csv | 1000
5
show(db, 'SELECT id,target,result FROM activity WHERE action="read" AND result<>"success"')
id | target | result
e3 | C:/Data/b.csv | denied
6
show(db, 'SELECT id,destination,bytes,result FROM transfer WHERE process="g7" ORDER BY t')
id | destination | bytes | result
t1 | external-store | 800 | success
t3 | external-store | 800 | failed

演習完了