20199328 2019-2020-2「ネットワーク攻撃と防衛の実践」第8週の割り当て
1.練習内容
Linuxシステム構造
Linuxプロセスおよびスレッド管理メカニズム
Linuxカーネルはプリエンプティブマルチユーザーマルチプロセッシング(マルチプロセッシング)モードを採用しており、複数のプロセスが同時にアクティブであり、カーネルのプロセス管理モジュールはハードウェアリソースの使用をスケジュールする責任があります。
Linuxメモリ管理メカニズム
Linuxメモリ管理モジュール(MM)を使用すると、複数のプロセスが物理メモリ領域を安全に共有できます。
Linuxファイルシステム管理メカニズム
Linuxカーネルは仮想ファイル管理 VFSメカニズムを使用しており、これにより、何十もの異なるタイプの論理ファイルシステムをサポートできます。
Linuxデバイス制御メカニズム
デバイスの処理を抽象化し、すべてのハードウェアデバイスは通常のファイルのように扱われます
Linuxネットワークメカニズム
Linuxカーネルのネットワークモジュールは、さまざまなネットワーク標準へのアクセスとさまざまなネットワークハードウェアのサポートを提供します
Linuxシステムコールメカニズム
Linuxシステムコールはソフト割り込みによって実現されます
Linuxオペレーティングシステムのセキュリティメカニズム
Linuxオペレーティングシステムのコアセキュリティメカニズムは、主に3つの部分です:ID認証、承認とアクセス制御、セキュリティ監査
Linux ID認証メカニズム
- Linuxユーザー(ユーザー情報はシステムの/ etc / passwdファイルに保存され、暗号化されたパスワードは1000 / etc / shadowファイルに保存されます):①最高の権限を持つrootユーザーは、オペレーティングシステムの任意のファイルとコマンドを使用できます②通常のユーザー、ユーザーが作成し、自分のディレクトリ内のコンテンツのみを操作できます。実行権限が制限されます③システムユーザー。これらのユーザーはシステムにログインする権限がありませんが、システム操作の必須ユーザーです
- Linuxユーザーグループ(ユーザーグループ情報はシステムの/ etc / groupファイルに保存され、ユーザーグループ暗号化パスワードは/ etc / gshadowファイルに保存されます):同じ特性を持つユーザーアカウントのコレクション
- Linuxローカルログインユーザー認証メカニズム:initプロセスはgettyを開始して、いくつかの仮想コンソール(ttyI、tty2など)を生成します。ログインがコンソールに表示されます。ユーザーがユーザーを入力すると、gettyはログインプロセスを実行し、ログイン認証プロセスに入ります。認証が成功すると、ログインプロセスは対応するユーザーShellの子プロセスをフォークします。対応するシェルの下で作業を開始します
- Linuxリモートログインユーザー認証メカニズム:inuxシステムは通常、リモートユーザーログインおよびネットワークアクセスにSSHサービスを使用します。SSHは、ユーザーID認証メカニズムの2つの方法を提供します。最初の方法は、1,000個のパスワードに基づくID認証、2番目の方法1000個の非対称鍵のID認証
- Linux統合ID認証ミドルウェアPAM:PAMは、システムによって提供されるサービスを、ダイナミックリンクライブラリと一連の統合APIを介してサービスの認証方法から分離し、システム管理者がニーズに応じてさまざまなサービスを柔軟に提供できるようにしますサービスプログラムを変更せずにさまざまな認証方法を構成し、同時にシステムに新しい認証方法を簡単に追加できます
Linuxの認証およびアクセス制御メカニズム
- ファイル所有者:ファイル所有者のuidとファイル所有者のグループのgidは、ファイルを所有するユーザーを示します
- ファイルアクセス許可:ファイルアクセス許可は、付属のl0フラグビットによって設定されます。
- ファイルの特別な実行権限:SUIDおよびSGID権限は共通です。SUID権限により、実行時に実行可能ファイルを実行名からファイル所有者権限に上げることができます。SGIDビットが設定されたプログラムが所有者の実行するグループ権限
Linuxセキュリティ監査メカニズム
接続時間ログ、プロセス統計ログ、エラーログレコードの3つのメインログサブシステムを使用して達成するには
Linuxシステムのリモート攻撃および防御テクノロジー
Linuxリモートパスワード推測攻撃
攻撃者は、ネットワークプロトコルを介してリモートでユーザー名とパスワードのセットを推測し、この情報を使用してリモートでLinuxシステムにログインし、ローカルアクセス権を取得します。
Linuxカーネルでのネットワークプロトコルスタックの実装
CVE-2010-4161、この穴はv2.6.37より前の1000コアバージョンのすべての
RHELシステムに存在し、攻撃者は特別に構築されたUDP
パケットをターゲットシステムに開いているUDPポートに直接送信できます。システムがクラッシュし、ターゲットシステムにサービス拒否攻撃を引き起こします。
FTP、Sambaおよびその他のファイル共有サービス
これらのサービスは多くの場合、Webサイトサーバーや企業の内部ファイルサーバーなどの企業組織のコアデータ資産を格納する主要なLinuxシステムでより一般的であるため、ハッカーがこれらの主要なシステムを試行する必要がある攻撃チャネルになっています。
FTP(ファイル転送プロトコル)サービスは、インターネット上の非常に古いネットワークサービスです。10のファイル交換と共有転送を使用します。FTPサービスは通常、TCPポート20および21をリッスンします。ポート21は数千の制御コマンドで送信され、ポート20はデータ送信。
Sambaサービスソフトウェアは、UNIXライクとWindowsの間の相互運用可能なブリッジを構築し、2つのリソースが通信できるようにし、組織の内部ネットワーク内の2種類のオペレーティングシステムに簡単にアクセスおよびアクセスできるようにします
メール送受信サービス
Sendmailサービスは、Linuxを含むUNIXライクなシステムで常に最も人気のある電子メールの送受信サービスであり、論争を引き起こし、安全ではない有名なネットワークサービスの1つでもあります。
ネットワークサービスへのリモート侵入攻撃に対するセキュリティ対策
- 不要なネットワークサービスをすべて無効にする
- より安全なネットワークプロトコルとサービスソフトウェアを選択し、最善のセキュリティプラクティスを使用して展開する
- 時間内にネットワークサービスのバージョンを更新する
- xinetdとファイアウォールを使用してLinuxネットワークサービスのネットワークアクセス制御メカニズムを追加する
- 侵入検知と緊急対応計画プロセスを確立する
Linuxローカル権限昇格
権限を増やす最も簡単な方法は、rootユーザーのパスワードを解読し、SUまたはsudoコマンドを実行してアップグレードすることです。
特権昇格の2番目の方法は、SUまたはsudoプログラムのセキュリティ脆弱性を発見して悪用することです
現在、最も一般的な方法は、ルート特権プログラムのコードを直接攻撃してZidongを実行し、攻撃者にルート権限でシェルコマンドライン接続を開かせる方法です。このタイプのアプローチは、攻撃するユーザーモードのSUID特権の昇格の脆弱性とLinuxカーネルコードの権限昇格を攻撃する
最後のローカル権限昇格技術は、システムでグローバルに書き込み可能な機密ファイルとディレクトリの場所を検索し、それらを使用することにより、システムのいくつかの誤った設定を利用します
Linuxシステムで消える
/etc/syslog.conf構成ファイルの内容を表示して、システムによって現在実装されている監査イベントのタイプとログの保存場所を理解します
/ var / logディレクトリでは、攻撃者はメッセージ、authe、cure、wtmp、xferlogなどのログファイルを変更する必要があることがよくあります。
攻撃者はまた、シェルプログラムに入力されたコマンドの履歴をクリーンアップする必要があります。Linuxシステムの多くのシェルプログラムは、コマンドを取得して繰り返し実行する機能を提供するために実行された履歴コマンドを記録します。
Linuxシステムリモートコントロールバックドアプログラム
最も一般的なLinuxシステムのバックドアは、リモートコマンドラインシェルアクセスを提供することです。通常は、Netcatなどの肛門ツールを使用してシステムで実行し、TCPポートを開いて、リクエストを受け取った後に戻ります。Linuxシステムシェルはクライアントと対話します。
2.実践プロセス
実践的な実践:Linuxリモート侵入攻撃にMetasploitを使用する
Metasploit侵入テストソフトウェアを使用して、Linuxターゲットマシン上のSambaサービスusermap_scriptを攻撃し、ターゲットLinuxターゲットマシンのホストアクセス権を取得します。:実用的な手順は次の通りである
①Metasploitのソフトスタートを、一つは個人の嗜好msfconsolemsfguimsfwebに応じて使用することができ、
②使用が悪用:悪用/マルチ/サンバ/ usermap_script 侵入攻撃モジュール;
③攻撃遠隔She1l選択されたペイロード、(順方向または逆接続してもよいです);
④)等rHOST、lHOST、TARGET、(パラメータ次侵入攻撃に位置し、
侵入攻撃を実行⑤:
正しいリモートシェルかどうかを確認するために取得⑥、及びビューに許可を得ました。
Kaliでmetasploitを開き、msfconsoleと入力してから、Enterキーを押してコンソールインターフェイスに入り、Sambaの脆弱性を最初に検索します。検索結果は次のとおりです。これは、この脆弱性に対する侵入攻撃モジュールです。
usermap_scriptセキュリティ脆弱性の侵入攻撃をターゲットにしたいと思います:
usermap_script:
- Sambaプロトコルの脆弱性CVE-2007-2447、ユーザー名マッピングスクリプトコマンドの実行
- Sambaバージョン3.0.20〜3.0.25rc3に影響
- デフォルト以外のユーザー名マッピングスクリプト構成オプションを使用すると生成されます
- シェルメタキャラクターを含むユーザー名を指定することにより、攻撃者は任意のコマンドを実行できます
コマンドはmulti / samba / usermap_scriptを使用します
侵入攻撃モジュールと互換性のある攻撃ペイロードを表示するには、show payloadsと入力します。set payload cmd / unix / bind_netcatを実行してbind_netcatを選択します。つまり、侵入攻撃が成功した後でnetcatツールを使用してシェルを実行し、netcatを介してリスニングポートにバインドします。次に、オプションの表示を選択して、設定が必要なパラメーターを確認します。
ターゲットアドレスを設定した後、攻撃を開始します
攻撃後、成功したかどうかを確認し、権限を確認します
実務
攻撃と防御の対立の実践:攻撃者はMetasploitペネトレーションソフトウェアを使用してLinux Metasploitableターゲットマシンに対するネットワーク攻撃を実装し、防御側はMetasploitatbleのtcpdumpまたはWiresharkまたはSnortツールを使用して攻撃ストリームをキャプチャし、攻撃に使用したセキュリティの脆弱性を分析します。システムの修復のために公式のWebサイトでセキュリティの乱気流パッチをダウンロードし、両者が協力して攻撃および防御プロセスレポートを提供します。
- 攻撃者:Metasploitを使用し、Metasploitableターゲットマシンで見つかった脆弱性を選択して、侵入攻撃を実行し、リモートコントロールを取得し、さらにルート権限を取得しようとします。
- Defender:tcpdump / wireshark / snortを使用してネットワーク攻撃データパッケージを監視および取得し、wireshark / snortを組み合わせて攻撃プロセスを分析し、攻撃者のIPアドレス、ターゲットIPおよびポート、攻撃開始時間、攻撃の悪用の脆弱性を取得し、Shellcodeを使用します。そして、成功した後、コマンド入力およびその他の情報をローカルで実行します。
実験環境:1人の
攻撃者と同じ
:1人の防御者と同じ:
-
Wiresharkでパケットをキャプチャした後、最初のパケット(ARP要求パケット)を確認します。次に、攻撃マシンkali(192.168.200.2)がターゲットマシン(192.168.200.125)へのTCP接続要求を開始します。これは、攻撃を正式に開始する時間である必要があります。
送信元ポート番号は41737、宛先ポート番号は139です。
-
使用するシェルコード
-
攻撃が成功した後、コマンドがローカルで実行
3.学習と解決策で遭遇する問題
- 質問1:更新中にnessusがログインできない
- 問題1の解決策:しばらくお待ちください。。
4.実践のまとめ
各質問を理解し、教師が質問するのを待ちます。。。