短縮 URL のブルートフォースが公開されています。 秘密の URL が一狩りされてしまうかもしれないのでお気をつけを。。そんなお話をします。
はじめに
サイバーディフェンス研究所 アドベントカレンダー 2022 の 14 日目(10 記事目)です。
大掃除なシーズンですね🧹。ということで社内で共有した雑メモを整理していたら shortened url hunting
と題したちょっとおもしろいメモを発掘したので公開してみたいと思います。
2021年3月頃に書いたもので、少し古い内容を含んでいたり、今とは変わっているところもあるかもしれません。 また当時けしからんドメインを調査していたので本稿では黒塗りとさせて頂きました。
前置きはそこそこに、、
ひと狩りいこうぜ!
shortened url hunting
短縮 URL をブルートフォースしたコレクションが公開されている。 機密情報の漏洩検出を試みる。 ペンテストなどへの活用を検討する。
References
- https://wiki.archiveteam.org/index.php/URLTeam
- https://archive.org/details/UrlteamWebCrawls
- https://github.com/utkusen/urlhunter
- https://portswigger.net/daily-swig/meet-urlhunter-the-urlteam-companion-and-shortened-url-search-engine
- https://grayhatwarfare.medium.com/how-to-search-urls-exposed-by-shortener-services-f68e199cd560
- https://shorteners.grayhatwarfare.com/
【ブログ注記】本稿のメモでは特に触れられてないのですが、最初の https://wiki.archiveteam.org/index.php/URLTeam は必見です。 短縮 URL アーカイブのすべてが記されているといっても過言ではありません。
urlhunter
https://github.com/utkusen/urlhunter
たぶんこのアプローチのパイオニア的存在? コマンド1つでアーカイブのダウンロード、解凍、検索と一見便利だが真面目に使い始めると厳しいものがある。
- ダウンロードに時間がかかる
- 解凍に時間がかかる
- 同じ日付で複数アーカイブが存在する場合(このケースはかなり多い)、最初の1つしか対象にならない
- 検索もコマンドでやってしまったほうが効率的
- 内部のロジック的に何度も重複作業をやってしまい効率が悪い
【ブログ注記】悪口ばかり言っているように見えますが、いろいろな気付きを与えてくれたツールでしっかり敬意を持ってます。。 現在もマージリクエストベースでメンテナンスは続いているようですが、状況は大きく変わっていないように見えます。
shorteners.grayhatwarfare
https://shorteners.grayhatwarfare.com/
たぶん出来たてホヤホヤ。
- 無料の範囲で見れるデータに制限があるが、かなり少ない印象
- 宣伝ブログでは期限切れドメイン、404返す URL など削除と謳っている
- アクセス出来なくても URL から漏洩する情報は狙いたいので削除しないでほしい
- 宣伝ブログにアーカイブの全データ保存にストレージが 500GB 必要と書いてあったが何の数字かわからない
- torrent 全て落とした状態で 400GB 弱
- 2014以前のデータを入れてなかった
- 入れたら450GB程度だと思うので多分このサイズ(解凍前全データ)のことを言ってる気がする
- 全解凍は出来てないが解凍後の状態だと 2TB 弱必要そう
- 解凍後は1.6TB程度になった
- torrent 全て落とした状態で 400GB 弱
- いまいち信用出来なくて、このサービスに課金するよりストレージ買いたい気持ちになった
【ブログ注記】また悪口ばかり言っているように見えますが、頑張って作ってると思います、自力でこれをやるのはなかなか大変です。 2022年12月現在、出来たてホヤホヤではないです。 ちゃんとデータをアップデートしながらサービス継続しているようです。 宣伝ブログと言っているのは https://grayhatwarfare.medium.com/how-to-search-urls-exposed-by-shortener-services-f68e199cd560 です。 これ以降でサービスの説明をしたものは見当たらなかったので、サービスの性質は大きく変わってないと思われます。
DIY する
アーカイブのリストを取得。 specはswagger。
{
"items": [
{
"identifier": "URLTeamTorrentRelease2013July",
"item_size": 79749135271
},
{
"identifier": "UrlteamWebCrawls",
"item_size": 3068235545
},
{
"identifier": "urlteam_2014-11-06-20-33-23",
"item_size": 67894663
},
{
"identifier": "urlteam_2014-11-06-22-09-43",
"item_size": 53847111
},
{
"identifier": "urlteam_2014-11-06-23-10-12",
"item_size": 37426337
},
...
torrent ファイルのダウンロード。 わざわざダウンロードしなくてもいい。
jq -r '.items[].identifier' list | fgrep urlteam_ | while read d; do wget "https://archive.org/download/${d}/${d}_archive.torrent"; done
BitTorrent daemon 起動。 オフィスでやる時はイタズラされないようにもうちょいセキュアにしたほうがいい。
transmission-daemon -w .
torrent ファイルを追加してダウンロード開始。 なんとなくまとめてはやらなかった。
\ls urlteam_2014-*_archive.torrent | while read t; do transmission-remote -a "$t"; done
解凍。パラレらない方が早かったりするかもしれない。
find . -type f -name \*.zip | xargs -P 8 -Ifile bash -c 'unzip -o -d $(dirname file) file; rm file'
find . -type f -name \*.txt.xz | xargs -P 8 -Ifile xz --decompress file
ここでストレージ不足したため 5TB の HDD を借用。 全期間(2014-11-06 - 2021-03-12)データは解凍後で約 1.6TB だった。
ターゲットのドメインやIPアドレスを target.lst へ書いて grep。 目茶苦茶時間かかるので DB 化するなどしたいところ。
fgrep -f target.lst -riah archives | tee target_url_tmp.log
cat target_url_tmp.log | cut -d\| -f2- | sort -u > target_url.log
今は見れなくなっている URL も多く見つかるが、intra の URL やユーザー情報が漏洩していたり明らかに脆弱な URL(パラメーターに SQL 文)など見つかった。 Basic 認証情報が入ってることもある。
2014以前のデータはtorrentで落とせなかったりデータ構造が違ったりでまだ手を出してない。
- URLTeamTorrentRelease2013July
- UrlteamWebCrawls
【ブログ注記】今だと fgrep は grep -F ですね。 コマンドがよくわからない時はシェル芸関連記事もどうぞ!
examples
cyberdefense.jp
大方の予想通り、おもしろいものは無い。
http://cyberdefense.jp/ift.html
http://io.cyberdefense.jp/archive/category/Development
http://io.cyberdefense.jp/entry/2016/05/12/%E3%82%B9%E3%83%9E%E3%83%9B%E3%81%B8%E3%81%AEBurp%E3%81%AE%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
http://io.cyberdefense.jp/entry/2016/05/13/Burp_Extension%E9%96%8B%E7%99%BA_-_MessagePack
http://io.cyberdefense.jp/entry/2016/06/22/Docker%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%80%81Apache_Struts2%E3%81%AE%E8%84%86%E5%BC%B1%E6%80%A7S2-037%E3%81%AE%E3%82%84%E3%82%89%E3%82%8C%E7%92%B0%E5%A2%83%E3%82%92%E6%89%8B%E8%BB%BD%E3%81%AB%E4%BD%9C
http://io.cyberdefense.jp/entry/2016/06/28/%E7%B5%84%E8%BE%BC%E6%A9%9F%E5%99%A8%E3%81%AE%E8%A8%BA%E6%96%AD%E3%83%BB%E7%B7%B4%E7%BF%92%E9%A2%A8%E6%99%AF%EF%BC%88%E8%B6%B3%E4%B8%8A%E3%81%92%E7%B7%A8%EF%BC%89
http://io.cyberdefense.jp/entry/2016/09/23/Burp_Extension_JSON_Pretty%E3%81%AE%E5%85%AC%E9%96%8B
http://io.cyberdefense.jp/entry/2016/12/21/%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E8%A8%BA%E6%96%AD%E3%81%AE%E5%86%85%E8%A3%BD%E5%8C%96%E3%81%AB%E5%90%91%E3%81%91%E3%81%A6_%E7%AC%AC%E4%B8%80%E5%9B%9E%E3%80%9CWeb%E3%82%A2%E3%83%97
http://io.cyberdefense.jp/entry/2017/02/09/twitter%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92C2%E3%82%B5%E3%83%BC%E3%83%90%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%E3%81%99%E3%82%8BAndroid%E3%83%9E%E3%83%AB%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE
http://io.cyberdefense.jp/entry/2017/06/12/Server-Side_Template_Injection
http://michellekelly.men/track/ins/freshbase?IN_link=cyberdefense.jp#01qMwZz6wX
http://michellekelly.men/track/ins/freshbase?IN_link=cyberdefense.jp#Xes9wnQ1Sw
http://michellekelly.men/track/ins/freshbase?IN_link=cyberdefense.jp#tAYhPv8ASP
http://www.cyberdefense.jp/company_profile/index.html
http://www.cyberdefense.jp/company_profile/prerelse10001.html
http://www.cyberdefense.jp/company_profile/prerelse10005.html
http://www.cyberdefense.jp/en/seminar/exploit/
http://www.cyberdefense.jp/product/oxygenforensic.html
http://www.cyberdefense.jp/seminar/hack/webapp.html
http://www.cyberdefense.jp/seminar/security/network.html
http://www.cyberdefense.jp/service_consulting/
http://www.cyberdefense.jp/service_seminar/seminar.html
http://www.cyberdefense.jp/service_seminar/seminar02.html
http://www.cyberdefense.jp/service_seminar/seminar09.html
http://www.google.com/url?sa=X&q=https://www.cyberdefense.jp/seminar/hack/network.html&ct=ga&cad=CAcQARgBIAEoATAAOABA3tWe7QRIAlgAYgVqYS1KUA&cd=DqJ6ONYhu4Y&usg=AFQjCNEh2v-IvHLUJjJljOS8kXMiezPRMQ&utm_source=twitterfeed&utm_medium=twitter
https://io.cyberdefense.jp/entry/2018/06/29/Midnight_Sun_CTF_2018_Finals%E5%8F%82%E5%8A%A0%E8%A8%98
https://io.cyberdefense.jp/entry/2018/10/10/Voltage_Fault_Injection_%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F
https://io.cyberdefense.jp/entry/2018_11_novelty_usb_storage
https://www.cyberdefense.jp/news/notice/post-18.html
https://www.cyberdefense.jp/seminar/malware/
https://www.cyberdefense.jp/wanted/
██.██
大方の予想通り、多すぎて見きれない。80万件ほどヒットする。
認証情報漏洩ぽいの(http://user:password@fqdn/ 形式のURL)。
http://████-██████@███.██.██/
http://█████████-█████████@███.██.██/
http://████-█████@████-███.██.██/
http://███████.██████@████.██.██/
http://██████@███.███.██.██/
http://███-████@████.████.███.██.██/
http://██████@████.██.██/
http://█████-█████████-██-███-██@████.██.██/
http://███@██.████.██.██/
http://██████-████@███.██.██/
intra ぽいの
http://intra.███.████.██████.██.██
http://intra.████.██.██
http://intra.█████.██.██
http://intra.███.██.██
http://intra.████.█████.██.██
http://intra.████.██.██
http://intra.████.██.██
http://intra2.████.██.██
http://intra3.████.██.██
http://intrasearch.█████-██.████.██.██
http://██-█████-intra.█████.████.██.██
http://█████████-intra.█████-██.████.██.██
http://www.intra.████.████.██.██
https://apis.intra-bs.████.██.██:5008
https://apis.intra-bs.████.██.██:5808
https://████.intra-bs.████.██.██
https://████.intra-bs.████.██.██:7004
https://cybozu.intra-bs.████.██.██
https://intra.█████.██.██
https://kaikei.intra-bs.████.██.██
https://portal.intra-bs.████.██.██
https://portal.intra.███.██.██
https://sso.intra-bs.████.██.██
https://web.intra-bs.████.██.██
メールアドレスぽいの
$████████.██████████@████.██.██
██.████@███.██████.███.██.██
███████+█████████@█████.██.██
████.█████████@████.██.██
█████████████████@█.██████.██.██
███.█████-███@████.██.██
███████████████@███.██.██
█████████.█████@████.██.██
██████████████@███.██.██
████████████████@█████.██.██
...
【ブログ注記】メールアドレスぽいのは量が多かったのですが、どうせ黒塗りなのでということでカットしました。 あとは実践あれ、ということでご容赦ください。。
DB化を検討する
データが巨大過ぎて素直にDB化は厳しく、リソースにものを言わせるしか無さそう。 特定のドメインが結構な割合をしめていたり、URL以外のデータが登録されていたりで適当にフィルタするのもよさそう。
ドメイン毎に件数をカウントし、TOP 30
hostname | count |
---|---|
summify.com | 295319260 |
foursquare.com | 266742081 |
0rz.tw | 259685573 |
feedproxy.google.com | 180099599 |
www.google.com | 160040597 |
www.facebook.com | 135144616 |
twitter.com | 128779594 |
www.amazon.com | 126280290 |
flipboard.com | 103263490 |
www.youtube.com | 96137270 |
news.google.com | 86004003 |
apps.facebook.com | 81421967 |
64949125 | |
formspring.me | 45214478 |
www.etsy.com | 43674385 |
www.formspring.me | 42427064 |
www.digbig.com | 40104631 |
community.siamphone.com | 38104698 |
ow.ly | 37584758 |
www.photoreflect.com | 37552752 |
plus.google.com | 36541998 |
admin.google.com | 36398527 |
maps.google.com | 35650312 |
ameblo.jp | 34417452 |
www.state.gov | 31827599 |
www.likemytweets.com | 30818420 |
www.cbfeed.com | 29942693 |
drive.google.com | 29588658 |
shelby.tv | 29487232 |
p.feedblitz.com | 27873849 |
.jp
の TOP 30
hostname | count |
---|---|
ameblo.jp | 34417452 |
www.amazon.co.jp | 26437365 |
rss.rssad.jp | 6474103 |
group.ameba.jp | 5634669 |
blog.goo.ne.jp | 4996555 |
blog.livedoor.jp | 4869004 |
rd.yahoo.co.jp | 4367992 |
busnavi.keihanbus.jp | 2737107 |
www.newgenji.co.jp | 2573669 |
www.gmo-toku.jp | 2408218 |
photozou.jp | 2402721 |
c.cocacola.co.jp | 2395049 |
ponpare.jp | 2341697 |
p.twipple.jp | 2174043 |
www.nicovideo.jp | 2092636 |
travel.gpoint.co.jp | 1960111 |
dic.nicovideo.jp | 1895247 |
www.takaratomy-arts.co.jp | 1851369 |
kente.jp | 1817796 |
hb.afl.rakuten.co.jp | 1796343 |
www.google.co.jp | 1593269 |
adlatte.jp | 1546513 |
www.adlatte.co.jp | 1529988 |
reg34.smp.ne.jp | 1431659 |
m.homes.co.jp | 1349291 |
d.hatena.ne.jp | 1256912 |
headlines.yahoo.co.jp | 1248351 |
s.kente.jp | 1246479 |
www.navitime.jp | 1164058 |
newsformat.jp | 1156994 |
TOP 1000 除外しつつ mariadb load data into.. でやってみたがまだ厳しい。 久々 elasticsearch るか、と思い始めたところで時間も取れなくなってきて終了〜
【ブログ注記】データの件数を減らす目的で集計をとっていただけで、このリストに登場するドメインがセキュリティ的にどうこうという話はありません。
おわりに
唐突に終了するあたりが社内の雑メモクオリティ感といったところですが、全く知らなかった!という方には良くも悪くも役立つ情報を提供できたのではないかと思います。 インターネットに公開したつもりのない情報を誰かに知られてしまっていたり、窃取されてしまっていたりするかもしれません。 意図せず短縮 URL に変換されてしまっている、ということもあると思います。
しかし、短縮 URL に頼らずとも憲法違反にならないようにしながらネットワークテレメトリらしきものを収集する記事で紹介されたような便利な OSINT ツールがあったり、胸焼けするくらい大量の流出情報のコレクションが易易と入手できる状況もあるので、実際にこの手法が積極的に活用されているかはやや疑問があります。
P.S. 基本的にオンラインゲームをやらないので、ひと狩りいこうぜ!したことはありません(笑)