20199115 2019-2020-2「ネットワーク攻撃と防御の実践」第8週の割り当て
Linuxオペレーティングシステム
1.練習内容
Linuxオペレーティングシステムの基本フレームワークの概要
Linuxシステム構造
-
Linuxプロセスとスレッド管理メカニズム
Linuxはプリエンプティブマルチユーザープロセスモードを採用しています。複数のプロセスが同時にアクティブになります。カーネルのプロセス管理モジュール
は、使用するハードウェアリソースのスケジューリングを担当します。プロセスは、最も基本的なスケジューリングユニットとして機能し、プロセス制御
ブロック構造を維持します。カーネルスケジュールプロセススケジューリング機能は、プロセスの優先順位とCPUおよびその他のリソースに基づいて
、実行するプロセスを選択します。 -
Linuxのメモリ管理メカニズム
Linuxのメモリ管理モジュールMMを使用すると、複数のプロセスが物理メモリ領域を安全に共有できます。Linuxは仮想メモリ管理をサポートしています。32ビットマシンでは、各プロセスに独立した4 GBの仮想メモリ空間があり、カーネルのコードとデータセグメントは3 GBを超える空間にマップされ、ユーザーモードコードによって要求される仮想メモリ空間は0〜3 GBです。間隔。各プロセスは、2組のセグメント記述子を使用して、カーネルモードとユーザーモードのメモリ空間にそれぞれアクセスします。 -
Linuxファイルシステム管理メカニズム
仮想ファイル管理VFSメカニズムにより、数十の異なるタイプの論理ファイルシステムをサポートできます。VFSは、ユーザープロセス用のファイルシステム呼び出し関数の共通セットを提供し、さまざまなファイルシステム内のファイルに使用できます。統一された操作。 -
Linuxデバイス制御メカニズム
ハードウェアコントローラーを処理または管理するソフトウェアは、デバイスドライバーと呼ばれます。Linuxの基本的な機能はデバイス処理の抽象化であり、すべてのハードウェアデバイスは通常のファイルのように扱われます。Linuxは、3種類のハードウェアデバイス(キャラクターデバイス、ブロックデバイス、ネットワークデバイス)をサポートしています。 -
Linuxネットワークメカニズム
ネットワークモジュールは、さまざまなネットワーク標準へのアクセスと、さまざまなネットワークハードウェアのサポートを提供します。ネットワークインターフェイスは、ネットワークプロトコルスタックとネットワークドライバーに分けることができます。ネットワークプロトコルスタックは、可能なすべてのネットワーク伝送プロトコルを実装します。ネットワークデバイスドライバーはハードウェアデバイスとの通信を担当し、ハードウェアデバイスの各タイプには対応するデバイスドライバーがあります。
- Linuxのシステムコールメカニズム
Linuxは、システムコールインターフェイスを提供し、アプリケーションがインターフェイスを介してハードウェアデバイスやその他のシステムリソースにアクセスできるようにします。アプリケーションのクロスプラットフォーム移植を容易にします。
Linuxオペレーティングシステムのセキュリティメカニズム
LinuxのID認証メカニズム
-
Linuxユーザー(ユーザー情報はシステムの/ etc / passwdファイルに保存され、暗号化されたパスワードは/ etc / shadowファイルに保存されます):
-
最高の権限を持つrootユーザーは、オペレーティングシステムの任意のファイルとコマンドを使用できます
-
ユーザーが作成した通常のユーザーは、自分のディレクトリ内のコンテンツのみを操作でき、実行権限は制限されています
-
システムユーザー、このタイプのユーザーはシステムにログインする機能はありませんが、システム操作に不可欠なユーザーです
-
-
Linuxユーザーグループ(ユーザーグループ情報はシステムの/ etc / groupファイルに保存され、ユーザーグループ暗号化パスワードは/ etc / gshadowファイルに保存されます):同じ特性を持つユーザーアカウントのコレクション。
-
Linuxローカルログインユーザー認証メカニズム:initプロセスはgettyを開始して、いくつかの仮想コンソール(ttyI、tty2など)を生成します。ログインがコンソールに表示されます。ユーザーがユーザーを入力すると、gettyはログインプロセスを実行し、ログイン認証プロセスに入ります。認証が成功すると、ログインプロセスは対応するユーザーShellの子プロセスをフォークします。対応するシェルの下で作業を開始します。
-
Linuxリモートログインユーザー認証メカニズム:inuxシステムは通常、リモートユーザーログインおよびネットワークアクセスにSSHサービスを使用します。SSHは、ユーザーID認証メカニズムの2つの方法を提供します。最初の方法は、1,000個のパスワードに基づくID認証です。 1000個の非対称鍵のID認証。
-
Linux統合ID認証ミドルウェアPAM:PAMは、システムによって提供されるサービスを、ダイナミックリンクライブラリと一連の統合APIを介してサービスの認証方法から分離し、システム管理者がニーズに応じてさまざまなサービスを柔軟に提供できるようにしますサービスプログラムを変更せずにさまざまな認証方法を構成し、システムに新しい認証方法を簡単に追加することもできます。
Linuxの認証およびアクセス制御メカニズム
-
ファイルの所有者:Linuxはすべてをファイルとして扱います。すべてのLinuxファイルには所有者がいます。ファイルの所有者は、chownコマンドで変更できます。
-
アクセス権:Linuxファイルの詳細な説明は、10フラグビットで確認できます。最初のフラグビットはファイルタイプを表し、9つのフラグビットはグループ内で3を表します。たとえば、最初のグループはrwxです。これは、所有者が読み取り(r)書き込み(w)実行(x)権限を持っていることを意味します。2番目のグループと3番目のグループは、同じグループ内の他のユーザーのアクセス許可と他のユーザーのアクセス許可です。許可がない場合は、use-toで示します。r--の場合、読み取り専用を意味します。
-
実行権限:読み取りと書き込みに加えて、前述の実行権限があり、一般的なものはSUID権限とSGID権限です。SUIDは、彼の権限を再実行し、所有者の権限に自分の権限を上げる党幹部です。ファイルにSUIDビットが設定されていて、このファイルの所有者がrootである場合、特定のユーザーはこのファイルを実行するときにrootファイルの権限を持っています。
Linuxセキュリティ監査メカニズム
-
主に3つのログサブシステムを通じて実現
-
接続時間ログは複数のプログラムによって実行されるため、システム管理者は、いつ誰がシステムにログインしたかを追跡できます。
-
プロセス統計ログプロセスが終了したら、プロセスごとにプロセス統計ファイルにレコードを書き込みます。
-
エラーログは、一般的なログサービスによって実行されます。
-
Linuxシステムのリモート攻撃および防御テクノロジー
Linuxリモートパスワード推測攻撃
-
Linuxシステムでfinger、rusers、sendmailなどのサービスを使用して、ターゲットシステムのユーザーアカウント名を列挙し、関連するパスワードを推測します。
-
LinuxシステムのHTTP / HTTPSやFTPなどのネットワークサービスには、独自のユーザーアカウントシステムとID認証メカニズムがあり、リモートパスワード推測を使用してネットワークサービスにアクセスし、システムへのローカルアクセスを取得できます。
-
一般的に使用されるリモートパスワード推測ツールは、Brutus、THC Hydra、Cain、Abelなどです。
-
リモートパスワード推測攻撃に対する最善の防御策は、簡単に推測できない強力なパスワードを使用することです。
Linuxネットワークサービスのリモート侵入
-
最も重要な攻撃チャネル:ネットワークサービスのセキュリティの脆弱性の浸透と悪用
-
主に含む
-
Linuxカーネルでのネットワークプロトコルスタック攻撃
-
LAMP WEB Webサイトでのネットワークサービス攻撃
-
FTP、Sambaおよびその他のファイル共有サービス攻撃
-
メール送受信サービス攻撃
-
他のネットワークサービスへの攻撃:OpenSSH、OpenSSL、NFSなど
-
-
予防策は次のとおりです。
-
不要なネットワークサービスをすべて無効にする
-
より安全なネットワークプロトコルとサービスソフトウェアを選択し、最善のセキュリティプラクティスを使用して展開する
-
時間内にネットワークサービスのバージョンを更新する
-
xinetd、ファイアウォールを使用して、Linuxネットワークサービスのネットワークアクセス制御メカニズムを追加する
-
侵入検知と緊急対応計画プロセスを確立する
-
Linuxクライアントプログラムとユーザーを攻撃する
-
Linuxプラットフォームのクライアントプログラムを攻撃する
- 一般的なWebブラウザー攻撃と電子メールクライアント攻撃
-
Linuxシステムユーザーの攻撃
- Googleがサーバー管理者をハッキングして、管理者情報のあらゆる側面を取得
-
予防策
-
時間内にソフトウェアを更新する
-
自身の不正防止能力を向上させる
-
ソフトウェアをダウンロードするときは、公式のダウンロードチャネルにアクセスし、MD5を確認します
-
Linuxルーターとリスナーへの攻撃
-
Linuxルーターとファイアウォールを攻撃する
- ルーターモードが実行中の場合、攻撃者がサービス拒否攻撃を実行するために使用する可能性があります
-
攻撃リスナーと侵入検知器
- オープンソースソフトウェアには、主にlibpcapパケットキャプチャライブラリ、tcpdumpコマンドラインプログラム、wireshark、snortなどが含まれます。
-
ルーターとリスナーの攻撃に対するセキュリティ対策
-
ネットワーク管理者は、セキュリティの対立とゲームの感覚を確立します
-
ネットワークとセキュリティ機器のセキュリティと可用性に注意してください
-
攻撃者の観点から、侵入攻撃テストを試す
-
Linuxシステムのローカルセキュリティ攻撃および防御技術
Linuxローカル権限昇格
-
権限を増やす最も簡単な方法は、rootユーザーのパスワードを解読し、SUまたはsudoコマンドを実行してアップグレードすることです。
-
特権昇格の2番目の方法は、SUまたはsudoプログラムのセキュリティ脆弱性を発見して悪用することです
-
現在、最も一般的な方法は、ルート特権プログラムのコードを直接攻撃してZidongを実行し、攻撃者にルート権限でシェルコマンドライン接続を開かせる方法です。このタイプのアプローチは、攻撃するユーザーモードのSUID特権の昇格の脆弱性とLinuxカーネルコードの権限昇格を攻撃する
-
最後のローカル権限昇格技術は、システムでグローバルに書き込み可能な機密ファイルとディレクトリの場所を検索し、それらを使用することにより、システムのいくつかの誤った設定を利用します
Linuxシステムで消える
-
/etc/syslog.conf構成ファイルの内容を表示して、システムによって現在実装されている監査イベントのタイプとログの保存場所を理解します
-
/ var / logディレクトリでは、攻撃者はメッセージ、authe、cure、wtmp、xferlogなどのログファイルを変更する必要があることがよくあります。
-
攻撃者はまた、シェルプログラムに入力されたコマンドの履歴をクリーンアップする必要があります。Linuxシステムの多くのシェルプログラムは、コマンドを取得して繰り返し実行する機能を提供するために実行された履歴コマンドを記録します。
Linuxシステムリモートコントロールバックドア
-
主なタイプは次のとおりです。
-
トロイの木馬型システムプログラム
-
コマンドラインバックドアツール:リモートコマンドラインシェルアクセスを提供します。通常、Netcatおよびその他のバックドアツールを使用してシステムで実行し、TCPポートを開いて待機し、リクエストを受信した後、Linuxシステムに戻ります。
-
シェルはクライアントと対話します。
-
グラフィカルバックドアツール:最も一般的に使用されているのは、グラフィカルリモートコントロールのフリーソフトウェアVNCです。
-
2.実践プロセス
実践的な実践:Linuxリモート侵入攻撃にMetasploitを使用する
Metasploit侵入テストソフトウェアを使用して、Linuxターゲットマシン上のSambaサービスのusermap_scriptセキュリティ脆弱性を攻撃し、ターゲットLinuxターゲットマシンへのホストアクセス許可を取得します。実際の手順は次のとおりです。
(1)Metasploitソフトウェアを起動すると、個人の好みに応じてmsfconsole。Msfgui。Msfwebのいずれかを使用できます。
(2)エクスプロイトを使用します。エクスプロイト/マルチ/ samba / usermap_scriptを使用して、攻撃モジュールに侵入します。
(3)リモートシェルとしてPAYLOADを選択します(順方向接続と逆方向接続の両方を使用できます)。
(4)侵入攻撃パラメータ(RHOST、LHOST、TARGETなど)を設定します。
(5)ペネトレーション攻撃を実行します。
(6)リモートシェルが正しく取得されているか確認し、取得した権限を確認してください。
ホスト | IPアドレス |
---|---|
回 | 192.168.200.2 |
Metasploitable2 | 192.168.200.125 |
Metasploit侵入テストソフトウェアを使用して、Linuxターゲットマシン上のSambaサービスのusermap_scriptセキュリティ脆弱性を攻撃し、ターゲットLinuxターゲットマシンのホストアクセス許可を取得する
-
カリと入力
msfconsole
-
侵入攻撃、Enter
use exploit/multi/samba/usermap_script
キーを押してusermap_script脆弱性の侵入攻撃モジュールを選択、利用可能なペイロードを表示、入力show payloads
-
次に
set payload cmd/unix/bind_netcat
、侵入攻撃が成功した後、netcatツールを使用してシェルを実行し、netcatを介してリスニングポートにバインドします。 -
構成するパラメーターを表示し
show options
、ターゲットホストIPセットRHOST 192.168.200.125を入力して構成します。 -
攻撃入力
exploit
を開始し、ターゲットマシンのroot権限が取得されていることを確認します
実際の作業:攻撃的および防御的対立実験
-
攻撃者:Metasploitを使用してMetasploitableターゲットマシンで見つかった脆弱性を選択し、侵入攻撃を実行し、リモートコントロールを取得し、さらにルート権限を取得します。
-
防御側:Wiresharkを使用してネットワーク攻撃パケットファイルを監視および取得し、Wiresharkを組み合わせて攻撃プロセスを分析し、攻撃者のIPアドレス、ターゲットIPおよびポート、攻撃開始時間、攻撃エクスプロイトの脆弱性を取得し、シェルコードを使用して、成功後にローカルで実行しますコマンド入力およびその他の情報。
-
まず、nmapを使用してポートをスキャンします
nmap -p0-65535 -sV 192.168.200.4
-
チェックしたら、最初のvsftpd-2.3.4を見てみましょう。以前のバージョンのvsftpd-2.3.4には悪意のあるバックドア
nmap --script=vuln 192.168.200.125
があり、一般的な脆弱性があるかどうかをチェックするために使用します。案の定 -
use exploit/unix/ftp/vsftpd_234_backdoor
侵入攻撃モジュールを使用してから、彼のパラメーターを確認し、攻撃パラメーターを設定します。RHOSTは、ターゲットマシンのアドレスセットRHOST 192.168.200.125です。 -
パラメータを利用した直接攻撃
ディフェンダー
-
パケットトラフィックとパケットの内容を分析すると、攻撃者のIPは192.168.200.2、ターゲットIPは192.168.200.125、ポートはポート21であることがわかります。
-
攻撃開始時間は図からわかるように、数字の3から始まり、攻撃者はターゲットの21ポートへの接続を試み始めます。
-
攻撃によって悪用される脆弱性:当初、攻撃のターゲットポートは21でしたが、これはVsftpd 2.3.4の脆弱性に対する攻撃でした。
-
シェルコードは、私たちは、その後、シェルコード、最初のIDが自分の権利を決定するために見ることができるのwiresharkキャプチャのプロセスで使用される
nohup >/dev/null 2>&1
、標準出力とエラー出力が一緒にリダイレクトされ/dev/null
、その後し、echo echo cZyuPTDirlCot0aE
さらに許可を得るために、ものを書きます -
攻撃後にローカルで実行されたコマンド:パケットキャプチャフローから、攻撃者のすべてのコマンドを確認できます。コマンドwhoamiおよびlsはクリアテキストで送信されます。
3.学習と解決策で遭遇する問題
- 質問:一般的な抜け穴を見つけたいです。。最初から始めることはできません!
- 問題の解決策:nmapは本当に百科事典です!
4.実践のまとめ
前回の実務経験で、今回は気持ちいいです。。。