ホワイトハッカーの心得 part.1

プログラミング学習帳 プログラミング

ハッキングにも色んな用語やツールがあります。たとえばwiresharkはネットワークで収集したパケットを分析するためのツールであり、zenmapはネットワークに接続されているすべてのクライアントとその詳細情報が検出するツールです。今回はハッカー入門ということで、彼らが理解し日常的に使っている用語を確認してみましょう。

一般的な知識

OS

Operating Systemの略。コンピューターの基本ソフトウェアの一つ。コンピューターのハードウェアとアプリケーションソフトウェアの間で仲介役を果たし、ハードウェアのリソースを管理し、ユーザーとのインタラクションを可能にする。OSの役割は主に4つ。①リソース管理。OSはコンピューターのリソース(CPUやメモリやストレージ)を管理する。これにより、アプリケーションがリソースを利用できるようになる。②プロセス管理。OSは、実行中のプログラムやプロセスを管理する。これには、プロセスのスケジューリング、メモリ管理、プロセス間通信などが含まれる。③ファイル管理。OSは、データの永続的な保存とアクセスを可能にするファイルシステムを提供する。これにより、ユーザーはファイルを作成、保存、編集、削除できる。④ユーザーインターフェース。OSは、ユーザーとコンピューターシステムとの間のインタラクションを可能にする。これには、コマンドラインインタフェース(CLI)やグラフィカルユーザーインタフェース(GUI)が含まれる。一般的なOSには、Windows、macOS、Linux、iOS、Androidなどがあります。

CLI(コマンドラインインタフェース)

コマンドラインインターフェースは、テキストベースのインタラクティブなシステムで、ユーザーがテキストベースのコマンドを入力してコンピューターと対話することを可能にする。CLIは、一般的にUnixやLinuxなどのオペレーティングシステムや、コマンドプロンプト(Command Prompt)やPowerShellなどのWindowsの環境で使用される。CLIはGUIよりも高度な制御や自動化が可能であり、プログラマーやシステム管理者などの技術者によってよく利用される。

GUI(グラフィカルユーザーインタフェース)

GUIは、ユーザーがコンピューターと対話するためのインターフェースであり、アイコン、ウィンドウ、メニュー、ボタンなどのグラフィカルな要素を使用して情報を表示し、ユーザーがマウスやキーボードを使って操作することができます。GUIは、操作が直感的であり、ユーザーがコンピューターの機能を容易に利用できるようにします。一般的なGUIの例には、WindowsやmacOSのデスクトップ環境、スマートフォンやタブレットのアプリケーション、ウェブブラウザのインターフェースなどがあります。

graphical interface

操作性が直感的なインターフェースのこと。グラフィカルな要素を使って情報を表示し、ユーザーが操作することを可能にする。これには、ユーザーが画像や図形などの視覚的な要素を使って情報を理解し操作するシステムが含まれる。GUIより広い概念であり、ユーザーが視覚的な要素を使って情報を理解し、操作するインターフェース全般を指す。GUIはそのうちの一つであり、特にウィンドウやメニュー、ボタンなどの要素を持つインターフェースを指す。

SSH

「Secure Shell」の略。ネットワーク経由で安全にリモートコンピューターにアクセスするためのプロトコルとその関連技術である。SSHは、リモートマシンへのログインやファイルの転送など様々なネットワーク操作に使用される。SSHは通信を暗号化することでセキュリティを確保する。これにより、パスワードやデータの送信が安全に行われ、外部の盗聴者から情報を守ることができる。SSHは、セキュアな通信を提供するため、リモートサーバーへの安全なアクセスや、ファイルの転送、暗号化トンネルの設定など、さまざまな目的で広く使用されている。一般的なSSHクライアントは、LinuxやmacOSなどのUnix系オペレーティングシステムには標準で含まれており、Windowsなどの他のシステムでもさまざまなクライアントソフトウェアが利用可能だ。SSHは、ネットワークシステム管理やセキュアなリモートアクセスの実装など、さまざまなシステム管理タスクに不可欠な技術である。

プロセッサー

2つとか4つとか。コンピューターシステム内で計算やデータ処理を行う主要な電子デバイスだ。CPU(Central Processing Unit)とも呼ばれる。プロセッサーは、コンピューターや電子機器の中核部分であり、命令を受け取り、それらを実行してデータを処理する。プログラムや命令列を解釈し、その命令に応じて算術演算や論理演算、データ移動などの操作を行ったりする。

メモリ量

2GBとか4GBとか。コンピューターシステム内でデータやプログラムの一時的な保存や処理に使用されるハードウェアデバイスである。コンピューターのメモリは、データを読み書きするための領域であり、プロセッサーがアクセスして情報を取得したり保存したりするのに使用される。メモリには主記憶装置と補助記憶装置がある。主記憶装置にはRAM(Random Access Memory)が含まれる。補助記憶装置にはHDDやSSDが含まれる。

64bit / 32bit

CPU(処理装置)が一度に扱うことができるデータのbit数である。32bitはCPUが一度に32bitのデータを処理できることを示し、一度に最大で4GBのRAM(Random Access Memory)を扱える。過去は32bitが一般的だったが今は64bitが主流。64bitは非常に大きなメモリ空間を扱うことができ、通常は16エクサバイト以上の物理メモリアドレス範囲をサポートする。

BIOS

Basic Input/Output System(入出力システム)の略。コンピューターの起動時に最初に実行されるプログラムであり、ハードウェアとソフトウェアの間のインターフェースを提供する。①ハードウェアの初期化、②構成情報の提供、③ユーザーインターフェースの提供、④ブートローダーの起動が主な機能だ。近年ではUEFI(Unified Extensible Firmware Interface)という新しい規格に置き換えられつつある。マシンを仮想化(virtualize)するためにはBIOSの設定が必要になる。BIOS設定をするキーはコンピュータやマザーボードによって異なる。DellならF12だし HPならF9だし AsusならEsc, F8だ。BIOS設定に入るために必要なボタンはネットで調べれば出てくる。電源ボタンを押して、電源が入っている間、BIOS設定に入るために特定のキーを押し続ける。ここで仮想化を有効にする。仮想化の有効は vt-xやamd-vやsvmなどと呼ばれる。

7-zip

ファイル拡張子は”.7z”であり、これは7-zipというOSS(Open-source-software)を使って生成される圧縮アーカイブ形式である。サイズを圧縮して配布すればダウンロードに時間がかからない。これを解凍して中身を見るには別途プログラムをインストールする必要がある。MacOSでは別途のプログラムは必要なくてダブルクリックで開ける。

ハッキング

ハッキングとは、 本来アクセスできないはずのシステムにアクセスすることだ。例えば、 アクセスできないはずのEメールアカウントにログインすることは、 そのアカウントをハッキングしているとみなされるし、アクセスできないはずのリモートコンピューターにアクセスすることは、 そのコンピューターをハッキングしているとみなされる。システムに侵入する方法は数多くある。

Black-hat Hackers / White-hat Hackers / Gray-hat Hackers

Black-hat Hackersは違法にシステムをハッキングしてお金を盗んだりする人たち。White-hat Hackersはハッキングの許可を得たシステムだけに侵入して、システムのセキュリティをテストする人たち。倫理的(ethical)ハッカーはこの領域にいる。Gray-hat Hackersはシステムのセキュリティをテストする許可がなくてもハッキングするが、お金を盗んだりせずシステムの管理者に伝えたりする人たち。

TCPパケット

TCPはTransmission Control Protocolの略。TCPパケットは、TCPプロトコルを使用してデータを送信する際に使用されるデータユニットである。TCPは、インターネットやローカルネットワークなどのネットワーク上で信頼性の高いデータ通信を提供するためのプロトコルだ。TCPパケットはヘッダー、データ、オプションで構成される。ヘッダーには送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号などの情報が含まれる。通信の制御やデータの整合性を確保するために使用される。データ部分には実際に送信されるデータが含まれる。TCPパケットにより、データの損失や重複の検出、通信の効率的な制御が可能になる。

UDPパケット

UDPはUser Datagram Protocolの略。インターネットプロトコルスイートの一部であり、データを送信するための簡易なプロトコルである。UDPは、IPネットワーク上でのデータグラムの交換に使用されるが、信頼性やエラー修復などの機能は提供しない。UDPは、データの到着や整合性の保証が必要ない場合や、速度やリアルタイム性が重要な場合に適している。データの正確性やセキュリティが重要な場合には、TCPのような信頼性の高いプロトコルを使用する。

専門的な知識

Linux

windowsやMac OSと同じOSの1つ。無料で使えるオープンソースとしては世界で唯一無二。再配布可能なので、有志が自由にカスタマイズして新たなLinuxを再配布している。それがLinux distributionというもの。

Kali Linux

DebianをベースにしたLinux Distributionで、 Kaliと Debian Linux Distributionの唯一の違いは、Kaliには多くのハッキングツールや侵入テストツールがあらかじめインストールされ、 設定されているということだ。 Kaliをインストールすればすぐに多くのハッキングツールが使える。

BeEF

ブラウザ悪用フレームワーク。ターゲットブラウザに対して多くの攻撃ができる。Beefを使うためには、ターゲットのブラウザにBeefのコードを注入しないといけない。Beefコードをターゲットブラウザに注入するために Bettercapというプログラムを使う。詳細はpart.2で取り上げる。

バックドア

ターゲット・コンピューターにすでにインストールされているバックドアがあれば、バックドアに接続するだけでターゲットコンピューター上であらゆるLinuxコマンドを実行できる。コンピューターシステムやソフトウェアに意図的に組み込まれた秘密の手段であり、システムのセキュリティを無効にしたり不正なアクセスをするために使用される。バックドアは、悪意のある攻撃者やシステムの作成者によって設計される。不正アクセスや監視が目的となる。セキュリティの脆弱性を利用してシステムに組み込む。いくつかのプログラムやサービスはバックドアが埋め込まれた状態で出荷/提供されている。Gaining Accessのサーバーサイド攻撃ではこれを悪用する。

ハッキング・ラボ

ラボは実験できる場所。新しい攻撃を試みたりテストしたりする場所。1台で異なるOSの仮想マシンを作るためには VMwareを使う。

VMware

仮想化ソフト。PCを仮想化させて複数の仮想マシンを持つことができる。すべてのマシンを隔離することができ、ホストマシンに影響を与えずに仮想マシンを壊したり破棄できる。複数のOSをインストールできる。Virtual Machine Libraryですべての仮想マシンのリストが表示される。Post-Connection Attackではwindowsを仮想マシンとしてインストールする。windowsのvirtual imageをダウンロードして解凍する。これをVMwareにインポートする。仮想マシンはメモリ量やプロセッサー数を自由に変更できる。

スナップショット(snapshot)

スナップショットは、ある時点でのシステムやデータの状態をコピーして保存することだ。データベース、仮想マシン、ファイルシステムなど、さまざまなコンピューターシステムで使用される。データのバックアップやシステムの状態管理が目的とされる。

リバースエンジニアリング

製品やソフトウェア、システムなどの内部構造や動作原理を解析し、理解するプロセスを指す。つまりリバースエンジニアリングは、既存の製品やシステムを解析し、その機能や設計について情報を収集しようとする技術や手法だ。製品や機器の内部構造や動作原理を理解するために使用される。競合製品の分析や互換性の確認が可能になる。ソフトウェアのリバースエンジニアリングは、プログラムの動作やアルゴリズムの解析、脆弱性の発見、不正行為の検出などの目的で行われる。セキュリティの強化に使われる。

ネットワークハッキング

ネットワークがどのように機能するのか、デバイス同士がどのように通信するのか、この通信方法を悪用して周囲の接続をすべてコントロールする方法、 WifiキーをクラックしてWEP/ WPAやWPA2を使用しているかどうかに関わらずWifiネットワークにアクセスする方法、 データを傍受してユーザー名、パスワード、 チャットメッセージ、 同じネットワーク上で誰かが行うあらゆることをキャプチャする方法などを学ぶ。 以下のPre-connection attacks, Gaining Access, Post-connection attacksはすべてネットワークハッキングの中にある分野だ。

⑴Pre-connection Attacks

ネットワークに接続する前にできる攻撃(Pre-connection Attacks)。ネットワーク・インターフェイスを備えたコンピューター(Wi-Fiアダプターなど)はあれば良い。

⑵Gaining Access

Wi-Fiネットワークにアクセスする方法(Gaining Access)。Wi-Fiキーをクラックし、WEP、 WPA、 WPA2のどれであってもWi-Fiネットワークにアクセスする。

⑶Post-connection Attacks

ネットワークに接続されていればすべての攻撃が可能だ(Post-connection Attacks)。Wi-Fiでも有線ネットワークでも関係ない。ネットワーク上の接続を傍受し、 ユーザー名、パスワード、 URL、 チャットメッセージなど、 その中で送信されるすべてをキャプチャできる。 空中で送信されるデータを修正することもできるので、偽のアップデートを提供したりロードするページに邪悪なコードを注入したり様々な攻撃ができる。

Gaining Access

サーバーやパーソナル・コンピューターにアクセスする。まず、 ターゲットに関する包括的な情報を収集して脆弱性を発見し、 それを悪用してターゲットシステムを完全にコントロールする。 それだけでなく、 検出不可能なバックドアを生成し、ソーシャルエンジニアリングを使って、PDFや画像などターゲットが興味を持ちそうなファイルと見せかけて配信する。 また、 ターゲットにメールを配信する際に、友人や上司などターゲットがやり取りしているアドレスから送信されたかのように偽装する。

Post Exploitation

コンピュータにアクセスしたと仮定して、 アクセス後に何ができるか。meterpreter sessionを取得した後の話だ。まずはターゲットコンピューターへのアクセスを維持する。ファイルのダウンロード、 アップロード、 ウェブカメラの起動、キーロガーの起動を行う。ターゲットコンピュータを軸にして、同じネットワーク上の他のコンピュータを悪用する方法も見ていく。

website hacking

ウェブサイトがどのように機能するのか、ターゲットとなるウェブサイトに関する包括的な情報を収集する方法、そしてターゲットとなるウェブサイトを完全にコントロールすることを可能にする危険な脆弱性を発見して悪用する。

ネットワークハッキング

ネットワークの基本

ネットワークには互いに接続されたクライアントが多数存在する。クライアントはデータやリソースを共有するためにネットワークに接続する。リソースの最たる例はインターネットである。ユーザーはインターネットにアクセスするために、ネットワーク(Wi-Fiネットワークや有線ネットワーク)に接続している。Wi-Fiでも有線でも、すべてのネットワークは同じ原理で動いている。 必ずサーバーという装置を持っていて、このサーバーはルーターでありアクセスポイントである。このルーター(=サーバー=アクセスポイント)は、リソースにアクセスできる唯一のデバイスである。そのため、 クライアントは、 ネットワークに接続しても、リソースに直接アクセスすることはできない。彼らがリソースにアクセスする唯一の方法は、アクセスポイントを経由することである。

パケット

同じネットワーク上のデバイスはパケットを使って互いに通信する。パケットとは空中で送信されるリクエストとレスポンスのすべてを指す。データはパケットとしてクライアントとアクセスポイント(ルーター)間で転送される。インターネット上での行動はすべてパケットとして送信されるため、それをキャプチャして分析する。各パケットは送信元MACと宛先MACを持ち、送信元から宛先へと流れる。クライアントが送信元MACを持ち、アクセスポイント(ルーター)が宛先MACを持つ。クライアントがルーターにパケットを送信する場合、宛先MACをルーターのMACアドレスに設定する。クライアントもアクセスポイント(ルーター)も、自身のMACアドレスを宛先MACとするデータのみを受信している。しかしワイヤレスネットワークではパケットが空中で送信されるため、範囲内にいればすべての通信をキャプチャできる。だから、 私たちのMACアドレスを宛先MACとして持っていなくても、それをキャプチャすればいいのだ。そのためには、 ワイヤレスインターフェースの動作モードをモニターモードで動作するように変更する必要がある。

ワイヤレスアダプター(ネットワークアダプター)

ワイヤレスアダプターはコンピュータに接続するUSBデバイスのことで、コンピュータがWi-Fiネットワークと通信できるようにする。コンピュータ内にもワイヤレスカードが内臓されているが、これはハッキングに向かない。① monitor mode, ②packet injection, ③ AP modeをサポートしているものが必要だ。推奨されるチップセットは① RealTek RTL8812AU, ②Atheros AR9271である。チップセットはワイヤレスアダプターの頭脳であり、いずれかを使用するアダプターなら、ブランドに関係なく3つのモードをサポートしている。WEP/WPA/WPA2のハッキングにはワイヤレスアダプターが必要だ。

モニターモード(monitor mode)

ワイヤレスアダプターの動作モードの1つ。宛先MACアドレスが自分のものでなくとも、周辺にあるパケットをキャプチャするために使う。ワイヤレスネットワークではパケットが空中で送信されるため、範囲内にいればすべての通信をキャプチャできる。Pre-connection Attackでのみ使う。

マネージドモード(managed mode)

ワイヤレスアダプターの動作モードの1つ。デフォルトでは managed modeに設定されている。これはこのデバイスはこのデバイスのMACアドレスを宛先MACに持つパケットだけをキャプチャするということを意味する。

インターフェース

ネットワークインターフェース=ネットワークデバイスである。例えば Wi-Fiカードやイーサネットカードなどだ。 ifconfigでこのコンピューターに接続されているすべてのインターフェイスを一覧表示する。すると2つのインターフェイスが表示される。 eth0とloである。eth0は、仮想NATネットワークを介してこのマシンを接続するために、VMwareによって作成される仮想イーサネット・インターフェイスである。 loは、Linuxで使われる仮想ループバックインターフェイスだ。つまり、どちらも仮想インターフェイスでありワイヤレスアダプターではない。追加でwlan0という新しいインターフェイス(ワイヤレスアダプター)が出てきた。このアダプターを使えば、 周囲のワイヤレス・ネットワークを発見してハッキングできる。ワイヤレスアダプターが必要なのはクラッキングセクションだけだ。 iwconfigを使えばワイヤレスインターフェイスだけを表示できる。

仮想イーサネット・インターフェース(Virtual Ethernet Interface)

物理的なネットワークインターフェースと同様の機能を提供するが、物理的なハードウェアを持たない、ソフトウェアによって作成された仮想的なネットワークインターフェースである。仮想イーサネットインターフェースは、主に仮想化環境やネットワーク仮想化技術で使用される。仮想化環境では、複数の仮想マシンが1つの物理マシン上で動作するため、それぞれの仮想マシンには仮想ネットワークインターフェースが割り当てられる。これにより、仮想マシン間やホストマシンとの通信が可能になる。ifconfigですべてのネットワークインターフェースを一覧表示すれば、仮想NATネットワークを介してこのマシンを接続するために、VMwareによって作成される仮想イーサネット・インターフェイス(eth0)が表示される。

仮想ループバック・インターフェース(Virtual Loopback Interface)

コンピューターネットワークにおいて、自分自身に送信されたデータを受け取るための特殊なネットワークインターフェースである。通常、ループバックインターフェースは、ローカルホスト(自分自身のコンピューター)内でのネットワーク通信のために使用される。IPアドレスは127.0.0.1から127.244の間で割り当てられる。仮想ループバックインターフェースは、ネットワーク接続を必要とせずに、ローカルホスト内のネットワークスタックやアプリケーションのテストに使用される。これにより、ネットワーク構成やアプリケーションの動作を検証する際に便利だ。また仮想ループバックインターフェースは、システムが正常に動作しているかどうかを確認するために、自己テストに使用されることがある。 loは Linuxで使われる仮想ループバックインターフェイスだ。

MACアドレス

MACアドレスは Media Access Controlの略で、デバイスメーカーがネットワーク インターフェースに割り当てる、恒久的で一意的なアドレスのことだ。ワイヤレスカードであれ、有線カードであれ、 イーサネットカードであれ、これらのネットワークカードにはそれぞれ、このカードに固有の特定のアドレスが付属している。同じMACアドレスを持つデバイスはこの世に2つと存在しない。そしてこのアドレスは、 この特定のデバイスに対して常に同じであり、たとえコンピュータからプラグを抜いて別のコンピュータに接続したとしても、 このネットワークデバイスは常に同じアドレスを持つことになる。 MACアドレスは、 ネットワーク内でデバイスを識別し、デバイス間でデータを転送するために使用される。そのため、 ネットワーク内で送信される各データやパケットには、送信元MACと宛先MACが含まれている。したがって、 このパケットは送信元MACから宛先MACに流れることになる。 これは各ネットワークデバイス(インターフェース)に対するユニークなアドレスであり、デバイスを識別するために使用されるため、 変更すればネットワーク上で匿名になる。 またMACアドレスはしばしばフィルターによって、デバイスのネットワークへの接続を阻止したり許可したり、ネットワーク上で特定のタスクを実行したりするために使われる。 自分のMACアドレスを他のデバイスのMACアドレスに変更することができれば、そのデバイスになりすますことができる。 hw etherで好きなMACアドレスに変更できる。MACアドレスは必ず00で始まる。これはメモリ上のMACアドレスを変更しているだけで物理的なMACアドレスは変更されていない。

IPアドレス

eth0という virtual boxが作成した仮想インターフェイスだ。これにはIPアドレスがある。他の2つのインターフェイス(lo, wlan0)にはIPアドレスがない。どのインターフェイスもネットワークに接続されていないからだ。loはLinuxが作成したデフォルトのインターフェイスで、 wlan0はワイヤレス・アダプターだ。 実際にはどのネットワークにも接続していない。

Beacon

すべてのネットワークは、 たとえ非表示に設定されていたとしても、常にフレーム(Beacon)を送信し、自分の存在を周囲にあるすべてのワイヤレスデバイスに発信している。

NATネットワーク

NAT設定では、仮想ネットワークが作成され、ホストマシンがこのネットワークのルーターとなる。 すべての仮想マシンはこのネットワークに接続されたクライアントとなる。だから、 彼らは私のホスト・マシンからインターネット接続を得ることになる。そして同時に、 すべての仮想マシンが同じ仮想ネットワークに接続される。仮想マシン同士が通信できるようになる。

イーサネット・ネットワーク

仮想マシンはイーサネットネットワークに接続されている。実際にはホストマシンを介して接続されている。イーサネット(Ethernet)ネットワークは、コンピューターやネットワークデバイスがデータを送受信するために使用される、広く普及している有線LAN(Local Area Network)技術である。イーサネットは、主に企業や家庭内のローカルネットワークで使用され、インターネット接続やファイル共有、プリンターの共有などの通信を可能にする。イーサネットネットワークではスイッチング技術が採用されており、宛先MACアドレスに基づいてデータを転送する。

周波数

5GHzと2.4GHzがある。airodump-ngが2.4の周波数しかスニッフィングしていないので5GHzの周波数は表示されない。5GHzに対応していて、且つ、monitor modeやpacket injectionをサポートしているワイヤレスアダプターは少ない。5GHzの周波数のネットワークを拾いたいなら特別にairdomp-ngに指示する。–band aは5GHz、–band bgは2.4GHz。

capファイル

キャプチャしたデータ(ターゲットネットワーク間で送信されたものすべて = URLやチャットメッセージやパスワードなどこれらデバイスがインターネット上で行ったすべて)が含まれたファイル。

Deauthentication Attack

ネットワークのパスワードを知らなくても、ネットワークからデバイスを切断できる。切断したいMACアドレスになりすましてルーターに切断したいと伝える。一方でルーターのMACアドレスになりすまして、クライアントの切断を成功させる。この作業はaireplay-ngというツールを使う。

WEP

Wired Equivalent Privacyの略。1999年に発表された古い暗号化方式。簡単に破れる。WEPはRC4と呼ばれるアルゴリズムを使ってデータを暗号化する。 クライアントが何か(テキストやデータ)をルーターに送りたい場合、まずキーを使って意味不明な文字列に暗号化する。 暗号化されたパケットはキャプチャしても読み取れない。アクセスポイントはキーを持っているので元の形に変換できる。なのでルーターは内容が分かる。ルーターがクライアントに送り返すときも同様に、先ずキーを使って暗号化して送信し、クライアントはキーを使って復号化する。途中でパケットをキャプチャされても内容は分からない。キーストリーム(暗号化する鍵全体)はキー(ネットワークごとに一意)とIV (Initial vector/24bit乱数/パケットごとに生成)で構成される。充分なトラフィックがあればIVが繰り返されるのでキーを決定できる。

ARP攻撃

ARP(Address Resolution Protocol) Request Replay攻撃。ARPリプレイアタックを実行すれば、トラフィックにパケットを注入し、ルーターに新しいパケットを生成させてデータ数を増やせる。トラフィックにパケットを注入して、アクセスポイントに新しいIVを持つ新しいパケットを生成させる。データ数を急増させてWEPネットワークをクラックする。その中で最も成功率が高いのがこの攻撃。良い信号と良いワイヤレスアダプターがあればほとんどのネットワークで機能する。ARPは特別なタイプのパケット。このパケットがネットワークに送信されたら、それをキャプチャして再送信する。そうすると、ルーターは新しいIVで新しいパケットを生成せざるを得なくなる。このプロセスを繰り返すことで、 ルーターに新しいIVを持つ新しいパケットを継続的に生成させる。 aireplay-ngを使う。

WPA / WPA2 / WPA3

ルーターとクライアント間で送信されるデータをすべて暗号化する。2001年にWEPを改良してWPAを発表、2004年にWPA2、2018年にWPA3が発表された。WPAはTKIPを使用し、WPA2はCCMPと呼ばれる暗号化を使用する。いずれにせよ、WPAとWPA2をクラックする方法には影響しない。 パケットをキャプチャしてもキーはユニークで一時的なものなので特定できない。有用なパケットはハンドシェイクポケットだけである。クライアントがネットワークに接続する際に、 クライアントとルーターの間で転送される4つのポケットがある。 まずはairodump-ngで周りにあるすべてのネットワークをリストアップする。つぎに認証解除攻撃(deauth)を送ってクライアントをネットワークから切り離し、クライアントが自動的に再接続するとき空中に送信されるハンドシェイクをキャプチャしてairodumpで保存する。ハンドシェイクには WPAキーの復元に役立つ情報は含まれていない。 その中の情報はパスワードが有効かどうかをチェックするためにのみ使用できる。 なのでワードリストを作成し、このリストを一つ一つハンドシェイクと照合して有効かどうかチェックする。aircrack-ngを使ってハンドシェイクを解凍する。その中にはMICとその他情報が入っている。MIC以外の情報+ワードリストを組み合わせてMICを生成し、これがハンドシェイクのMICと一致するか確認する。正しいMICが見つかれば、そのMICを生成するのに使われたパスワードがネットワークのパスワードである。

ハンドシェイクポケット

ハンドシェイクポケットはクライアントがルーターに接続する際に送信されるポケットの1つで、MICとその他情報で構成されている。その他情報+ワードリストの組み合わせとハンドシェイクのMICを比較して正しいMICを見つける。見つかればそのMICを生成したパスワードが分かる。

WPS

実際の暗号を解読することなく鍵を復元するために悪用できる機能。ネットワーク用のキーを入力することなく、デバイスが簡単にネットワークに接続できるようになる。これはプリンターやそのような機器の接続プロセスを簡素化するために設計された。実際、 ほとんどの無線対応プリンターにはWPSボタンがある。 このボタンを押してからルーターのWPSボタンを押すと、キーを入力しなくてもプリンターがルーターに接続される。この方法では、認証は8桁のピンを使って行われる。これは数字だけで構成されたパスワードであり、パスワードの長さはわずか8である。そのため、可能性のあるパスワードのリストが比較的少なくなり、比較的短時間でこれらの可能性のあるパスワードをすべて試せる。このピンを入手すれば、WPA/WPA2キーを復元するのに使うことができる。 これを機能するためにはまずネットワーク上でWPSが有効になっている必要がある。またプッシュボタン認証ではなく通常のピン認証をするようにする設定ミスも必要だ。プッシュボタン認証が使用されている場合、ルーターのWPSボタンが押されない限り、 ルーターは試したピンを拒否するのでこの方法は機能しない。最近ではほとんどのルーターでデフォルトでは無効になっている。しかしWPA/WPA2のクラックは難易度が高いのでまずWPSを試してみる事をお勧めする。washというツールでWPSが有効か否かを判断する。WPSが有効ならaireplay-ngでfakeauth(偽認証)を送ってターゲットネットワークと通信を始める。reaverを使ってピンをブルートフォースアタックして、正しいピンを取得するとそれを使って実際のWPAキーを計算する。

MIC

Message Integrity Codeの略。アクセスポイントはMICを使ってパスワードが正しいか確認する。ハンドシェイクパケットをaircrack-ngで解凍すれば、その中身はMICとその他情報に別れている。その他情報とワードリストを組み合わせて仮のMICを作成し、これとハンドシェイクに含まれるMICを照合して正しいパスワードを見つける。

レインボーテーブル

ハッシュ値から平文を得るために使われる特殊なテーブル。平文とハッシュ値の対応表であり、ハッシュ値を検索して対応する平文を探す。

WPA/WPA2の対策

IProuteでデフォルトゲートウェイを表示し、そのゲートウェイをブラウザで検索してルーターの設定画面に入る。①パスワードを特殊文字、数字、大文字、小文字を組み合わせた、14文字以上のものに設定する。②WPS機能が無効であることを確認する。③MACフィルタリングでネットワークへの接続を許可するMACアドレスを指定する。④WPA3(WPA2)を使用していることを確認する。

Post-connection Attacks

中間者攻撃(Man In the Middle Attack/MITM)

この攻撃は、 2つのデバイス間の通信を傍受することができた場合のみ実行できる。通常の通信では、デバイスは通信したい相手と直接通信することになる。中間者攻撃では、ハッカーは自分自身を接続の真ん中に置くことができ、2つのデバイス間で転送されているものを傍受できる。これを実現する方法はいくつかある。 最初に取り上げる方法は ARPスプーフィング攻撃(ARPポイズニング)だ。 他にも自分たちで偽のアクセス・ポイントを立ち上げることで中間者になれる。

MITMの防ぎ方

トラフィックを暗号化すれば、誰かがトラフィックを傍受しようが気にすることはない。①HTTPS Everywhereというプラグインをブラウザ(FireFoxなど)にインストールする。このプラグインは HTTPSをサポートするウェブサイトのリストを持っているため、HTTPSをHTTPにダウングレードしようとすると、ブラウザに”ダウングレードしないで”と使えて HTTPS接続に再度アップグレードする。しかしこの方法では、HTTPしか使わないウェブサイトでは意味がない。またハッカーがあなたがアクセスしたウェブサイトを見たり、DNSスプーフィング攻撃を行ったりすることを防げない。②VPNを利用して送受信するものすべてを完全に暗号化する。VPNは、私たちのコンピューターとサーバーの間に暗号化されたトンネルを作り、すべてのデータはこの暗号化されたトンネルを通って送信される。 そのため、もし誰かがこのデータを傍受したとしても、あなたがVPNサーバーに何を送信しているのかは分からない。 両方を併せて使えばデータは2層で暗号化される。

ARPスプーフィング攻撃

ARPスプーフィングを使えば、 パケットの流れをリダイレクトさせることができるので、私自身のコンピューターを経由してパケットを流させられる。 ターゲットマシンが送信したリクエストと受信したレスポンスは、ハッカーマシンを経由する。 ターゲットが入力したメッセージやユーザー名やパスワードは、 すべて私のコンピューターを経由するので読んだり修正できる。 これは非常に深刻で強力な攻撃なのだ。 これが可能な理由はARPがあまり安全でないからだ。ARPプロトコルは、IPアドレスをMACアドレスにリンクしたりするためのものだ。ARPテーブルでは同じネットワーク上のIPアドレスとMACアドレスがリンクされている。この値は、 ARPプロトコルを悪用することで簡単に変更できる。 ゲートウェイとvictimマシンにARPレスポンスを送る。ゲートウェイにはターゲットのIPと私のMACアドレスを関連付ける。 Victimマシンには、ルーターのIPと自身のMACアドレスを関連付ける。だから、被害者が何かリクエストを送ろうとするときはいつでも、そのリクエストは私のコンピューターを経由しなければならず、私はそれをルーターに転送する。そして、アクセスポイントやルーターが応答を送ろうとするときはいつでも、私が被害者だと思うので、 応答は私のマシンに送られ、 私が被害者に転送することになる。

ARP

ARPはAddress Resolution Protocolの略で、IPアドレスとMACアドレスを結びつけるための非常にシンプルなプロトコルだ。 ネットワーク内の通信はIPアドレスでなくMACアドレスを使って行われる。なので相手のMACアドレスを知らないと通信できない。ARPプロトコルでは、ネットワーク上のすべてのクライアントに”目当てのIPアドレスを持っている人はいますか?”とメッセージ(ARPリクエスト)を送る。 このIPアドレスを持っていないデバイスはそのパケットを無視する。そのIPアドレスを持っているデバイスだけがARPレスポンスを送信する。この応答では、デバイスがそのIPアドレスを持っていることと自身のMACアドレスを返す。

ARP攻撃の防ぎ方

ARP攻撃に気が付く方法は3つある。①ルーターのMACアドレスは実行前と実行後で変化する。なのでarp -aでARPテーブルを見続けていれば変化に気が付ける。②XRPはこれを自動的に行ってくれる。ルーターのMACアドレスが変化したと教えてくれている。ルーターの変化後のMACアドレスと同じMACアドレスを持つデバイスが、arp poisoning attackをしかけたデバイスだ。③wiresharkを使って analyzeのwarningを見る。攻撃されると”ルーターのIPアドレスには2つの異なるMACアドレスがあった”と表示される。ARP攻撃を防ぐ方法は2つある。①ARPテーブルには監視してくれたりARPポイズニング攻撃を防ぐ機能がある。②ARPテーブルのtypeをdynamicからstaticに変更する。これにより値の変更を許さない。しかしこの方法は、新しいデバイスがネットワークに接続するたびに、そのデバイスをネットワークで使えるように手動で設定しなければならない問題がある。

HTTP

HTTPのデータはプレーン・テキストとして送信される。私たちのような人間が読んで理解できるテキストだ。だから私たちがその間に立てばこの文章を読むことができるし、この文章を好きなように修正できる。 ウェブサイトがHTTPでロードされているときに、 送受信されるすべてのデータ(ユーザー名やパスワードを含む)が読み取れる。 修正できるので、DNSスプーフィング(ドメインを別の場所にリダイレクトしたり、 読み込んだウェブサイトにコードを注入したりする)のような攻撃を仕掛けることができる。なのでHTTPSやHSTSはHTTPにダウングレードすることが常に目標となる。

HTTPS

HTTPのよりセキュアなバージョンであり、 HTTPの上にさらにレイヤーを追加するという仕組みだ。 セキュアなHTTPプロトコルで、この追加レイヤーはHTTPが送信するプレーンテキストのデータを暗号化する。 もしある人が中間の人間になったとしても、このデータを読むことはできるが、そのデータはちんぷんかんぷんなものになり、接続を傍受している人間には読めない。 HTTPSはデータを暗号化するためにTLS(SSL)に依存しており、これを破るのは非常に難しい。 したがって、これを回避するには、HTTPS接続をHTTPにダウングレードするのが最も簡単な方法である。 私たちは中間にいる人間なので、ターゲットがHTTPSのウェブサイトを要求しているかどうかをチェックし、そのウェブサイトのHTTPSバージョンを渡す代わりにHTTPバージョンを渡すのだ。 こうすれば、 データはプレーン・テキストで送信され、前回と同様にそれを正確に読み取ることができる。これを行うには、 SSL Stripと呼ばれるツールを手動で設定し、使用する必要がある。 bettercapにはこれをすべて行ってくれるカプレット(htsthijack.cap)がある。このカプレットを使って、HTTPSをHTTPにダウングレードし、デフォルトでHTTPSを使用しているログインページからパスワードを盗む。

HSTS

最近のウェブブラウザには、HTTPSでのみ読み込むべきウェブサイトのリストが用意されている。これは非常に人気のあるウェブサイトだけが含まれている。ブラウザがウェブサイトをリクエストすると、 たとえそれがHTTPSを使用していたとしても、私たちはそのウェブサイトを読み込み、常にHTTPバージョンを返す。HSTSでは、ブラウザは常にHTTPSで読み込む。 なのでこのリクエストを私たちに送信する前であっても、常にHTTPSで送信され、常にHTTPSとして戻ってきた場合のみ受け入れられる。だから、真ん中の人間になっても何もできない。ブラウザはこのチェックをローカルで行っているため、コンピュータ自体に保存されているリストと照合しているのだ。したがって、 HSTSを回避するための現時点での唯一の現実的な解決策は、ブラウザに別のウェブサイトをロードしていると思わせることである。これを行うには、 読み込まれたページ内のすべてのHSTSリンクを類似のリンクに置き換えるが、同じリンクではない。 たとえば facebook.comを facebook.cornに置き換えたりする。HTSTを使用していない通常のHTTPSサイトから検索することで、HTSTサイトのリストを回避する経路を辿れる。

Secure DNS

HTSTサイトをダウングレードするにはSecure DNSを無効にする必要がある。これは chromeの設定であり、有効ならウェブブラウザはDNSリクエストを行う際に暗号化を使用する。 Secure DNSはデフォルトで有効になっているわけではない(国による)。 アイルランドでは最新の chromeをダウンロードすると Secure DNSが有効になっている。ターゲットが Secure DNSがデフォルトで有効になっていない国にいる場合、攻撃が有効になる可能性が高い。

DNS

google.comなどのドメイン名を、このウェブサイトをホストしているサーバーのIPに変換するサーバーのことだ。 google.comで検索すると、①このリクエストはDNSサーバーに送られ、 ②DNSサーバーはgoogle.comのファイルが格納されているIPをレスポンスする。 ③ブラウザはこのIPからウェブサイトをロードする。 私たちが真ん中の人間であるとき、 google.comへのリクエストはDNSサーバーに送られる前に、まず私たちを通過する。したがって、google.comをホストしているサーバーのIPを提供する代わりに、好きなサーバーのIPを与えられる。 そのため、バックドアや邪悪なコードを含む偽のウェブサイトにリダイレクトさせたり、ソフトウェア・アップデートをハイジャックできる。

DNSスプーフィング

特定のウェブサイトからのリクエストを自分のウェブサイト(ウェブサーバー)にリダイレクトする攻撃。まずはターゲットのリダイレクト先を決める。つぎにapache2サーバーを立ち上げる。var/www/htmlのindex.htmlを表示させたいものに変える。サーバーのIPをブラウザで検索すればこのページが表示される。spoof.capのcapletを使用してデータを傍受したりコンピューターに流れるデータを変更する。dns.spoofを使う。DNSスプーフィングは非常に多くの場面で役に立つ。 例えば、誰かがログインページに行こうとしているときに、偽のページを見せたり、マルウェアが埋め込まれた別のサイトにリダイレクトさせられる。また、偽のアップデートを提供するために使うこともできる。 アップデートをチェックするソフトウェアがあるとき、DNSを偽装して、 バックドア付きの偽のアップデートを送れる。

JavaScript インジェクション

読み込まれたページにJavaScriptコードを注入する。htsthijack.capにて*とすればすべてのページに注入できる。HTTPSやHTSTならHTTPにダウングレードしないと使えない。アラートを表示したりする。これはMan in the Middleになった時に可能な攻撃だ。

フェイク・アクセスポイント(ハニーポット)

いったんネットワークに接続すれば、ARPスプーフィング攻撃を実行して man in the middleになり、パケットの流れをリダイレクトし、自分のコンピュータを経由するようにできる。 アクセスポイントをハッカーのコンピューターに置き換える。これは middle manになるもうひとつの方法だ。盗聴する必要もARPプロトコルを悪用する必要もない。ネットワークが稼動し、 クライアントが接続されれば、あとはWiresharkかBettercapを使ってスニッフィングを始めるだけだ。 managed modeのワイヤレスアダプターが必要だ。IPアドレスを持たない。これはアクセスポイントとして機能する。NATネットワークに接続された仮想インターフェース(eth0)を通してKaliはインターネットに接続する。eth0を使って偽のアクセス・ポイントにインターネット・アクセスを提供する。偽のアクセスポイントを起動するのには Wifi Hotspotというプログラムを使う。

HTTPS Everywhere

ブラウザにインストールできるプラグイン。このプラグインは HTTPSをサポートするウェブサイトのリストを持っているため、HTTPSをHTTPにダウングレードしようとすると、ブラウザに”ダウングレードしないで”と使えて HTTPS接続に再度アップグレードする。

VPN

VPNは、私たちのコンピューターとサーバーの間に暗号化されたトンネルを作り、すべてのデータはこの暗号化されたトンネルを通って送信される。 そのため、もし誰かがこのデータを傍受したとしても、あなたがVPNサーバーに何を送信しているのかは分からない。 あなたとVPNサーバーの間でデータは常に暗号化される(VPNを使用することで暗号化のレイヤーが増える)。 HTTPで見たサイトも訪問したドメインも見られない。この構造ではVPNプロバイダーが中間者(man-in-the-middle)になる。 まずはVPNサーバーにすべてを送信し、それからインターネットに送信する。 VPNサーバーはこのデータを復号化できてしまう。なので信用のできる有料のVPNを利用する。加えてVPNでHTTPS Everywhereプラグインを使用できる。そうすれば、 あなたのデータはあなたのコンピューターとVPNサーバーの間で2層の暗号化によって暗号化されるため、VPNサーバーからデータが出るという問題は実際に解決される。

Gaining Access

Server-Side Attack

ユーザーが何もしなくても(ユーザーとやりとりせずに)そのコンピューターにアクセスできるようにしたい。この方法は主にウェブサーバーやアプリに適用される。その人が同じネットワーク上にいて、実際のIPを持っている場合に機能する。 たとえ個人のコンピューターであっても、pingを送ることができるコンピューターであれば、どんなコンピューターに対しても使うことができる。ほとんどの場合、 サーバーサイド攻撃を使ってターゲットにアクセスする方が良い。 オペレーティングシステムやインストールされているアプリから悪用を見つける。

Client-Side Attack

クライアントやそのコンピューターを使う人に何かを要求する。その何かは色々なものがある。アップデートのインストールや画像を開くことかもしれない。トロイの木馬の作り方、バックドアの作り方、ソーシャル・エンジニアリングを使ってターゲットに何かをさせる。そして彼らがその行動をしたとき、 私たちは彼らのコンピュータにアクセスする。ターゲットがIPの後ろに隠れている場合(ターゲットとなる人物が我々と同じネットワーク上にいない場合)、彼らのIPにpingを打っても、 ルーターの後ろやネットワークの後ろに隠れているため到達できない。 そうなると 次の手段はクライアントサイド攻撃ということになる。 これらの攻撃はユーザーに何かを要求しているのだ。 ユーザーはリンクを開いたりアップデートをインストールする。彼らがそれを実行すれば、 我々はコードを実行してハッキングできる。情報収集は非常に重要である。

Post Exploitation(ポスト搾取)

このコンピューターにアクセスした後にできることは、アクセスした方法に関係なくできる。サーバーサイドを悪用することも、 クライアントサイドを悪用することも、あるいは物理的に机から離れた隙にアクセスすることも可能だ。 ターゲットにアクセスしたら何ができるかを見てみる。そのターゲットをさらに悪用して権限を増やしたり、 同じ場所にある他のコンピューターをターゲットにする。

Metasploitableマシン

これはLinux上に構築された仮想マシンで、サーバーで使われるサービスがいくつも入っている。 サーバーとして機能するマシンだ。また、通常のウェブアプリと同じように動作し、サーバーやウェブアプリと同じテクノロジーを使用するウェブアプリも多数含まれている。 このマシンをインストールして、サーバーへのハッキングやウェブサイトへのハッキングの方法を学ぶターゲットとして使う。VMwareにインポートしてNATネットワークに接続する。脆弱性のあるサーバーでこれをターゲットとして使う。

FTP

リモートサーバーからファイルをアップロード(ダウンロード)するためにインストールされるサービス。FTPサービスは通常ユーザー名とパスワードを使うが、このサービスは設定を間違えていて、匿名のFTPログインを許可している(Anonymous FTP Login)とパスワード無しでログインできる。

VirusTotal

Googleが運営する無料ツール。ファイルやwebサイトのマルウェア検索を行うサービスで、主要セキュリティベンダーから収集したマルウェア情報が集約されている。バックドアがアンチウイルスプログラムによって検出されるかどうかを確認する。VirusTotalはスキャン結果をアンチウイルスプログラムと共有しているので、これを検査に使うとバックドアの効果が薄くなってしまう。

NoDistribute

VirusTotalと同様にファイルやwebサイトのマルウェア検索を行うウェブサイト。唯一の違いはスキャン結果をアンチウイルスプログラムと共有しないので、バックドアに影響を与えないことだ。バックドアがアンチウイルスプログラムによって検出されるかどうかを確認する。

バックドアを防ぐ方法

どんなアンチウイルスにも検出されないバックドアを作ることができる。 そしてターゲットとなる人々が対話する必要さえなく配信できる。 防ぐ方法は3通りだ。①まず第一に、 自分が中間者でないことを確認する。 もしあなたが中間にいるのであれば、誰かをハッキングするのは簡単だ。 xarpのようなツールを使うか、 静的ARPテーブルを使い、知らないネットワークや信用できないネットワークは使わないようにする。 ②ダウンロードのリンクがhttpでなくhttpsであると確認する。httpsであれば、 その場でハイジャックしてバックドアを仕掛けることはできない。 ③winMD5というツールを使う。 ダウンロード中に誰かがファイルを変更した場合、MD5チェックサムが変更され、 誰かがこのファイルを改ざんし、 このファイルが受け取るべきオリジナルではないことがわかる。

一般的なコード

apt

“apt”は “Advanced Package Tool” の略であり、パッケージのインストールやアップグレードなどに使用される。DebianベースのDistribution (Debian, Ubuntuなど)で”apt”がよく使用される。

apt -get install terminator

terminatorはターミナルと同様にコマンドを実行するためのアプリだが、右クリックして “split horizontally”をクリックすると上下2つに画面が分割されて同時にコマンドを実行できる。横にも分割できる。同時に複数のプログラムやコマンドを実行するのに役に立つ。

iwconfig

ワイヤレスインターフェイスだけを表示できる。

ifconfig

このコンピューターに接続されているすべてのインターフェイスを一覧表示する。

service apache2 start

apache2はウェブサーバーの名前だ。apache2を立ち上げる。このウェブサイト(サーバー)にアクセスするには、Kali のIPにアクセスしなければならない。 IPを取得するためにifconfigを実行する。IPをブラウザで検索すればこのウェブサイトのデフォルトページが表示される。このデフォルトページは、var/www/htmlに格納されている。だから、偽のウェブサイトなどをインストールしたい場合は、そのファイルをここに置くだけでいい。 index.htmlはデフォルトで読み込まれるファイルだ。 これがウェブで表示される。

iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 8080

このプログラムが見るすべてのデータを、このプログラムにリンクさせる必要がある。 そのために ほとんどのLinuxシステムにプリインストールされているiptablesというファイアウォールを使う。 これを使えばパケットが従うべきルールを指定できる。iptablesを使ってnatというテーブルを変更する。宛先ポート80に向かうTCPパケットに適用されるプレルーティングルールを追加し、 ポート80からポート8080にリダイレクトする。 ポート8080ではBDF proxyが稼働しておりバックドアファイルを待っている。今は bettercapを使ってデータを傍受している。 すべてのデータはルールに従いBDFProxyにリダイレクトされる。BDFProxyは、 ダウンロードされるexeがあるか確認し、それをバックドアして、 ターゲットに送り返す。ターゲットがexeを実行すると、私に接続を送り返すバックドアが実行される。 あとは着信接続をリッスンすれば良い。

プログラム一覧

airodump-ng

周りのネットワークをすべてリストアップできるツール。Aircrack-NG suitの一部で、モニターモード中にパケットをキャプチャするように設計されたプログラム。宛先MACアドレスが自分でなくとも、空中に送信されたパケットをキャプチャする。周囲にあるすべてのワイヤレスネットワークを見ることができ、MACアドレスやこのネットワークに接続しているクライアントの詳細情報が表示できる。packet sniffing toolである。BSSID(MACアドレス)、PwR(電話強度)、Beacon(フレーム)、ENC(暗号)、#Data(データパケット)が表示される。過去10秒間に収集したデータパケット数だ。任意のMACアドレスとチャンネルを指定すれば、このネットワークに接続されているクライアント(デバイス)の情報が分かる。これらデバイスのMACアドレスがSTATION部分にあり、これらのデバイスがまだネットワークを探しているか(Probe)を確認できる。またパケットをキャプチャして新しいファイルに書きだすこともできる。capファイルが出力される。

aireplay-ng

①認証解除攻撃(deauth)を仕掛けることができるツール。クライアントのMACアドレスになりすましてルーターに切断したいと伝え、一方でルーターのMACアドレスになりすますことで、ネットワークからデバイスを切断できる。なのでルーターとターゲットデバイスの両方に認証解除パケットを送り続けて、任意の秒数クライアントを切断し続けるように大量のパケットを送る。これによりターゲットデバイスを指定のネットワークから切断できる。②偽の認証攻撃(fakeauth)を行うことでターゲットのネットワークに接続できる。何かを送ればネットワークはそれを受け入れて通信してくれる。パケット量を増やすことで、WEPのキーを解読するのに十分なIVを発生させる。③ARPリプレイ攻撃(arpreplay)を行って、トラフィックにパケットを注入し、ルーターに新しいパケットを生成させてデータ数を増やせる。

aircrack-ng

①WEPにてキーを特定するために使う。airodump-ngを使って十分なトラフィックのあるパケットをキャプチャして、反復されるIVからキーを特定する。#Dataの数が多いほどキーを解読できる可能性が高まる。パケットをキャプチャしてキャプチャファイルを出力する。②WPA/WPA2ではハンドシェイクパケットを解凍してMICとその他情報を抽出し、ワードリストとその他情報を組み合わせて仮のMICを作成する。仮のMICとハンドシェイクのMICを比較して一致するものを探し、一致するものがあればそのMICを生成したパスワードを明らかにするのにも使う。

wash

WPA/WPA2においてWPSが有効なネットワークを探すのに使えるツール。

reaver

WPSが有効なネットワークに対してピンをブルートフォース(総当たり)するプログラム。正しいピンを取得すると、それを使って実際のWPAキーを計算する。

crunch

独自のワードリストを作成するツール。WPA/WPA2でキャプチャしたハンドシェイクパケットと照合するために使う。ワードリストは多数のパスワードを含む巨大なテキストファイルだ。

netdiscover

ターゲットにハッキングするには、そのネットワークに接続されているクライアントをすべて発見し、そのMACアドレスとIPアドレスを取得する必要がある。そこからさらに情報を集めたり、ターゲットにアクセスするために攻撃を仕掛けたりする。netdiscoverは同じネットワークに接続されているすべてのデバイスを検出するプログラムだ。NATネットワークでも実際のネットワークでも同様の方法で機能する。実行すると、接続されているすべてのクライアント、IPアドレス、 Macアドレスが検出され、 製造元が表示される。

arpspoof

ARPスプーフィング攻撃を実行し、データの流れをリダイレクトしてデバイスを通過させる。これにより、データを傍受し、 ユーザー名やパスワードなど、標的のコンピューターとの間で送受信されるすべてのデータを見ることができる。 arpspoofはARPスプーフィング攻撃を実行するために使用できるツールの1つ。その後、Wiresharkや packet snifferのような別のツールを使って、このデータを分析する必要がある。arpspoofは2回実行する。1回目は被害者を欺き(被害者に私がルーターのMACアドレスを持つと伝える)、 2回目はルーターを欺く(ルーターに私が被害者と伝える)。 これだけでは中継するだけで転送されないので、ポートフォワーディングを有効にして、 このコンピューターがルーターのようにパケットを通過できるようにする。

bettercap

arpspoofとまったく同じことができる。 ARPスプーフィング攻撃もできるし、コンピュータから送受信されるすべてのデータを傍受することも可能だ。それを使ってデータを取得し、分析し、ユーザー名やパスワードを見ることができる。DNSスプーフィングや、ターゲットブラウザへのコード注入など、さまざまなことに利用できる。 攻撃したいインターフェースを指定してモジュールを使用する。net.probeを実行すると自動的にnet.reconが実行される。同じネットワークに接続されているクライアントを検出して表示する。arp.spoofを使ってコンピューターを接続の途中に置きデータを傍受する。arp.spoof.fullduplexを使ってルーターとターゲットの両方になりすます。net.sniffを使ってデータをキャプチャして分析する。Capletを使えばこの一連の流れが自動化できる。

Metasploit

Metasploitは脆弱性を実際に検証するためのフレームワークだ。MetasploitフレームワークはRapid7という会社が作っている。弱性を悪用したり、独自のエクスプロイトを作成できる。 zenmapでスキャンして1つずつググってみる。バックドアコマンドが実行できると書いてあれば実行してみる。msfconsoleやuse exploit/…/backdoorはMetasploitコマンドだ。既存の脆弱性がターゲットマシン上で見つかったら、msfconsoleでMetasploitableを起動して”use 検索結果のモジュール名”で指定し、RHOST(ターゲットIP)などを設定してexploitを実行する。

payload (metasploit)

ペイロードとは、 脆弱性が悪用されたときにターゲット・コンピューター上で実行される小さなコードのことだ。Linuxコマンドを実行させるようなコードはなく、ちょっとしたコードを実行させるような欠陥を持つプログラムがある。これらの小さなコードの断片はペイロードと呼ばれる。 そこで必要なのは、 ペイロードを作成し、 発見した脆弱性を使ってターゲットコンピューター上でそれを実行することだ。 脆弱性を悪用すると、ここで選んだコードが実行され、選んだペイロードの種類によって、そのペイロードは私たちにとって有益なことをする。 このペイロードでLinuxコマンドを実行できるかもしれないし、将来的には他のタイプのペイロードも検討することになるだろう。 ペイロードには逆接続などがある。

バインドペイロード / リバースペイロード

バインドペイロードは、 ターゲットコンピュータのポートを開き、そのポートに接続する。reverseはその逆だ。 私のマシンにポートを開き、 ターゲットのコンピューターから私のマシンに接続する。ファイアウォールはターゲット・マシンへの接続をフィルタリングするが、ターゲットマシンが私に接続し、 私にファイアウォールがなければファイアウォールをバイパスできる。

veil

アンチウイルス・プログラムによって検出されないバックドアを生成できるツール。バックドアとは単なるファイルのことで、ターゲットとなるコンピューター上で実行されると、そのコンピューターへのフルアクセスが可能になる。 listで使用可能なツールの一覧を表示する。useでツールが使える。veilには2つの主要なツールがある。evasionとordnanceだ。evasionは検出不可能なバックドアを生成するもので今回のテーマだ。ordnanceは回避(evasion)に使われるペイロードを生成する。ペイロードはバックドアのコードの一部だ。逆接続を与えるコードの部分であり、ターゲット・コンピューター上で何かをダウンロードして実行するコードの部分であり、そのファイルを実行することで望むことを実現させるコードの部分である。 Gaining Accessのサーバーサイド攻撃だ。veilは常にアンチウイルスを回避しようとし、アンチウイルスは常に最新のバックドアを検出しようとする。veilの最新バージョンを使用していることを確認し、様々なペイロードやオプションを動作するまで試してみる。これは 検出不可能なバックドアを生成する最も基本的な方法である。

veil – payload

go/meterpreter/rev https.pyのようなもの。ペイロードは3つの部分に分かれている。 ①最初の部分はペイロードを包むプログラマー言語である。②2番目の部分はペイロードのタイプである。ターゲットのコンピューター上で実行されるコードのタイプだ。 この例では Meterpreterを使っている。③3番目の部分は接続を確立するために使われるメソッドである。revはリバース、 httpsは接続を確立するために使用されるプロトコルを意味する。つまり、 このペイロードは逆 https接続を作成することがわかる。 バックドアが実行されるとターゲットコンピュータから私に接続する。

meterpreter (veil – payload – meterpreter)

MeterpreterはMetasploitによって設計されたペイロードだ。Metasploitはハッキングのための巨大なフレームワークだ。Meterpreterは、 メモリ内で実行され、システムプロセス間を移行できる。そのため、例えばエクスプローラーのような通常のプロセスからペイロードやバックドアを実行させることができる。 このペイロードによって、 ターゲットコンピュータを完全に制御できる。ファイルシステムをナビゲートしたり、 ファイルをアップロードしたり、 ウェブカメラをオンにしたり。さらにはそのコンピュータを使って他のコンピュータをハッキングしたり、キーロガーをインストールしたり何でもできる。 これらはすべてシステム上の通常のプロセスからメモリ上で実行される。 だから、発見するのはとても難しいし足跡もあまり残らない。

reverse(逆接続) (veil – payload – reverse)

逆(reverse)とは、 ターゲットのコンピューターから自分のコンピューターに接続するという意味だ。 バックドアはターゲットコンピュータから私に接続する。これの何がクールかというと、アンチウィルス・プログラムをバイパスできることだ。 普通のウェブサイトへの接続と変わらない。またターゲットマシンがルーターの後ろに隠れていても、ターゲットから私に接続されるのでうまくいく。逆接続を使うのは本当に便利で、コンピューターにアクセスする唯一の現実的な方法だ。

bettercapコマンド

net.probe

同じネットワーク上のデバイスを発見するためにUDPパケットを送り続けるモジュールだ。net.probe.onとoffでモジュールのオンオフが切り替わる。実行すると、同じネットワークに接続されているクライアントを自動的に検出し始める。 これはbettercapを使って、接続されたクライアントを素早く発見する方法の1つだ。

net.recon

net.probeを開始すると自動的に net.reconが開始される。bettercapがnet.reconを自動的にオンにした理由は、net.probeが可能な限りのIPに probeリクエストを送るからである。そして、もし応答があれば、net.reconが私のARPキャッシュを監視して、この応答を検出する。そして、これらのIPをすべてリストに追加し、ターゲットにできるようにする。

net.show

接続されているすべてのクライアントのリストが表示される。これらクライアントのIPやMACアドレスや名前や製造者(vendor)を見ることができる。

arp.spoof

Bettercapを使ってARPスプーフィング攻撃を行う。 私たちのコンピューターを接続の途中に置き、データを傍受できる。 このデータをどのように読み取るかも見てみる。 ターゲットが訪問するすべてのURLとウェブサイトを見ることができ、彼らの投稿やユーザー名やパスワードもすべてキャプチャして見ることができる。まずは Middle Manになる必要がある。 arp.spoof というモジュールを使ってこれを実行する。arp.spoof.onでモジュールをオンにできる。arp.ban.onでターゲットとの接続を切れる。arp.spoof.offでオフにできて、arp.ban.offでオフにできる。

arp.spoof.fullduplex

arp.spoofのオプション(set)の1つ。コマンドを2回実行してルーターとターゲットの両方になりすませるもの(ルーターとターゲットの両方がスプーフィングされて接続の途中に入れるもの)。デフォルトのfalseのままだと、 ターゲットマシンになりすますだけだ。 ルーターが arp.spoof攻撃に対する何らかのプロテクションを備えている場合、ルーターとのやり取りが不要になるため、 falaseの方法は有効である。しかし、ルーターがターゲットデバイスと直接通信してしまうため、ルーターがターゲットデバイスに送信するレスポンスに何かを注入することはできない。

net.sniff.on

bettercapに、このコンピューターに流れているすべてのデータを取り込み、分析してくれるように言う。このコンピューターに流れるものはすべて、 net.sniffモジュールによって捕捉され、分析される。ターゲットマシンでブラウザを見たりトラフィックを発生させるとbettercapによってキャプチャされる。HTTPでのみ機能する。HTTPSとHTSTはダウングレードが必要だ。

net.sniff.local

このオプションは、 たとえそのデータがローカルデータであっても、すべてのデータをスニッフするようbettercapに指示する。このオプションをtrueに設定した理由は、HTTPSバイパスカプレットを使用すると、 データが私たちのコンピューターから送信されているように見えるからだ。 bettercapはこれらのパスワードが私や私のコンピューターに帰属していると考え、それを画面に表示しない。 HTTPSからHTTPにダウングレードするウェブサイトで送信されたすべてのユーザー名とパスワードを確認できるようにする。

bettercap -iface eth0 -caplet spoof.cap

手動で実行するには幾つかのコマンドを実行させなければならない。カプレットを使えばすべて自動でやってくれる。 カプレットとは、実行したいすべてのコマンドを含むテキストファイルのことだ。

hstshijack/hstshijack

実行すると、カプレットがすべてのオプションとともにロードされて実行される。 HTTPSサイトをHTTPにダウングレードする。

dns.spoof.address

ユーザーがリダイレクトされるアドレスを示す。そのため、 他のウェブサイトにリダイレクトさせたい場合は、他のウェブサイトのIPをここに入力する必要がある。 ローカルサイトにリダイレクトさせる。 デフォルトではインターフェイスのIPが設定されている。

set dns.spoof.all true

trueに設定すると bettercapがDNSリクエストに応答するようになる。

set dns.spoof.domains zsecurity.org, *.zsecurity.org

なりすましたいドメインを指定する。 ,を使って複数のドメインを指定できる。今回はzsecurity.orgを Kali上で動く自身のウェブサイトにリダイレクトしたい。, を使えば複数のドメインを指定できる。*はワイルドカードであり、 基本的にはサブドメインを示す。

dns.spoof on

実行すると zsecurity.orgを 10.0.2.15のIPになりすませる。zsecurity.orgで検索すると “smile”が表示される。zsecurity.orgをロードする代わりにsmileにリダイレクトされた。これはHTTPSを使用していても、すべてのウェブサイトに対して機能する。 これが機能しないのは、 HSTSを使用しているウェブサイトだけである。なぜなら、ブラウザはこれらのウェブサイトのリストを持っており、そのリストはターゲット・コンピューターにローカルに保存されているため、リクエストを送信することはなく、 これらのウェブサイトはHTTPSでのみ読み込まれるからである。そのため、 攻撃がうまくいっても、ブラウザはなりすましのウェブサイトの読み込みを拒否する。

Metasploitコマンド

msfconsole

これは基本的にMetasploitプログラムを起動するだけだ。 helpで利用可能なエクスプロイトを表示したり、利用可能な補助ツールやペイロードを表示する。 useコマンドでは表示されているものを使える。使いたいexploitがあるなら、use exploit名で実行できる。次に setオプションを使ってエクスプロイトの特定のオプションを設定できる。 最後に、エクスプロイトの設定が終わったら、exploitと入力してそのエクスプロイトを実行する。

msfconsole –resource /opt/BDFProxy/bdfproxy_msf_resource.rc

あとは着信接続をリッスンすれば良い。 前に見せたように、 マルチ/ハンドラーを使えばそれができる。また怠け者なら、 バックドアファクトリーが作ってくれるリソースファイルを使うこともできる。このファイルは自動的にmulti/handlerを起動し、BDFProxyのコンフィギュレーションファイルで設定したすべてのペイロードの着信接続をリッスンする。–resourceはリソースファイルを渡したいという意味。その後にリソースファイルのフルパスを渡す。実行すると msfconsoleが実行され、リソースファイルに格納されているすべてのコードがロードされ、マルチ/ハンドラが自動的に起動し、 BDFProxyを設定したときに指定したIPで設定される。

use exploit/unix/ftp/vsftpd_234_backdoor

useの後に exploitのモジュール名を入力する。実行すると名前が exploit(vsftpd_234_backdoor)に変わる。

show options

showコマンドは様々なケースで使える汎用的コマンドだ。今回はこのexploitのオプションを表示する。RPORTやRHOSTがオプションにある。RHOSTはターゲットのIPアドレスである。この値を変更するには setオプションを使う。setのあとにオプション名を入れる

use exploit/multi/handler

Meterpreterペイロードからの着信コネクションをリッスンするためのモジュールだ。

set PAYLOAD windows/meterpreter/reverse_https

ペイロードのオプションを変更する。HTTPSの逆接続を行う。

set LHOST 10.20.14.213

LHostを私たちのIPアドレスに設定したいがこれはすでに正しいものに設定されている。これは私がバックドアを作ったときに使ったのと同じIPだ。

set LHOST 8080

ポートも同じポートを設定したいので LPortを8080に設定する。 これはバックドアを生成したときに使用したポートだ。

exploit

exploitを実行すれば、追加したオプションに従って実行される。逆接続なら、指定したポート番号と私のIPで接続を待つ。バックドアをターゲットが開けば、バックドアを作成したときに設定したIPとポート番号(つまり私のコンピュータ)に接続しようとする。

sessions -i 1

sessions -lを実行すると、利用可能なセッションをすべてリストアップできる。sessions-iの後にセッションのIDを続ければセッションに入り対話できる。 sysinfoを実行してみれば確認できる。

Veilコマンド

use 1

veilにて最初にlistを実行すると evasionとordnanceが表示される。1はevasionを示す。evasionは検出不可能なバックドアを生成するものだ。つぎにlistを実行すると利用可能なペイロードをすべてリストアップされる。 41種類のペイロードがあり、これらのペイロードはすべて一定の命名パターンに従っている。

use 15

41種類のペイロードの15番目(go/meterpreter/rev https.py)を使う。go言語で書かれたもので、ターゲットマシン上で実行されるコードのタイプはmeterpreterだ。メモリ内で実行されシステム間を移行できる。httpの逆接続を作成する。ターゲットマシンから私に接続されるということだ。

set PROCESSORS 1

バックドアが使用する”プロセッサーの最小数”である。 バックドアが機能しなくなるだけだから、大きな数字は設定しない。このオプションは、コードの見た目を少し変えるために設定する。 これはバックドアをよりユニークなものにしてアンチウイルスプログラムを回避するためだ。

set SLEEP 6

バックドアがペイロードを実行する前に、そこにある邪悪なコードを実行する前に、設定した秒数だけスリープさせる。 バックドアの見た目を少し変えるためにやっているだけだ。 これもバックドアをよりユニークにしてアンチウイルスを回避するためだ。

generate

バックドアを作成する。実行して名前を付ければ、バックドアが生成されてバックドアがどこに保存されているかが表示される。

ツール

wireshark

Wiresharkはデータのスニッフィングとフィルタリングに最適なツールだ。 Wiresharkは network protocol analyzerである。ネットワーク管理者向けに設計されており、 ネットワークで何が起きているかを確認し、すべてが正常に動作していること、ネットワーク上で悪いことや不審なことをしている人がいないことを確認できる。 Wiresharkはハッキングツールではない。これは、自分のコンピュータを流れるトラフィックだけを、自分のインターフェイスを通してキャプチャすることができるものだ。 Wiresharkの仕組みは、 インターフェイスを選択し、そのインターフェイスを流れるすべてのパケット(トラフィック)をログに記録する。 HTTPやTCPなど、 使用するプロトコルに基づいてパケットをフィルタリングできる。 空中で送信されたパケットを収集してcapファイルに書き込む。wiresharkはそのファイルの中身を分析するツールだ。ネットワークに接続されているデバイスのMACアドレスとその製造元が分かる。ネットワークの暗号化を解かないとユーザー名やパスワードは読めない。オープンのネットワークなら訪れたURLやそこで入力した内容が読める。wiresharkはどこが便利なのか。自分のコンピュータを通過したものしか見えないのになぜ便利なのか。それは “真ん中の男 “になる方法は数多くあるからだ。緑色はTCPパケット、紺色はDNSパケット、水色はUDPパケットだ。黒いパケットは問題のあるTCPパケットである。 ターゲットがどのようなHTTPリクエストをしてどんなファイルが読み込まれたかも分かる。

Nmap / Zenmap

Nmapはnetdiscover同様にネットワークマッピングに使われるプログラムだ。ネットワークに接続されているすべてのクライアントとその詳細情報が検出できる。Nmapはnetdiscoverよりスキャンが少し遅いが遥かに多くの情報を表示してくれる。開いているポートやそのポートで動いているプログラムやサービスが見られる。コンピュータ名やOSも特定できる。Nmapの Graphical User Interfaceが Zenmapだ。バックグラウンドでNmapコマンドを実行して結果を表示してくれる。zenmapと入力すれば良い。ターゲットのIP範囲を入れてスキャンする。ping scanやquick scanなどが実行できる。ping scanでは、範囲内のありとあらゆるIPにpingを打ち、応答があれば、その応答を記録し、応答があったデバイスを表示する。スキャンが完了すると、接続されているすべてのデバイスのリストが表示される。また、それぞれのデバイスのMACアドレスやベンダーも表示される。 quick scanではping scanより遅いが多くの情報が得られる。デバイスが開いているポートと、それぞれのポートで実行されているサービスが見られる。quick scan plusではおり多くの情報が見られる。デバイス上で動作しているOSやデバイスの種類、各ポートで実行されているプログラムとそのバージョンが検出できる。quick scanではポートでどんなプログラムが動いているかは分からなかった。ポートで動作するSSHサーバーがインストールされていることも分かる。サービスのリストを入手して、1つ1つをgoogle検索して脆弱性が含まれたものはないか確認する。

http -ui

bettercapのweb interface。ブラウザでログインする。イベントやログなどが見られる。LANページではネットワークに接続されているすべてのデバイスを表示される。bettercapで入手可能なすべてのカプレットのメニューがあり、クリックすれば実行できる。

XRP

ARPポイズニング攻撃を発見するために使えるアプリ。ルーターのMACアドレスは実行前と実行後で変化する。なのでarp -aでARPテーブルを見続けていれば変化に気が付ける。これをXRPは自動的に行ってくれる。ARPテーブルではIPアドレスとMACアドレスは関連付けられている。各IPアドレスは一意のMACアドレスを持っているはずだ。ネットワークに重複があってはならない。 ARPポイズニング攻撃が行われると、 XRPが通知を出して、ルーターのMACアドレスが変化したと教えてくれている。ルーターの変化後のMACアドレスと同じMACアドレスを持つデバイスが、arp poisoning attackをしかけたデバイスだ。XRPというツールは自動的にモニタリングしてくれて、誰かがネットワークにARPポイズンをかけようとすると教えてくれる便利なツールだ。

Nexpose

大企業で使われることを想定したエンタープライズツールであり、Rapid7(Metasploitを作ったのと同じ人)によって作られた脆弱性管理フレームワークだ。 脆弱性管理のライフサイクル全体をカバーするように設計されている。 オープンポートのスキャン、実行中のサービスの検出、サービス内の脆弱性の検出、エクスプロイトの検出、詳細なレポートの作成まで出来る。

Backdoor Factory Proxy

ネットワークセキュリティの分野で使用されるツールの1つ。ネットワークトラフィックを介してバックドアを挿入することを目的とする。具体的には、ネットワーク上を通過する通信をキャプチャし、その通信に含まれる特定のバイナリファイルに対してバックドアを挿入する機能を提供する。このような挿入されたバックドアは、通常の通信プロトコルに準拠しているため、セキュリティツールや検知システムに検出されにくくなる。

winMD5

現在、 作成されるファイルにはすべて署名がある。 どのファイルに対しても署名を生成できる。 プログラムをダウンロードできるウェブサイトは、そのファイルの署名も教えてくれる。 ファイルがダウンロード中に変更された場合、MD5チェックサムも変更され、誰かがこのファイルを改ざんし、 このファイルが受け取るべきオリジナルではないことがわかる。 ツールの使い方はとても簡単で、Linux用とWindows用のツールがあり、 ツールをダウンロードして実行するだけだ。 ダウンロードしたら、 ブラウザに進みファイルを選択できるようになる。選択するとそのファイルの署名が表示される。インストールする必要はない。 実際にツールのダウンロードファイルを選択してみると、そのサインとここにあるサインを比べてみて同じであることが分かる。つまり、 このツールはウェブサイトからダウンロードされたまま変更されていないということだ。 ダウンロードしたファイルに同じことをすれば、 そのファイルが変更されていないこと、つまりバックドアされていないことがわかる。 バックドアにファイルがあるということは、それをダウンロードしたウェブサイトそのものにバックドアが存在したということだ。

コメント

タイトルとURLをコピーしました