CTFのためのFormat String Attack

今回は、Format String Attack(書式文字列攻撃)を勉強するにあたり、ksnctf - 4 Villager Aを解いた。

今回の問題は、SSHで問題サーバにアクセスすると、以下のように読み取り権限がなく開けないflag.txtと脆弱なプログラムq4が確認できる。
ここで、q4にFormat String Attack(書式文字列攻撃)を仕掛けてFLAGを抜き出すのが今回の問題の解法。

1
2
3
4
5
6
7
8
9
10
ubuntu@ThinkPadx280:~$ ssh q4@ctfq.sweetduet.info -p 10022
q4@ctfq.sweetduet.info's password:
Last login: Sat Jun 20 06:40:14 2020 from 10.0.2.2

[q4@localhost ~]$ ls -l
total 16
-r--------. 1 q4a q4a 22 May 22 2012 flag.txt
-rwsr-xr-x. 1 q4a q4a 5857 May 22 2012 q4
-rw-r--r--. 1 root root 151 Jun 1 2012 readme.txt
[q4@localhost ~]$
続きを読む

はじめてのバッファオーバーフロー

Notice
この記事はまだ編集中です。
記載の内容は十分な事実確認を実施していない場合があるためご注意ください。

ポイント

  • リターンアドレスを書き換えて任意の関数を実行させる

    • gets関数などに対し、想定長を越える入力を行い、バッファオーバーフローを引き起こすことで、リターンアドレスの値を書き換える

      1. gdp-pedaのpdisasコマンドなどを使用して、呼び出したい関数のメモリアドレスを調べる
    • シェルコードを送り込む
      ※シェルコードとは、コンピュータセキュリティにおいて、ソフトウェアのセキュリティホールを利用するペイロードとして使われるコード断片のこと

      1. pwntoolのshellcraftを使うと、あらかじめ用意されているシェルコードを利用できる
      2. スタックオーバーフローを利用して、攻撃元のPCからコマンドを打つと、それが攻撃対象のPCで実行されるようにすることができる

参考リスト

Web

CTFのための暗号技術

証明書関連

  • Certutil
    • マクロおよび証明書サービス関連の機能
  • WMIC
    • Windows の管理

      Windows の 2 つの正規コマンドラインツール「WMIC(wmic.exe)」および「CertUtil(certutil.exe)」を悪用し、感染 PC に不正なファイルをダウンロードするマルウェアが確認されました。WMIC はWindows の管理を担当し、CertUtil はマクロおよび証明書サービス関連の機能を担う正規ツールです。これらの正規ツールは、通常の機能の一部としてファイルのダウンロードに使用されるため、不正活動においても検出回避を目的としてよく利用されます。
      引用:Windows の正規機能 WMIC および CertUtil を利用しブラジルのユーザを狙うマルウェアを確認

その他

  • XOR暗号

参考リスト

Web

Blog

CTFのためのファイルエンコーディングとデコードについて

HEXエンコーディング

そもそもHEXエンコーディングって何ぞ?

文字はASCIIで表され、長さは1バイトですが、1バイトは16進形式で2桁で表すことができます。
たとえば、255は0xFFです。あなたがしなければならないことは、16進数から文字に変換し、文字列を構築することです。
引用:What is a string of hexadecimal digits?

BASEエンコーディング

BASEエンコーディングとは何ぞ?

  • データを64種類の印字可能な英数字のみを用いて表現するエンコーディング方式
  • 英数字以外扱うことの出来ない環境にてマルチバイト文字やバイナリデータを扱うために使用される
  • MIMEによって規定され、7ビットのデータしか扱うことの出来ない電子メールにて主に利用されている
  • BASEエンコーディングによって、データ量は約137%に増える

BASE64をデコードする

  • Ubuntuの場合
    “””
    base64 -d base64.txt > base64_decoded.txt
    “””

参考リスト

Web

Stack over Flow

Blog

CTFのためのYARA

YARAとは

YARAとは、マルウェアの研究者たちのために作られた、マルウェアを検知・解析・分類するための、オープンソースのプログラム(Pythonベース)です。
Windows/Linux/Mac OS Xと、幅広く対応しているマルチプラットフォームのツールで、『YARAルール』という文字列と条件、条件演算子、正規表現などを用いて、マルウェアのファミリーの記述を作成し、”yara”コマンドで
“””
yara [OPTION]… [RULEFILE]… FILE | PID
“””
とすることで、ルールに沿ってFILE or PIDからマルウェアを検出します。
引用: 「YARAルール」とClamAV

つまり??

  • ファイルやプロセスメモリのバイナリデータをスキャンし、そのスキャン結果を出力する
  • スキャンには正規表現や条件演算子を使用できる

参考リスト

Web

Blog

その他

CTFのためのバイナリ解析

Notice
この記事はまだ編集中です。
十分な事実検証を実施しておりませんので利用の際はご注意ください。

マルウェア解析の流れ

  • 検体が既知のマルウエアかどうかを判別する
    • データベース化された既知のマルウエアと検体の比較を高速に実行するため、マルウエア検体のハッシュ値が利用されるが、従来のハッシュ関数では、類似の検体は全く異なる検体として扱われる
    • そのため、fuzzy hash関数(ssdeep)や、PE(portable executable)のインポートテーブルから値を算出するimphash(import hash)が利用される
      関連:impfuzy
続きを読む

CTFのためのパケット解析

pcapファイルの解析手順

pcapファイルの解析手順

pcapファイル解析のコツ

  • パケット数が多い場合
    • WiresharkのStatistics機能で的を絞る
    • TCPストリームで、特定のTCPセッション情報のみ取得する
  • パケット数が少ない場合
    • TCPストリーム
      • Follow TCP ストリーム
    • 送受信データ
      • HTTP Export Object
      • Export Selected Packed Bytes
  • 暗号化されたPOSTデータから漏洩した情報を確認する
    • 暗号化の手法によって復号方法が変わる
続きを読む