課題コース:https : //edu.cnblogs.com/campus/besti/19attackdefense/
割り当て要件:https : //edu.cnblogs.com/campus/besti/19attackdefense/homework/10635
練習内容
Linux OSのセキュリティ攻撃と防御
Linuxカーネルのメカニズムとモジュール
1.プロセスおよびスレッド管理メカニズム
- Linuxカーネル:プリエンプティブマルチユーザープロセス
- プロセス管理モジュールがスケジュールプロセススケジューリング機能
- プロセス制御ブロックPCB
2.メモリ管理メカニズム
- 仮想化することができ、各プロセスは排他的な4GBの仮想メモリ空間を持っています
- 複数のプロセスが物理メモリ領域を安全に共有できるようにする
- ユーザーモードコードは、システムコールと割り込みを通じてカーネルモードにアクセスします
- メモリ管理モジュール:プロセスのメモリ割り当て、メモリリサイクル、リクエストページング、スワップページングなどのシステムコールサービスを提供します
3.ファイルシステム管理メカニズム
- 仮想ファイル管理メカニズムVFS
- サポートされる論理ファイルシステム:ext2、ext3、ext4、vfat、ntfs
- デバイスドライバーを介して特定のハードウェアデバイスにアクセスする
- 一般的なファイルシステムコール[関数]を提供(オープン/クローズ/読み取り/書き込み)</ br />
4.デバイス制御メカニズム - デバイスドライバー:[ハードウェアコントローラー]を処理または管理するソフトウェア
- ほとんどのデバイスドライバーは、LKMを介してカーネルモジュールメカニズムを[動的に]読み込むことができます
- Linuxでサポートされるハードウェアデバイス:キャラクターデバイス、ブロックデバイス、ネットワークデバイス
キャラクターデバイス:バッファーなし、システムシリアルポートdev / cua0および/ dev / cua1
ブロックデバイスなどのダイレクトI / O :I / O、バッファーキャッシュ、1ブロックの倍数でのランダムアクセス(512または1024バイト)
ネットワーク機器:BSDソケットネットワークインターフェイス
5 を介したアクセス、ネットワークメカニズム
- ネットワークインターフェイス(ネットワークプロトコルスタック、ネットワークドライバー)
ネットワークプロトコルスタック:すべての可能なネットワーク伝送プロトコルを実装します
IPX:パケットスイッチングプロトコル
ネットワークデバイスドライバー:ハードウェアデバイスとの通信を担当します
6.システムコールメカニズム
実装:ソフト割り込み
ハード割り込み:外部デバイスがCPU
ソフト割り込みを割り込みます:ハード割り込みサービスルーチンがカーネルに割り込みます
セキュリティメカニズム
ID認証、承認、アクセス制御メカニズム、セキュリティ監査
1、ID認証メカニズム
は完全なACLアクセス制御リスト設定をサポートしていません。パッチ:Linux用POSIX ACL
ユーザー:root、唯一のスーパーユーザー、通常のユーザー、ログインではなくシステムユーザー。ただし、デーモン、apache、匿名でアクセスされるnobody、ftp、その他のユーザーなど、システムの実行には不可欠です。
ユーザー情報ファイル:/ etc / passwd
暗号化パスワード:/ etc /シャドウはrootのみが読み取り可能
ユーザーグループ:ユーザーグループ情報ファイル:/ etc /グループ
ユーザーグループ暗号化パスワード:/ etc / gshadow
は、現在のユーザーが属するグループを照会します:id- a
ユーザーグループを追加します
。groupaddユーザーグループにユーザーを追加します。usermod-G group_name user_name
ローカルログインユーザー認証:
リモートログインユーザー認証:
SSHサービスを使用します
- パスワードベース:組み込みのユーザーアカウントとパスワード
- ユーザーは非対称キーに基づいて、非対称キーのペアを作成し、公開キーをサーバーに配置します。会話の乗っ取りや中間者攻撃に対抗できます。
一部のネットワークサービスのID認証
Apache MD5ハッシュパスワードワード
sambaファイルサービスSMBファイル共有サービスLANMANまたはNTLMハッシュアルゴリズム
MySQL PASSWORD()関数暗号化されたパスワードがユーザーシステムテーブルに保存
ユニファイドアイデンティティ認証ミドルウェア-PAM(プラグイン可能なアイデンティティ認証モジュール)
は、ダイナミックリンクライブラリとユニファイドAPIを提供し、
システムによって提供されるサービスと認証方法をシステム管理者から分離します:PAM構成ファイル(/ etc / pam)。 confまたは/etc/pam.d)Kamikaze認証戦略の策定
アプリケーションサービス開発者:サービスプログラムでPAM APIを使用して認証メソッドの
PAMサービスモジュールを呼び出す開発者:PAM SPI(サービスモジュールAPI)を使用してPAMで認証モジュールを記述します。さまざまな認証メカニズムの
PAMコアライブラリがミドルウェアに追加されます。構成ファイルを読み取り、対応するサービスプログラムを対応する認証方法に関連付けます。PAMがサポートする管理インターフェース:認証管理、アカウント管理、パスワード管理、セッション管理
2.許可およびアクセス制御メカニズム
すべてがファイルです
ファイル所有者uid gid変更許可:chown
ファイルアクセス許可10フラグビットファイルタイプ+ファイル許可
ファイル特別実行許可SUID:実行者が実行時に実行者のIDからファイルの所有者にアップグレードできるようにし、ファイルの所有者が使用できるすべてのシステムリソースに任意にアクセスできます。SUIDビットが設定されたすべてのルートファイル:/ etc / login
GUID:SGIDビットを持つプログラムが実行されると、所有者のグループの権限で実行されます
2.セキュリティ監査メカニズム
ロギングサブシステム:接続時間ログ(ログイン時にログ、/ var / log / wtmpおよび/ var / run / utmp)、プロセス統計ログ(プロセスの開始および終了pacctまたはacct)、エラーログレコード(/ var / log /メッセージ)。
Linux共通ログファイル
ログファイル | ログファイルの内容 |
---|---|
アカウント/パック | ユーザーコマンドを記録する |
aculog | MODEMアクティビティを記録する |
btmp | 失敗の記録 |
最後のログ | 最後の数回の成功したログイン時間と最後の失敗したログインを記録します |
メッセージ | syslogからの情報、syslogファイルへのリンクの記録 |
sudolog /ストリーム | sudoおよびsuを使用して発行されたコマンド |
Syslog | syslogからの情報を記録します(通常はメッセージファイルにリンクされます) |
utmp | 現在ログインしている各ユーザーを記録する |
wtmp | ユーザーが各ログインに出入りする時間の永続的な記録 |
監査デーモン:システムユーザーによる特定のセキュリティ対策の違反を検出および記録し、ユーザー空間プログラムによってカーネルに対して開始されたシステムコールを監視し、SELinuxポリシーの時間違反の監査記録
長距離攻撃および防御テクノロジー
1.リモートパスワード推測攻撃
2.ネットワークサービスの脆弱性に対する防御
3.トロイの木馬、スパムのインストール
4.データパケットの構築
1.リモートパスワード推測攻撃
SSH、etlnet、FTP、HTTPの
基本原則:ユーザーが弱いパスワードを設定する
パスワード推測攻撃ツール
Brutus:HTTP、POP3、FTP、SMB、Telnet、IMAPおよびその他の
THC Hydra:Telnet、FTP、HTTP / HTTPS、SMB、SSHおよびその他の辞書攻撃、パスワードのブルートフォースブルートフォースクラッキング
カインとアベル:Windows、Linuxの
防御策:
強力なパスワードを設定し、
ルートログインを使用せ
ず、特権ユーザーがリモート
でログインすることを許可せず、複数の認証を記録し、切断して再接続し、
複数のシステムで使用しない同じパスワード
は、公開鍵証明書に基づくID認証メカニズムを使用して、
非標準ポートでのリモートパスワード推測攻撃に対して脆弱なサービスを実行します。
パスワード推測攻撃検出および防御ソフトウェアDenyHosts、BlockHosts、fail2ban
ファイアウォールを使用して、ネットワークサービスのアクセスソースIPアドレスを制限します
2.ネットワークサービスのリモート侵入
監視ネットワークサービスのセキュリティの脆弱性の利用
(1)ネットワークプロトコルスタックの実装コードに欠陥があります
(2)LAMPアーキテクチャは
、MySQL証明書名を処理する際の境界条件エラーによって引き起こされるバッファオーバーフローの脆弱性を攻撃するWebサイトを構築します。exploit/ linux / mysql / mysql_yassl_getname
(3)FTP tcp21制御コマンドの送信tcp20データ送信
proFTPD:FTPサービスソフトウェア
vs-ftpdにはほとんど脆弱性がない
(4)Samba:UnixのようなシステムがWindows smb / cifsネットワークプロトコルに接続できるようにする:リンクの処理などSMB1メッセージのコードはクライアントから提供された入力フィールドを正しく検証しないため、悪意のあるクライアントは特別に作成されたSMBメッセージをSambaサーバーに送信してヒープメモリの破損を引き起こし、Sambaサーバー(smbd)の権限で任意のコードが実行される可能性があります。この脆弱性を悪用するために認証は必要ありません。Sambaのデフォルト設定はこの脆弱性の影響を受けます。
(5)メール送受信サービス:sendmailサービス
(6)その他のネットワークサービス
予防策:
- 不要なネットワークサービスを無効にする
- より安全なネットワークプロトコルとサービスソフトウェア、最高のセキュリティ構成ネットワークサービスを選択します(デフォルトのパスワードを閉じます)
- 時間内にネットワークサービスのバージョンを更新する
- xinetd(ネットワークアクセスコントロールメカニズム)、ファイアウォールを使用して、ネットワークサービスのアクセスコントロールメカニズムを追加します。
- 侵入検知と緊急対応計画プロセスを確立する
3.クライアントプログラムとユーザーを攻撃する
Webブラウザー攻撃
Webサイトハッキング攻撃:Web サイト
にJavaScriptスクリプトコードへのリンクを埋め込むシステムユーザーを攻撃する
ソーシャルエンジニアリング
ソフトウェア配布サイトのソフトウェアをトロイの木馬化する
予防策:
クライアントソフトウェアを適時に更新して、
セキュリティ意識を高める
4. Linuxルーターとリスナーを攻撃する:wireshark、snort、netfilter / iptables
Linuxはルーターモードで実行されます。
カーネルではip_forward = 1です。net サブシステムのroute.cは、ルーターのアドレス指定機能とパケット転送機能を実装しています。
これらの領域には、攻撃者が利用できる抜け穴があります
予防策:
安全意識を向上させ、安全装置とソフトウェアの安全に注意を払う
ローカルセキュリティ攻撃および防御技術
一般的なネットワークサービスは、root権限ではなく、特別に割り当てられたシステムユーザーで起動および実行されます。
権限の昇格:
1.特権を昇格させる最も簡単な方法:rootユーザーのパスワードを解読します。(root権限で実行されているサービスに存在するファイルの読み取り/書き込みの脆弱性を利用して、最初に/ etc / shadowファイルを取得してから、パスワードをクラックします)
Linuxシステムパスワードクラックツール:John the Ripper(辞書攻撃、ブルートフォースクラック)
2. suまたはsudoプログラムのセキュリティ脆弱性を検出して悪用します
。sudo-g / sudoeditは検証をバイパスします。
プロンプト-gは不正なオプションです。3。root
権限でプログラムのコード実行の脆弱性を直接攻撃し、プログラムを開くことができるようにします。 root権限でシェルコマンドラインに接続します。ユーザーモードを攻撃するSUID特権の昇格の脆弱性
実際のUID:プロセスを実行するユーザーID
有効なUID:
SUIDが設定された後にプロセスが実際にアクセス許可を継承するユーザーID 、実際のIDと有効なIDは異なる場合があります。 passwdコマンドなどのユーザーID
- Ettercapソフトウェアの脆弱性など、SUIDプログラムに対するローカルバッファオーバーフロー攻撃
- SUIDプログラムのシンボリックリンク攻撃に対して、SUIDプログラムは有効な検証なしにシンボリックリンクに沿って他のファイルを盲目的に参照します
- SUIDプログラムの競合状態の攻撃に応じて、一部のプログラムソフトウェアは操作のアトミックな特性に従っておらず、競合状態の抜け穴があり、操作中に相手側がID認証を完了する場合があります。Eximなど(SUIDを使用)
- SUIDプログラムの共有関数ライブラリ、共有関数ライブラリへの攻撃:関数ライブラリの動的読み込みメカニズム。
環境変数を変更して、悪意のある関数を含む代替の共有関数ライブラリを提供し、
libpcprofileなどの共有関数ライブラリの脆弱性を使用し、LD_AUDIT環境変数を使用してsuidプログラムを起動します。 - カーネルスペースコードの脆弱性を悪用することによる特権の昇格
- システムで不適切な構成を使用し、システムからグローバルな書き込み可能な機密ファイルとディレクトリの場所を検索して使用し、SUIDを使用する
注意事項:
SUIDを乱用することはできません
ソフトウェアを間に合わせて更新
セキュリティ拡張モジュールをインストールします。
消える
認証および承認レコード:/var/log/auth.log
システムアラーム、情報、認証、およびスケジュールされ
たタスクログ:/ var / log / messages ユーザーログインレコードwtmpバイナリファイルの場合、wzapツールを使用して、指定されたログエントリをクリアできます。
ユーザーディレクトリの.bash_historyファイルなど、シェルに入力されたコマンドの履歴を消去します。または、シェル履歴機能を無効にします:unset HISTFILE; unset SAVEHIST
予防策:
- 変更しにくいメディアにログ情報を書き込む
リモートコントロールバックドアプログラム
タイプ:
トロイの木馬化されたシステムプログラム:rloginを置き換え、ssh
コマンドラインバックドアツール:リモートコマンドラインシェルアクセスを提供し、Netcatバックドアツールを使用してシステムで実行する
グラフィックバックドアツール:VNC
実践プロセス
1. metasploit侵入テストソフトウェアを使用して、Linuxターゲットマシン上のSambaサービスのusermap_scriptセキュリティ脆弱性を攻撃し、ターゲットLinuxターゲットマシンへのホストアクセス権を取得します。以下の手順を実施する:
1.スタートMetasploitのソフトウェア、一つは個人の好みに応じてmsfonsole、msfgui、msfwebを使用することができ、
2悪用使用:悪用/マルチ/ damba / usermap_script 侵入攻撃モジュール;
3、選択された攻撃ペイロードリモートシェル(フォワードまたは、逆に接続することもできます);
4.侵入攻撃パラメータ(RHOST、LHOST、TARGETなど)を選択し
ます。5.侵入攻撃を実行します。6.
リモートシェルが正しく取得されているかどうかを確認し、取得した権限を確認します。
SMB1メッセージリンクメモリ破損の脆弱性
この手法では、2つの攻撃マシン(winattackとkali、最初の侵入に失敗し、すべて攻撃マシンを変更し、後で選択した侵入モジュールに関連していることが判明)とターゲットマシン(metasploitable-linux )。
最初にターゲットプレーンをスキャンして、sambaサービスプログラムとそのバージョンがあるかどうかを確認します。
スキャン結果も確認できます。ターゲットマシンには、バージョン3.0のsambaサービスがあります。
その後、それを貫通することができます
侵入モジュールを選択します。
負荷を選択します。
侵入に成功し、プロンプトに従って、pythonと入力してシェルに入り、終了します。
現在ログインしているユーザーを表示します。
ルート権限であることがわかります。
次に、攻撃と防御の対立の実践
nessusを使用して、linux-netasploitableの脆弱性をスキャンします。
またはサンバに浸透します。
浸透プロセスは前の質問と同じです。
Wiresharkパッケージの分析:
送信元IPアドレス:192.168.200.4
宛先IPアドレス:192.168.200.123ポート:139
図に示すように、最初のSMBパケットからシェルコードを見つけ、nohupをバックグラウンドで実行し、mkfifoが名前付きパイプを作成し、/ bash / shをファイルに書き込みます。攻撃中に使用されるコマンド:
発生した問題:
1.最初の練習をするとき、ペネトレーションは失敗です、解決策:ペネトレーションモジュールとロードを交換してください。
2. 2番目の方法を実行する場合、最初の侵入方法はroot権限を直接取得し、su msfadminを使用して通常のユーザーになり、SUIDメソッドを使用して権限をエスカレートしますが、失敗します。
体験
ローカル権限昇格の内容は少し抽象的で、あまり理解できません。