田舎院生のセキュログ

自分用のメモとかWrite-up

簡単にWebサイトの悪性チェックができるツール一覧

普段自分が使っているWebサイトの悪性チェックツールを紹介します。
基本的に全て無料で、使い方はURLを入力するだけなので、セキュリティ知識が無い方にも是非活用して欲しいです!
※注意!簡単なチェックをするだけなので、巧妙に攻撃が仕掛けられているWebサイトは検出できない可能性が高いです

ちなみに自分はaguseとurlQueryを主に使っています。

aguse

www.aguse.jp日本の企業が運営しているサービス
Webサイトの表示画面を見たいときにオススメ

f:id:swime:20180108163639j:plain
Webサイトのスクショ、カスペルスキーによるマルウェアチェック、ブラックリストチェック、リンク情報などを提示してくれます。

特徴

aguseゲートウェイという機能によって、実際にアクセスしなくてもWebサイトがどのように表示されるか見ることができます。
f:id:swime:20180108164222j:plain
このような感じで、リンクをクリックするとそのWebサイトも見れます!

VirusTotal

www.virustotal.comセキュリティ業界では有名なツール(知らない人はいないのでは…?)
簡単に調べたいときにオススメ!ただし、精度は良くないです。

f:id:swime:20180108164740j:plain
基本的にはexe形式などのマルウェアを解析してくれるサービスですが、実はWebサイトチェックもしてくれます。
数十種類のアンチウイルスソフトによる悪性チェックの結果を提示してくれます。

特徴

アンチウイルスソフトによる検出率と、ユーザによる投票数によって悪性か良性かぱっと見で分かるようになっています。

urlQuery

urlquery.net少し専門知識がある人向け
詳しく調べたいときにオススメ!

f:id:swime:20180108171727j:plain
一般の人は見ても分からないかも…。
ブラックリストとの照合結果、同IPやドメイン名の情報、JavaScript、HTTP通信内容など、詳細な調査結果を提示してくれます。
ただ、解析に時間がかかる場合があります。

特徴

f:id:swime:20180108172200j:plain
HTTP通信の流れを視覚化してくれるので分かりやすい。セキュリティ技術者には一番オススメかも。

Sucuri SiteCheck

https://sitecheck.sucuri.net/
セキュリティ企業のSucuriが提供しているサービス
ブラックリストと照合したいときにオススメ?

f:id:swime:20180108170715j:plain
あまり使ったことはないのですが、一応紹介しておきます。
Sucuriによる悪性チェックや数種類のブラックリストと照合した結果を提示してくれます。

特徴

ブラックリストとの照合結果と、リンク情報をリストで表示してくれるので見やすい。


以上となります。
リンク先が怪しいなと思ったときにぜひ活用してくださいね!

SECCON Beginers 2017 in 長崎

SECCON Beginners 2017の長崎に参加してきたので、解けた問題のWrite-upを書きます。
ちなみに5位入賞(*‘∀‘)
バイナリは解き方が分かってても、短時間で解く気が起きない…笑

Misc

スコアサーバ入門 100

テスト用問題なのでパス!

てけいさん for びぎなーず 200

簡単な四則演算を100回連続で正解する問題
実はこの問題は去年解いたことあって、その時は自力で解いた(笑)
そこで今回は自動で解く!
f:id:swime:20171203155520j:plain
ソースコードを見ると、問題の数式だけdivタグを使っていることが分かる。
だからあとは、divタグから数式を抽出して計算し、結果を送信すれば良いだけ。
Pythonで書いたプログラムはこんな感じ。

# coding:utf-8

import requests
from bs4 import BeautifulSoup

url = 'http://172.20.1.1/php_math.php'
s = requests.session()
req = s.get(url)

for i in range(103):
    soup = BeautifulSoup(req.text, "lxml")
    if soup.find("div") is None:
        print(soup.text)

    else:
        div = soup.find("div").text
        quest = div.split(' ')
        x = int(quest[0])
        y = int(quest[2])

        if "+" in div:
            ans = x + y
        elif "-" in div:
            ans = x - y
        elif "*" in div:
            ans = x * y
        elif "/" in div:
            ans = x / y
        else:
            print(soup)
        req = s.post(url, data={"answer": ans})
        print(ans)

一瞬で計算終わってフラグゲット!

QR Puzzle 200

この3枚の画像を
f:id:swime:20171203162720j:plain
画像編集で繋げて絵文字部分を修正するだけ。
f:id:swime:20171203162909p:plain
あとはこのサイトにアクセスしてフラグゲット!

QRの仕組みを少しだけ知ってれば即解ける問題('ω')

Web

Fix it! 100

HTTP通信を見て、HTTPレスポンスのLoctionヘッダがリダイレクト先URL。
このURLにアクセスしてフラグゲット!
f:id:swime:20171203163439j:plain

Login 100

ゲストユーザで不正ログインする問題
普通にSQLインジェクションするだけ。
f:id:swime:20171203163635j:plain

Password 200

ログイン画面が問題だったと思う…
とりあえずソースコードを見ると、怪しいJavaScriptが。
f:id:swime:20171203164820j:plain

base64ってヒントが書いてあるので、それ以降の文字列をbase64でデコード。
するとJavaScriptコードが生成される。
あとはそのコードの処理を追って行くと、フラグゲット!

Forensic

Simple 100

Wiresharkで問題のpcapを開いて「ctf4b」で検索。
ダミーが含まれているけど、フラグ発見!
f:id:swime:20171203165943j:plain

Export 200

HTTP通信を見ると、tar.gzファイルをダウンロードしていることが分かる。
あとはWiresharkでこのファイルを復元して、解凍し、フラグが書かれたテキストファイルをゲット!

W4nn4cry? 300

ファイルシステムデータが渡される。
stringsコマンドで見てみると、何かのファイルをOpenSSLで暗号化していることが分かる。ついでに暗号化時のパスワードも記録されてる。
f:id:swime:20171203171935j:plain

flsコマンドで見ると、削除してるファイルが分かる。
f:id:swime:20171203172131j:plain

これをicatで抽出するが、中身は暗号化されている。
そこで、stringsコマンドで得た情報を基に、ファイルを復号する。
コマンドは以下。

openssl enc -d -aes-256-cbc -salt -k パスワード -in 復号対象のファイル名 -out 復号後に出力するファイル名

復号したファイルの中身にフラグあり!
WannaCryもAESで暗号化してるのかな?

Reversing

Raw 100

実行ファイルが渡される。
とりあえず実行したら笑われた('Д')
f:id:swime:20171203173830j:plain

が、stringsコマンドで簡単にゲット
f:id:swime:20171203173858j:plain

#14 John

問題

ksnctf.sweetduet.info
文字列が列挙されているだけ。

解法

とりあえずこの文字列を眺めてると、最後の行にこんな文章が。

user99:$6$SHA512IsStrong$DictionaryIsHere.http//ksnctf.sweetduet.info/q/14/dicti0nary_8Th64ikELWEsZFrf.txt:15491:0:99999:7:::

ハッシュ関数である「SHA512」が関係することが分かる。また、その後の文章の通り、記述されているURLではテキスト形式の辞書を入手できる。
これ以上分からないので、とりあえず「SHA512」や「John」についてググる
その結果、SHA512でソルト付きパスワードを生成すると、先頭文字列が「$6$」になるらしい。そして、「John the Ripper」という有名なパスワードクラックツールがあるらしい。
以上のことから、問題の文字列は21人分のパスワードを「SHA512」でハッシュ化したもので、それを「John the Ripper」を使ってクラックすればいいと推測できる。

Kali LinuxにはデフォルトでJohnが入っているみたいなので、Kaliで解析していく。また、解析する際には先程入手した辞書を利用する。
コマンドはこんな感じ。

# john --wordlist==[辞書のファイル名] [解析するパスワードファイル名]

すると1つずつ解析結果が表示されていき、1分くらいで解析が終わる。
f:id:swime:20171030174954j:plain

そして解析結果を見てみる。

# john --show [解析したパスワードファイル名]

f:id:swime:20171030175121j:plain

解析したパスワードの先頭文字を順番に並べると…

FLAG_aSiuJHSLfzoQkszD

フラグをゲット!!

ちなみにこの問題は、シャドウファイルと呼ばれる、パスワードを暗号化して保存したファイルを想定していると思われる。Linuxの/etc/shadowに保存されているらしい。
例えハッシュ化されていても、パスワード自体が弱かったら簡単に突破されることが分かったな(´-`).。oO