1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Hack The Box】Weak RSA_日本語Walkthrough

Posted at

概要

Hack The Box(以下、HTB)のRetiredチャレンジであるWeak RSAのwriteupです。

環境

  • 実行環境
    dockerでkali linuxのコンテナを立てて解析しました。

  • 使用ツール

    1. RsaCtfTool
    2. CyberChef

環境構築

低スペックWindowsマシンを利用しており、VMwareなどでkali linuxの環境構築をすると反応が遅くてフラストレーションがたまるため、dockerで最低限の環境構築を行います。

あまり同じような状況の方はいないかと思うので、ここはざっくりでいきます。

1. Docker Desktopの準備

こちらでDocker Desktopをダウンロードし利用環境を構築してください。
詳細なやり方は別途お調べください。

2. kali linuxのコンテナイメージからコンテナ作成

https://www.kali.org/docs/containers/official-kalilinux-docker-images/
https://hub.docker.com/r/kalilinux/kali-rolling

この辺の情報を参考にkali linuxのコンテナを作成してください。
わたしはコンテナ作成時にHTB用の作業用フォルダをマウントし、ローカルのファイルを直接操作できるようにしました。

kali-rollingイメージの場合、作成するだけでは何も入っていないので、

apt update && apt -y install kali-linux-headless

を実行して、最低限のパッケージを導入します。

3. RsaCtfToolの導入

RsaCtfToolはCTFなどでRSA暗号の解析を行うために作成されたツールです。
2023/6/14時点ではPython3.9が必要です。
https://github.com/RsaCtfTool/RsaCtfTool

  • 作成したkali lunuxコンテナ上で以下のコマンドを実行

    git clone https://github.com/RsaCtfTool/RsaCtfTool.git ~/RsaCtfTool
    apt install libgmp3-dev libmpc-dev
    cd ~/RsaCtfTool
    

    公式ではここでrequirements.txtのインストールを行いますが、私が実行した時点ではほかのライブラリと競合してWarningが出ました。
    今回はこれによるエラーなどを避けるために仮想環境にライブラリをインストールします。

    python -m venv venv
    source ./venv/bin/activate
    pip install -r requirements.txt
    

    RsaCtfToolを利用するときはこの仮想環境に入って実行します。

Walkthrough

1. 対象ファイルのダウンロード

HTBのWeak RSAのページから対象のファイルをダウンロードし、作業用フォルダに格納します。
image.png

2. ファイルの確認

unzipでファイルを解凍します。

unzip "Weak RSA.zip"

image.png

  • flag.enc
  • key.pub

の2つのファイルが入っていました。
ファイルの素性をfileコマンドとcatコマンドで確認します。

image.png

  • flag.enc
    dataファイル
    なぞの文字列

  • key.pub
    ASCIIのテキストファイル
    PUBLIC KEYが記載してある

2.5 . RSA暗号に関して

RSA暗号とは公開鍵暗号方式と呼ばれる暗号方式で、

  1. 送信者は公開鍵でファイルを暗号化して送信
  2. 受信者は自身の持つ秘密鍵でファイルを復号し使用

という流れで使用される。
公開鍵はオープンに公開されており、だれでも暗号化は可能だが、秘密鍵は厳重に管理されており、秘密鍵を持つ限られた受信者だけが暗号化されたファイルを復号できる。

通常、秘密鍵をもたない攻撃者などは復号できないが、弱いRSA暗号であれば公開鍵から秘密鍵を計算できてしまう。

今回のチャンレンジでは暗号化されたファイル(flag.enc)と公開鍵(key.pub)が渡されていることから、公開鍵から秘密鍵を推測することで暗号化ファイルを復号する問題だと予想される。

3. 秘密鍵の生成

RsaCtfToolを使って秘密鍵を推測する。

3.1 前段

公式によると公開鍵とファイルを指定すると復号してくれる機能があるっぽいが、2023/6/14時点ではうまく動かない。

元コード的には公開鍵と暗号化ファイルのみの指定すると何もせずにexitするように見えるが詳細までは追っていない。

Uncipher file
./RsaCtfTool.py --publickey ./key.pub --uncipherfile ./ciphered_file

これを実行してもそのまま何もせずに終了

そのため、今回は公開鍵から秘密鍵を推定しCyberChefと組み合わせて暗号ファイルを復号する

3.2 秘密鍵の生成

環境構築の際に作成した仮想環境に入る

cd <作業用のディレクトリ>
source ~/RsaCtfTool/venv/bin/activate

公開鍵から秘密鍵を生成する

python ~/RsaCtfTool/RsaCtfTool.py --publickey key.pub --private --output key.pri

実行するとkey.priというファイル名で秘密鍵ができます。
中身を確認します。
image.png

4. CyberChefによる復号

CyberChefは無料で使える変換ツールでエンコードや複合などにとても便利です。
ブラウザで使えます。
https://cyberchef.org/

4.1 RSA復号の準備

画面左の検索窓で"RSA"を検索し、でてきた"RSA Decrypt"をひとつ右のRecipeにドラッグアンドドロップする
image.png

4.2 ファイルのインポート

右上のOpen file as inputでflag.encを取り込みます。
image.png

4.3 秘密鍵の入力

画面中央のRSA Private key(PEM)に先ほど作成した秘密鍵の内容を

-----BEGIN RSA PRIVATE KEY-----
MIICOQIBAAKBgQMwO3kPsUnaNAbUlaubn7ip4pNEXjvUOxjvLwUhtybr6Ng4undL
tSQPCPf7ygoUKh1KYeqXMpTmhKjRos3xioTy23CZuOl3WIsLiRKSVYyqBc9d8rxj
NMXuUIOiNO38ealcR4p44zfHI66INPuKmTG3RQP/6p5hv1PYcWmErEeDewKBgGEX
xgRIsTlFGrW2C2JXoSvakMCWD60eAH0W2PpDqlqqOFD8JA5UFK0roQkOjhLWSVu8
c6DLpWJQQlXHPqP702qIg/gx2o0bm4EzrCEJ4gYo6Ax+U7q6TOWhQpiBHnC0ojE8
kUoqMhfALpUaruTJ6zmj8IA1e1M6bMqVF8srlb/NAiBhwngxi+Cbie3YBogNzGJV
h10vAgw+i7cQqiiwEiPFNQJBAYXzr5r2KkHVjGcZNCLRAoXrzJjVhb7knZE5oEYo
nEI+h2gQSt1bavv3YVxhcisTVuNrlgQo58eGb4c9dtY2blMCQQIX2W9IbtJ26KzZ
C/5HPsVqgxWtuP5hN8OLf3ohhojr1NigJwc6o68dtKScaEQ5A33vmNpuWqKucecT
0HEVxuE5AiBhwngxi+Cbie3YBogNzGJVh10vAgw+i7cQqiiwEiPFNQIgYcJ4MYvg
m4nt2AaIDcxiVYddLwIMPou3EKoosBIjxTUCQQCnqbJMPEQHpg5lI6MQi8ixFRqo
+KwoBrwYfZlGEwZxdK2Ms0jgeta5jFFS11Fwk5+GyimnRzVcEbADJno/8BKe
-----END RSA PRIVATE KEY-----

までコピペします。

image.png

4.4 スキームの選択

Outputには「RSA-OAEPのパディングじゃないよ」みたいな注意がでるので画面中央窓のEncryption Schemeでスキーマを変更します。
今回はRSAES-PKCS1-v1_5を選択するとOutputに正しいフラグが出力されます。

image.png

4.5 フラグの提出

得たフラグをHTBのSubmit flagに提出してクリアです。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?