Colorkrewでは、お客様に複数のサービスを提供しています。これらのサービスは安全である必要があります。DevOpsエンジニアとして、悪意のあるアクターがさまざまなシステムに不正アクセスを試みる方法や、それらのアクセスをどのように制限してセキュリティ体制を強化するかについて、常に知識を得て最新の情報を把握しておく必要があります。今日は、私がサイバーセキュリティの知識を深めるために使っている、楽しくて本当に価値があると感じているいくつかの方法を共有したいと思います。
サイバーセキュリティの知識を深める一つの方法は、ほぼ毎週末世界中のどこかで開催される「キャプチャー・ザ・フラッグ」に参加することです。これは、さまざまな脆弱性を利用して、競技サイトに提出した「フラグ」にアクセスしてポイントを獲得する競技です。最も多くのポイントを獲得した人やチームが優勝します。これらの競技は、システムの穴を見つけて、それを突きつけるための楽しく教育的な方法です。いつか私たちのオフィスでイベントを開催し、サイバーセキュリティの知識を楽しく魅力的な形で広げ、挑戦するコンペティションに参加できることを願っています。
この知識を得るもう一つの楽しい方法は、長い間とても気に入っていたけれど、最近Colorkrewがサブスクリプションを出してくれた「Hack The Box」というウェブサイトを実際に使うことです。
Colorkrewでは、エンジニアがエンジニアリングと学習支援予算を受け取ります。この予算を自由に使い、標準機器以外の知識や機器を職場で向上させることができます。これは、私たちが学び続け、仕事で使いたいツールにアクセスできるようにするための彼らの約束です。私はこのウェブサイトのサブスクリプションに予算を使ってサイバーセキュリティの知識を深めることに決めました。
Hack The Boxは、脆弱性を悪用してマシン(「ボックス」)のrootアクセスを獲得する教育プラットフォームです。このウェブサイトはまだ十分に使ったことはありませんが、最も簡単で最もハックされた「Lame」というボックスをどうやって回避したかを少し共有したいと思います。

このマシンは特にハッキングが難しいマシンではありませんが、ウェブサイトが提供するものを紹介するのにはとても良いです。
先に進む前に断っておきますが、このシステムに入るにはスクリプトキディ方式で入り込むつもりです。ウェブサイトに慣れている途中です。しかし、システムにアクセスする際にMetasploitに頼るのが減る段階に至ればと思っています。
この箱を進むときはガイドモードを使うつもりです。このモードでは、道中でチャレンジがあり、自分で作業する際に何を注意すべきかを教えてくれるマシンへのアクセスを導きます。
箱を開けて最初の作業を始める

「リモートホストで開いている『nmap』トップ1000のTCPポートはいくつですか?」
まずHTB(Hack The Box)から提供されたマシンにログインし、ターゲットIPアドレス「10.129.177.49」に対して「nmap」というツールを使っています。
「nmap」は、さまざまなリモートホストのポートをスキャンし、そのポートの背後で動作するサービスを特定するためのツールです。
このコマンドを実行する際には、いくつかのパラメータを指定しています
- '-sV' は、ポートの背後でどのサービスバージョンが動作しているかを検出しようと試みる
- '--top-ports 1000' は、システム上で最も人気のある1000ポートと対抗してNMAPを実行させるためのもの
- '--min-rate 1000' は、nmapが最低1000パケット/秒を送信しようと試みることでプロセスを高速化するためです
そのコマンドをターゲットに対して実行し、4つのオープンサービスを見つけました

そこで、4つをタスクに渡し、提出して次のタスクに進みます

「VSFTPdのどのバージョンがダサいか?」と言われました。
「nmap」スキャンの出力を振り返ると2.3.4だったので、それを提出して次に進みました

「VSFTPdバージョン2.3.4には有名なバックドアがあり、それを悪用するMetasploitモジュールがあります。その脆弱性はここで機能しますか?」
まずオンラインでこの脆弱性を調べ、「CVE-2011-2523」と出ました。このCVEから、VSFTPdサービスに6200/TCPのバックドアポートを開く脆弱性があり、それによってマシンにアクセスできることがわかりました。
マシン上でmetasploitを起動して、このモジュールを見つけて使おうとします


このモジュールを使ってリモートのコンピューターに接続できないようで、タスクに対して「いいえ」と答えました。

「Lamaで動いているサンバのバージョンは何?数字は「-Debian」は含まずに示してください。
HTBのオンボーディングプロセスでは、「スタートポイント」と呼ばれるスタートコースを進むように求められます。このコースでは、サンバインスタンスへの接続方法について少し学びます。この知識を使って、先ほどの「nmap」スキャンで見たサンバインスタンスに接続しています。
コマンドは「smbclient –L 10.129.177.49'を実行し、そこではサーバー上の利用可能なすべてのサービスが表示されます。コマンドはパスワードを求めますが、私はエンターを押して次に進むだけです

ここにバージョン番号3.0.20-Debianが表示されるので、それをHTBに渡して次のタスクに進みます

「2007年の何?CVEは、このSambaバージョンで『smb.conf』の「username map script」オプションが有効になった場合、シェルメタキャラクターを介して『SamrChangePassword』関数を用いてリモートコード実行を可能にします」
ここで「Samba 3.0.20 CVE」をググると、 CVE-2007-2447 というタスクと同じ説明を見つけたので、これを答えとして提出し、次のタスクに進みました。

「Exploiting CVE-2007-2447はどのユーザーとしてシェルを返しますか?」
この脆弱性についてもっと知るために、証明や概念を調べてみると、この投稿を見つけました https://amriunix.com/posts/cve-2007-2447-samba-usermap-script/
リモートホストでコマンドを実行するためのペイロード付きのユーザー名を渡せることを知りました。しかし、手動で行うことはせず、まずMetasploitを使いたいので、まずはMetasploitを使って自分で脆弱性を作ろうとしています。
使いたいモジュールを見つけて接続しようとしましたが、うまくいかないように見えます。

何度もやり取りし、Metasploitについて少し学んだ結果、ペイロードの設定と設定(時にはデフォルトのものでも問題ない場合もあります)が必要だと分かりました。また、RHOSTの誤字もRHOSTSに修正し、どのローカルアドレスポートやIPハンドラーを使うかも確認しました。
それらを設定することでマシンにアクセスでき、『whoami』を実行して自分がどのユーザーかを確認できます。つまり『root』です。

rootでマシンにアクセスできるので、ホストに対して基本的なLinuxコマンドを使って、makisのフラグとrootホームディレクトリを印刷し、ボックスを無事に完成させることで、最後の2つのタスクを簡単に完了できます。

うわー

私はずっとサイバーセキュリティに興味があり、時々自分に挑戦してみるのが楽しいと思っています。表面的な話ですが、ソフトウェアを常に最新の状態に保ち、自分を守らないと非常に脆弱になり得るということです。例えば、このタスクの前半でVSFTPdを悪用できなかった本当の理由は、「Lame」のファイアウォールが6200のバックドアポートにアクセスできなかったからです。これは、適切に設定されたファイアウォールと更新されたソフトウェアの価値を示しており、これは私の仕事にとって重要です。
この投稿を楽しんでいただけたら嬉しいです。ぜひ自分でボックスを試してみてください。サイバーセキュリティについて学び続けてください!