高度なネットワーク セキュリティ学習レッスン 20 - CTF のファイル操作とステガノグラフィー


1. ファイルタイプの識別

1. ファイルコマンド

------ ファイルに拡張子がない場合、または拡張子があっても正常に開けない場合、認識されたファイルの種類に応じてファイル拡張子を変更し、ファイルを正常に開けるようにすることができます。

使用シナリオ: サフィックスが不明な場合、ファイルを開くことはできません。
形式: ファイル myheart は
ここに画像の説明を挿入します
ここで、それが PCAP トラフィック パケットであることを認識します。

2、ウィンヘックス

------ WinHex プログラムを通じてファイルのファイル ヘッダー タイプを表示し、ファイル ヘッダー タイプに基づいてファイル タイプを判断できます。

使用シナリオ: Windows でのファイル ヘッダー情報からファイルの種類を判断します。
ここに画像の説明を挿入します

3. ファイルヘッダーが不完全または間違っています

------ 一般に、ファイルを正常に開けない理由は 2 つあります。1 つはファイル ヘッダーが不完全で、もう 1 つはファイル ヘッダー フィールドが不正です。

------ ファイル ヘッダーが不完全な場合は、WinHex プログラムを使用して、対応するファイル ヘッダー情報を追加できます。ヘッダー フィールドが正しくない場合は、同じタイプのファイルを検索し、それを置換ファイルとして使用して、ファイルを通常に開くことができます。

使用シナリオ: ファイル ヘッダーが不完全であるか、ファイル ヘッダー フィールドが間違っているため、通常のファイルを開くことができません。
形式: ファイル ファイル名
ここに画像の説明を挿入します


2. ファイル分離操作

------ ファイルが複数のファイルの組み合わせであるかどうかわからない場合は、WinHex などのツールを使用して、PK などのキーワードやその他の疑わしいファイル名が存在するかどうかを確認できます。以下に示すように:
ここに画像の説明を挿入します

1. ビンウォークツール

------ Binwalk は、Linux 上でファイルを解析・分離するためのツールで、ファイルが複数のファイルで構成されているかどうかを素早く判断し、分離することができます。分離に成功すると、対象ファイルが存在するディレクトリに「filename_extracted」という名前のフォルダーが生成され、その中に分離されたファイルが格納されます。

------Binwalk の機能の 1 つは、圧縮パッケージを分割するときに自動的に解凍してくれることです。圧縮パッケージを追加してパスワードを入力すると、空の文書が解凍されます。

  • 一般ユーザーログインコマンド:
    解析ファイル: binwalk ファイル名
    分離ファイル: binwalk -e ファイル名
    ここに画像の説明を挿入します

  • コマンドを使用して root ユーザーとしてログインします。
    ファイルを分析します: binwalk filename --run-as=root
    ファイルを分離します: binwalk -e filename --run-as=root
    Linux システムでは、これは非常に危険であると考えられているためです。 root ユーザーで直接ログインする動作。

2、一番前

------ binwalk がファイルを正しく分離できない場合は、foreignmost を使用してターゲット ファイルを kali にコピーできます。実行が成功すると、ターゲット ファイルのファイル ディレクトリに設定したディレクトリが生成されます。ディレクトリは次のようになります。ファイルの種類ごとに分割されているので、ファイルを切り離します。

  • 使用法:
    先頭のファイル名 -o 出力ディレクトリ名
    ここに画像の説明を挿入します

3、dd

------ 自動ツールを使用してファイルを正しく分離できない場合は、dd コマンドを使用して手動でファイルを分離できます。
------Binwalk和Foremost分离只能分离按照顺序块来隐藏的文件,无法分离文件块打乱的文件。

  • 例:
    ------ ファイル内に、ファイル 1 とファイル 2 という 2 つのファイルが隠されています。各ファイルは、ファイル 1a とファイル 1b、ファイル 2a とファイル 2b の 2 つのブロックに分割されます。
    ------ ファイル ブロックの順序がファイル 1a、ファイル 1b、ファイル 2a、ファイル 2b の場合、これは Binwalk と Foremost を使用して分離できます。ただし、排出順序がファイル 1a、ファイル 2a、ファイル 1b、ファイル 2b であるとすると、このカオスな状態では Binwalk と Foremost を分離することはできません。このとき、dd を使用して分離できます。

  • 形式:
    dd if=ソースファイル of=ターゲットファイル名 bs=ブロックあたりのバイト数 count=ブロック数 stop=縮小ブロックをスキップ

    • パラメータの説明:
      if=file #ファイル名を入力します。デフォルトは標準入力です。
      of=file #出力ファイル名、デフォルトは標準出力です。
      bs=bytes #ibs と obs を置き換えることができる、読み取られる各ブロックのサイズも設定します。
      count # 読み取られるブロックの総数
      Skip=blocks # コピーを開始する前に入力ファイルの先頭からスキップするブロック数。
  • 使用法のデモ:
    ここでは、次の内容の新しいファイル 123 を作成します:
    ここに画像の説明を挿入します
    コマンドを入力します: dd if=123 of=aa bs=5 count=1
    ここに画像の説明を挿入します
    その後、現在のディレクトリに追加の aa ファイルが存在します。ファイルを開いて表示します。
    ここに画像の説明を挿入します

4、ウィンヘックス

------ dd コマンドの使用に加えて、WinHex ツールを使用してファイルを手動で切り離すこともできます。対象のファイルを WinHex にドラッグ アンド ドロップし、分割する必要がある部分を見つけて、最後にコピーをクリックして操作を完了します。

使用シナリオ: winhex プログラムを使用して、Windows でファイルを手動で分離します。
------ 分割方法は、必要な部分を選択してコピーし、別のファイルを作成してコピーした部分を貼り付けます。
ここに画像の説明を挿入します


3. ファイル結合操作

1. Linux でのファイルのマージ

使用シナリオ: Linux では、通常、類似したファイル名を持つファイルはバッチでマージされます。
形式: cat マージ ファイル > 出力ファイル
ここに画像の説明を挿入します

------ 整合性チェック: Linux でファイル md5 を計算:
md5sum ファイル名
ここに画像の説明を挿入します

2. Windowsaでのファイルの結合

使用シナリオ: Windows では、通常、類似したファイル名を持つファイルはバッチでマージされます。
形式: copy /B マージされたファイル出力用のファイル コマンド
ここに画像の説明を挿入します
------ 整合性チェック: Windows でファイル md5 を計算:
certutil -hashfile ファイル名 md5
ここに画像の説明を挿入します


4. ファイル内容のステガノグラフィー

------ ファイルコンテンツのステガノグラフィーとは、通常はファイルの先頭または末尾に、16 進形式で KEY をファイルに直接書き込むことを意味します分析时通常重点观察文件开头和结尾部分ファイルの途中にある場合は、通常、キーワード KEY またはフラグを検索して、隠されたコンテンツを見つけます。

使用シナリオ: Windows での隠しファイルの内容の検索

ウィンヘックス

------ 通常、特定したいファイルを winhex にドラッグし、キーワードが含まれている部分やファイルの内容と明らかに不一致な部分を探します。通常は、まずファイルの先頭と末尾を見て、フラグやフラグなどのキーワードを検索します。キーを押し、最後にスクロール ホイールをドラッグして を見つけます。
ここに画像の説明を挿入します


5. 画像ファイルのステガノグラフィー

1. 画像ミキシング

------ 画像の混合とは两张图片重叠在一起、色の重なりなどにより一方の画像しか見えなくなることをいい、もう一方の画像を非表示にするのと同じ効果が得られます。

推奨ツール: Stegsolve.jar (画像のカラーピクセルを調整可能)
元の画像:
ここに画像の説明を挿入します

調整後の写真:
ここに画像の説明を挿入します

2. LSB (最下位ビット)

------ 画像のグレースケール、しきい値、露出、カラーカーブなどを変更することで、人間の目では認識できない情報を見つけます。

推奨ツール:Stegsolve.jar

ステガノグラフィックステップ

  1. 画像内の文字f を非表示にしたいとします。まず、f を ASCII コードに変換し、次にそれをバイナリ
    f: 102 に変換します。これは、バイナリ: 01100110 に対応します。

  2. 画像内で連続する 8 桁の 16 進数を選択し、これらの 8 桁を 2 進数に変換します
    ここに画像の説明を挿入します

  3. 変換された 2 進数の最後の桁を、上記の f の 2 進値 01100110 に従って 1 つずつ置き換えます。最後に、置き換えられた 2 進数を 16 進数に変換し、元の画像で選択されている 8 桁の 16 進数を置き換えます。
    ここに画像の説明を挿入します

隠された情報を見つけるためのツール

使用されている画像は次のとおりです。
ここに画像の説明を挿入します

  1. Stegsolve.jar で画像を開き、red0、green0、blue0 の 3 つのチャネルの画像の上部に奇妙なものを見つけます。
    ここに画像の説明を挿入します

  2. ファイルを開く>>分析>>データ抽出
    ここに画像の説明を挿入します

  3. 赤、緑、青の位置で 0 チャンネルを確認し、エクスポートして png 形式のファイルとして保存します。
    ここに画像の説明を挿入します

  4. flag.png 画像を取得して、それが QR コードであることを確認します
    ここに画像の説明を挿入します

3. 画像属性へのステガノグラフィー (画像属性の表示)

ここに画像の説明を挿入します

4. ステガノグラフィック画像サイズ(画像サイズ変更)

------ 通常、画像は正常なサイズで表示されますが、画像の乱れなどが発生する可能性があります。ただし、画像サイズに問題がある場合は、画像にアクセスすることはできますが、画像の一部しか表示されないため、画像の他の部分を非表示にするには、この方法を使用します。

  • 例: 下の図は、完全な画像情報が表示されないように画像のサイズが変更されていることを示しています。
    ここに画像の説明を挿入します
  1. WinHex を使用して画像サイズを変更する
    ------ このとき、WinHex を使用して画像サイズを変更できます (通常、18 ビット目と 19 ビット目は幅、22 ビット目と 23 ビット目は高さになります)。
    ここに画像の説明を挿入します

  2. 画像のプロパティでサイズを確認し、値を 16 進数に変換します
    。----- 画像のサイズが何桁目であるかわからない場合は、画像のプロパティでサイズを直接確認し、その値を 16 進数に変換できます。 16 進数、そして最後に WinHex の Find です。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します

  3. WinHex で画像のプロパティを変更すると、通常どおり表示できるようになります。
    ここに画像の説明を挿入します

5. GIFアニメーション情報の非表示

使用ツール: Stegsolve.jar
ツール Stegsolve.jar を使用して、フレームごとに表示します。具体的な手順:
ここに画像の説明を挿入します
ここに画像の説明を挿入します


6. 圧縮ファイルの解析

1. 擬似暗号化

------ 圧縮ファイルが暗号化されている場合、またはファイルヘッダは正常でも解凍エラーが発生する場合は、まずファイルが擬似暗号化されているかどうかを確認してください。zip ファイルが暗号化されているかどうかは、識別子によって表示されます。各ファイルのファイル ディレクトリ フィールドには、ファイルが暗号化されているかどうかを具体的に識別するビットがあります。これを 00 に設定すると、ファイルが暗号化されていないことを意味します。解凍された場合は、ファイルが擬似的に暗号化されていることを意味し、解凍中にエラーが発生した場合、ファイルは真に暗号化されています。
使用シナリオ: 擬似暗号化ファイル

  • 操作方法:
  1. winhex を使用してファイルを開き、16 進数の 50 4B 01 02 を検索します。暗号化された各ファイルのファイル ヘッダー フィールドを確認できます。
    ここに画像の説明を挿入します

  2. 50 から数えて 9 文字目と 10 文字目は暗号化フィールドです。0000 に設定すると非暗号化になります。
    ここに画像の説明を挿入します

2.ブルートフォースクラッキング

------ 通常、rar ファイルをクラックするには ARCHPR.exe ツールを使用できます。
使用シナリオ: Windows での暗号化された rar ファイル

  1. 攻撃タイプとしてブルート フォース クラッキングを選択します。プロンプトに従って、範囲の位置でブルート フォース クラッキング範囲オプションを選択します。オプションの特定の範囲で開始および終了するブルート フォース クラッキングのタイプを設定します。定義されていない場合は、ブルートフォースクラッキングの全範囲が使用されます。「開く」をクリックしてクラックするファイルを選択し、クリックしてクラックを開始します。パスワードは1~9桁の数字、パスワード辞書は付属の英語辞書を使用することを推奨します。

  2. 複雑なブルート フォース クラッキングを実行するには、攻撃タイプのマスクを選択します。たとえば、パスワードの最初の 3 桁が abc、最後の 3 桁が数字であることがわかっている場合は、攻撃タイプのマスクを選択し、「acb?」と入力します。マスク内で ?? を選択し、総当たり範囲オプションですべてを選択します。番号、クラックしたいクリックを開き、クラックをクリックします。このとき、???部分は選択した総当たりクラッキング範囲の文字に置き換えられます。
    ここに画像の説明を挿入します


7. トラフィックパケットファイルの分析

Wiresharkフィルター

------ Wireshark の強力なメッセージ フィルターを使用すると、必要なメッセージをフィルターで除外できます。

  • 一般的に使用されるフィルタリング コマンド:
1)过滤IP,如源IP或者目标 x.x.x.x
ip.src eq x.x.x.x or ip.dst eg x.x.x.x  或者  ip.addr eq x.x.x.x

2)过滤端口
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80  只显tcp协议的目标端口为80
tcp.srcport == 80  只显tcp协议的源端口为80
tcp.port >= 1 and tcp.port <= 80

3)过滤协议
tcp/udp/arp/icmp/http/ftp/dns/ip.....

4)过滤MAC
eth.dst  ==  A0:00:00:04:c5:84  过滤目标mac

5)包长度过滤
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和
tcp.len >= 7 指的是ip数据包(tcp下面那块数据),不包括tcp本身
ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包长度,从eth开始到最后

6)http模式过滤
http.request .method ==GET”
http.request .method ==POST”
http.request.uri  ==/img/logo-edu.gif”
http contains “GET”
http contains “HTTP/1.”
http.request.method ==GET&& http contain “User-Agent:”
http contains “flag”
http contains “key”
tcp contains “flag”

------ 競技中、トラフィック パケットでフラグを探すことができます
------ 下の画像に加えて、次の場所で直接追踪流フラグを探すこともできます。
ここに画像の説明を挿入します


おすすめ

転載: blog.csdn.net/p36273/article/details/132918911
おすすめ