Golang で whois 情報を取得する

Golangwhois 情報を取得したい時は
github.com
これを使うと便利。
シンプルにwhois情報を呼び出せる上に軽いパーサも付いている。

下記コマンドでインストール。

go get github.com/undiabler/golang-whois

インストール後は下記のようなコードで whois 情報を取得できる。

package main

import (
	"fmt"
	"github.com/undiabler/golang-whois"
)

func main() {
	result, _ := whois.GetWhois("example.com")
	fmt.Println(result)
}

結果

go run main.go
   Domain Name: EXAMPLE.COM
   Registry Domain ID: 2336799_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.iana.org
   Registrar URL: http://res-dom.iana.org
   Updated Date: 2018-08-14T07:14:12Z
   Creation Date: 1995-08-14T04:00:00Z
   Registry Expiry Date: 2019-08-13T04:00:00Z
   Registrar: RESERVED-Internet Assigned Numbers Authority
   Registrar IANA ID: 376
   Registrar Abuse Contact Email:
   Registrar Abuse Contact Phone:
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Name Server: A.IANA-SERVERS.NET
   Name Server: B.IANA-SERVERS.NET
   DNSSEC: signedDelegation
   DNSSEC DS Data: 31589 8 1 3490A6806D47F17A34C29E2CE80E8A999FFBE4BE
   DNSSEC DS Data: 31589 8 2 CDE0D742D6998AA554A92D890F8184C698CFAC8A26FA59875A990C03E576343C
   DNSSEC DS Data: 43547 8 1 B6225AB2CC613E0DCA7962BDC2342EA4F1B56083
   DNSSEC DS Data: 43547 8 2 615A64233543F66F44D68933625B17497C89A70E858ED76A2145997EDF96A918
   DNSSEC DS Data: 31406 8 1 189968811E6EBA862DD6C209F75623D8D9ED9142
   DNSSEC DS Data: 31406 8 2 F78CF3344F72137235098ECBBD08947C2C9001C7F6A085A17F518B5D8F6B916D
   URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2018-10-08T12:18:07Z <<<

For more information on Whois status codes, please visit https://icann.org/epp

NOTICE: The expiration date displayed in this record is the date the
registrar's sponsorship of the domain name registration in the registry is
currently set to expire. This date does not necessarily reflect the expiration
date of the domain name registrant's agreement with the sponsoring
registrar.  Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.

TERMS OF USE: You are not authorized to access or query our Whois
database through the use of electronic processes that are high-volume and
automated except as reasonably necessary to register domain names or
modify existing registrations; the Data in VeriSign Global Registry
Services' ("VeriSign") Whois database is provided by VeriSign for
information purposes only, and to assist persons in obtaining information
about or related to a domain name registration record. VeriSign does not
guarantee its accuracy. By submitting a Whois query, you agree to abide
by the following terms of use: You agree that you may use this Data only
for lawful purposes and that under no circumstances will you use this Data
to: (1) allow, enable, or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail, telephone,
or facsimile; or (2) enable high volume, automated, electronic processes
that apply to VeriSign (or its computer systems). The compilation,
repackaging, dissemination or other use of this Data is expressly
prohibited without the prior written consent of VeriSign. You agree not to
use electronic processes that are automated and high-volume to access or
query the Whois database except as reasonably necessary to register
domain names or modify existing registrations. VeriSign reserves the right
to restrict your access to the Whois database in its sole discretion to ensure
operational stability.  VeriSign may restrict or terminate your access to the
Whois database for failure to abide by these terms of use. VeriSign
reserves the right to modify these terms at any time.

The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.

今回は触れていないけど whois のパースってすごく大変だよね。
早く RDAP の時代来て欲しい。

10進数表記のIPアドレスでwebサイトにアクセスする

はじめに

なんとなくGitHubを漁っていたら面白そうなリポジトリを見つけた。

github.com 内容はIPアドレスを10進数や16進数、8進数に変換してwebサイトにアクセスするというもの。 バラバラの基数でも最終的にIPアドレスっぽくなればアクセスできるみたい。 そういえば10進数のIPアドレス表記を利用する攻撃活動もありましたね。 悪用ダメ絶対。

実装を見てみる

https://github.com/OsandaMalith/IPObfuscator/blob/master/ip.c なるほど。 1バイトずつ読んで基数変換しているみたい。

実装してみた

なんとなくGo言語で実装してみた

github.com

f:id:famasoon:20180804191155p:plain

すごく可読性の低いコードになってしまったので後々、修正する。 正直あまり実用性はない。

追記

画像だけ出されてもよくわからなそうな気がするので出力方法も書いておく。

$ git clone https://github.com/famasoon/go-IPObfuscator
$ cd go-IPObfuscator
$ go run main.go
Enter IP Address: 222.165.163.91
http://3735397211
http://0xde.0xa5.0xa3.0x5b
http://0336.0245.0243.0133
http://0x00000000de.0x00000000a5.0x00000000a3.0x000000005b
http://00000000336.00000000245.00000000243.00000000133

http://0xde.0xa5.0xa3.91
http://0xde.0xa5.163.91
http://0xde.165.163.91

http://0336.0245.0243.91
http://0336.0245.163.91
http://0336.165.163.91

http://0xde.0xa5.41819
http://0336.0245.41819
http://0xde.0245.41819
http://0xde.10855259
http://0336.10855259
http://0xde.0xa5.0243.0133
http://0xde.0245.0243.0133

出力されたリンクを踏むとGoogle に飛ぶ。 結構、見た目を変えてもアクセスできるので奥が深い。 おわり

脆弱性ブローカーについて

概要

脆弱性報告について調べていたら脆弱性ブローカーという存在について知りました。 その後、いろいろ調べたまとめです。

脆弱性ブローカーとは

脆弱性ブローカーとは、脆弱性情報を買い取りそれを政府機関や研究機関や金融機関といった組織に転売する業者のこと。 バグバウンティプログラムやZDIといった研究コミュニティと違い、情報は公になること無く転売される。 転売された情報は法執行機関が操作に使う他、諜報機関が活動するために使われると考えられている。 転売された情報がサイバー戦争で活用されることから『現代の死の商人』と呼ばれる。 売買される情報の価値について、以前まで非公開であることが多かったが、2015年11月18日『Zerodium』と呼ばれる企業が価格表を公開し、それまで脆弱性ブローカーの存在を知らなかった人も含めて話題になった。

Zerodium

Zerodiumはアメリカの脆弱性ブローカー。 創業者であるChaouki Bekrar氏は、フランスのセキュリティ企業である『Vupen Security』のCEOとしても有名。 Vupen Securityは脆弱性情報の転売を行う傍ら、独自に脆弱性を発見しそれらを各国政府機関へ提供していた企業。 しかしHacking Teamの情報流失事件の際、似たようなことをやっているVupen Securityも批判の対象になり活動しにくくなったことからZerodiumを起ち上げたとされている。 さて、前述の通り脆弱性情報の価格表を公開し話題になったZerodiumだが、ここで2016年12月3日現在の価格表を見てみる。 f:id:famasoon:20161202225616p:plain 欲しがっている情報は任意コード実行やサンドボックスのエスケープやバイパス、権限昇格を狙うものが多い。 いかにも法執行機関や諜報機関が欲しがりそうな情報だ。 脆弱性を報告する時はZerodiumと独占契約を結ばなければならないようだ。 FAQでは受け付ける脆弱性の種類についても書かれていて、これを見る限り部分的な脆弱性情報でも悪用可能であれば買い取ってくれるそう。 最高額が$1,500,000で本当に驚き。

Expocod

Expocodはロシアの脆弱性ブローカー。 リンク先で見てもらえば分かる通り、ここも価格表を公開している。 Zerodiumの価格と比較すると見劣りしますが、それでもすごい額。

EXODUS

EXODUSはアメリカのブローカー。 脆弱性情報の提供はここで受け付けている。 EXODUSは上記2つのブローカーと同じく0dayの脆弱性情報を買い取っているが、その他にもN-dayの情報も買い取っている。 N-dayの情報とは、既に情報が公開されパッチが当てられた脆弱性のこと。 既知の脆弱性を突く攻撃も需要があるみたい。 報酬の支払いは通常の電信送金やウェスタン・ユニオン、ビットコインでの支払いに対応しているようだ。

Mitnick Security Consulting

伝説のハッカーであるケビン・ミトニック氏がブローカーサービスをやっている。 Mitnick Security Consulting 価格表は公開されていないが興味深い。

さいごに

いくつか脆弱性ブローカーについて挙げてみた。 これを読んで『現代の死の商人』とも呼ばれる彼らの動向に注目する人が増えればいいな~と思う。 ここまで挙げたもの以外にもブローカーはいると思うので、知っている方はよければ教えてください。

GitHub Dorks

エンジニアの方にとって無くてはならない存在と言っても過言ではないGitHub。 今回はそのGitHubについて書いていきます。
本稿は読者のセキュリティを高める目的で書いています。本稿の内容で得た情報を用い自身の管理下にないネットワークやコンピュータへアクセスした場合、不正アクセス行為と判断され、法的措置を取られる可能性があります。同内容の調査を行い被ったいかなる被害についても、 投稿者は一切の責任を負いかねます。

Google Dorks

さて、タイトルのGitHub Dorksについて書く前に1つ説明しなくてはならないことがあります。
Google Dorks』です。
これはGoogleで検索する際、検索オプションを用いることで本来見つけにくい情報を見つける方法の総称です。
一時期、Twitterで話題になった「filetype:pdf 社外秘」で検索するというのもその1つです。
オプションをまとめたサイトや実際に検索するツールなんかも出ています。
webサイト側の公開設定がおかしいせいでこのような事が起きているようです。 Google側もこの手法について把握しているらしく、検索オプションを多用するとキャプチャを求めてきたりバンしてきます(Torを使っているとまず間違いなくやられる)

GitHubでの応用

Google Dorksは

ならGoogle以外のサイトでも使うことができます。
この手法をGitHubで使ったものが『GitHub Dorks』です。
GitHubはエンジニアがコード類を置く場所という性質上、非常にセンシティブな情報が置かれやすいです。
例として

  • SSH秘密鍵
  • ネットワークの構成情報
  • 社内で使っているツール
  • 何かのサービスで認証するための情報
  • etc...

GitHubにそんな情報上げるわけないだろ」と思う方もいるかもしれないですが、これが現実です。
.gitignoreを利用していない・不必要なファイルがリポジトリに含まれているといった設定不備があったり、リポジトリが全世界に公開されていることを理解していなかったりでこのような事が起きているようです。
これもGoogle Dorksと同様にツールが出ています。

最後に

どれだけ注意していても人間ミスする時はミスするので「自分はGitHubに変な情報を上げていないぞ」と思っている人も今一度確認してみてください。