今日、私たちのCybersecクラスで課題があり、ある時点で(ターミナル経由のWindowsマシンで)
dir
で興味深いファイルを見つけました
root.txt
と呼ばれる
によって
more root.txt
出力
Look deeper...
を取得しました
、それは
dir /a
を試してみました何かが隠されているかどうかを確認します。ただし、結果はありません。
しばらくして、教授は
dir /r
を使用するためのヒントをくれましたこの出力がありました:
..
05/24/2018 05:25 PM 14 root.txt
137 root.txt:confidential.txt:$DATA
..
誰かが
confidential.txt
を読むことができることを知りました
more < root.txt:confidential.txt
を使用する
ここで何が起きているのでしょうか?そして、
/r
は何をしますか行う?
NTFSは、NTFS「属性」とも呼ばれるストリームのコレクションとしてファイルを保存します。 「属性」は一般的にファイルの
$STANDARD_INFORMATION
のファイル属性フラグを指すため、「ストリーム」という名前を使用することを好みます。 「非表示」、「システム」、「読み取り専用」などのストリーム。 Windowsプログラムで直接よく使用される2つのストリームタイプは、データとインデックス(つまり、$DATA
および$INDEX_ALLOCATION
)。NTFSファイルには常にデフォルト(匿名)データストリームがあります。 「filename :: $DATA」、または単に「filename」。また、「filename:streamname:$DATA」などの代替(名前付き)データストリームを持つこともできます。ディレクトリは名前付きデータストリームを持つことができますが、匿名ストリームはファイル名インデックスであるため、デフォルトではありません。ザ・
/r
CMDのdir
のオプション コマンド呼び出しFindFirstStreamW
およびFindNextStreamW
リスト内の各ファイルまたはディレクトリで、その$DATA
をリストする ストリーム。NTFSディレクトリには
$FILE_NAME
があります 「$I30」という名前のインデックス、たとえば「dirname:$I30:$INDEX_ALLOCATION」。このインデックスも匿名でエイリアスされます。 「dirname :: $INDEX_ALLOCATION」、またはもっと簡単に言うと「dirname」。FindFirstFile
でリストできます およびFindNextFile
。他のストリームタイプに対する名前付きインデックスも可能です。たとえば、NTFSボリュームには、「\ $Extend \ $Reparse:$R:$INDEX_ALLOCATION」の予約済みの「$Reparse」ディレクトリに再解析ポイントインデックスがあります。このインデックスをリストするには、特定のディレクトリクエリが必要なので、
FindFirstFile
使用できません。FindFirstVolumeMountPoint
およびFindNextVolumeMountPoint
ボリューム上のマウントポイント、つまりIO_REPARSE_TAG_MOUNT_POINT
を検索するために、このインデックスをリストします ボリュームGUIDパスをターゲットとする再解析ポイント。