
Enumyは、ペンテストやCTFのポストエクスプロイテーションフェーズでターゲットのLinuxマシンにドロップする、__超高速なポータブル実行可能ファイル__です。enumyを実行すると、__一般的なセキュリティ脆弱性__がないかボックスを列挙します。
x86またはx64タブのリリースから最終バイナリをダウンロードできます。muslに静的にリンク 最終的なenumyバイナリをターゲットマシンに転送します。
./enumy
$ ./enumy64 -h
▄█▀─▄▄▄▄▄▄▄─▀█▄ _____
▀█████████████▀ | __|___ _ _ _____ _ _
█▄███▄█ | __| | | | | | |
█████ |_____|_|_|___|_|_|_|_ |
█▀█▀█ |___|
https://github.com/luke-goddard/enumy
Enumy - ターゲット環境を列挙し、一般的なセキュリティ脆弱性やホットスポットを探すために使用します
----------------------------------------------------------------------
出力
-o <場所> 結果を出力する場所(デフォルト enumy.json)
ファイルシステムの探索
-i <場所> このディレクトリ内のファイルを無視(ネットワーク共有に便利)
-w <場所> このディレクトリ内のファイルのみを探索(開発に便利)
スキャンオプション
-f フルスキャンを実行(CPU負荷の高いスキャンが有効に)
-t <数値> スレッド数(デフォルト 4)
表示オプション
-a すべてのセキュリティ監査の問題を画面に表示(CTF中は役に立たないかもしれません)
問題は、このフラグの設定に関わらず常に結果ファイルに記録されます。
-d <1|2> デバッグモードを表示(1:低、2:高)画面上にエラーを表示します。
-g <H|M|L> 高い、中、低の値以上の値を画面に表示
-p <H|M|L|I> 高、中、低、情報の問題を画面に表示しない(以下の例を参照)
-m 1-100 同じ名前の問題の画面表示数の最大値(デフォルト 無制限)
_開発中_にコンパイルするには、makeとlibcapライブラリのみが必要です。
sudo apt-get install libcap-dev
make
glibc依存を排除し、すべてのライブラリを静的にリンクする/muslでコンパイルするには、以下の手順に従ってください。これを行うには、Alpineビルド環境を作成するためにdockerがインストールされている必要があります。
./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

以下は、実装されたスキャンの拡大し続けるリストです。
注:❌とマークされた結果を画面に表示するには、-aフラグで監査モードを有効にしてください。
このスキャンは、カーネルバージョンをチェックし、既知のエクスプロイトがあるカーネルバージョンと一致するかどうかを確認します。
このスキャンの目的は、システムを列挙して、異常な、または悪用可能な脆弱な権限を持つSUID/GUIDバイナリを探すことです。
最近のLinuxカーネルはケイパビリティをサポートしています。これは、リスクを軽減するためにファイルにrootの権限のサブセットを与える推奨される方法です。これははるかに安全な方法ですが、もし幸運にもファイルに異常なケイパビリティが設定されているのを見つけた場合、その実行ファイルを悪用してより高いアクセス権を得ることができる可能性があります。Enumyは、システム上のすべての実行可能ファイルに設定されたケイパビリティをチェックします。
これはより汎用的なスキャンで、ファイルの内容、拡張子、ファイル名に基づいてファイルを分類しようとします。Enumyは、秘密鍵、パスワード、バックアップファイルなどのファイルを探します。
コアダンプファイルは、プログラムが予期せず終了したときのプロセスのアドレス空間を含むELFファイルの一種です。このプロセスのメモリが読み取り可能で、機密情報を含んでいた場合を想像してみてください。あるいはもっとエキサイティングなことに、このコアダンプが社内開発ツールによるもので、セグメンテーションフォールトが発生した場合、ゼロデイを開発できる可能性があります。
一部のファイルは決してSUIDビットを設定すべきではありません。怠惰なシステム管理者が、bashスクリプトを動作させるためや自分の作業を楽にするために、docker、ionice、hexdumpなどのファイルにSUIDを設定することはよくあります。このスキャンは、既知の悪いSUIDバイナリをいくつか見つけようとします。
Sysctlは、実行時にカーネルパラメータを変更するために使用されます。また、これらのカーネルパラメータをクエリして、ASLRなどの重要なセキュリティ対策が有効になっているかどうかを確認することも可能です。このスキャンは、そのようなチェックを行います。
Living off the landは、攻撃者がシステム上に既にあるものを武器化する手法です。ステルス性を保つなどの理由でこれを行います。このスキャンは、攻撃者が探すであろうファイルを列挙します。
このスキャンは、ELFファイルの依存関係を解析します。これらの依存関係のいずれかに書き込みアクセスがある場合、またはDT_RPATHやDT_RUNPATHの値に書き込みアクセスがある場合、独自の悪意のある共有オブジェクトを作成してその実行ファイルに注入し、システムを危険にさらす可能性があります。
SSHは、現実世界で最も一般的に見られるサービスの1つです。また、誤って設定されることも非常に簡単です。このスキャンは、強化できる点がないか確認します。
現在のユーザースキャンは、単に/etc/passwdを解析します。この情報から、rootアカウント、保護されていないホームディレクトリ、存在しないホームディレクトリなどを見つけます。
このスキャンは、グローバルに書き込み可能なファイル、不均等なパーミッション、所有者のいないファイルを見つけます。スキャンのインスピレーションについてはこちらを参照してください。
このスキャンは、Linuxマシンを強化しようとしている人に役立ちます。暗号化されていないドライブや安全でないマウント設定などの問題を強調表示します。
| スキャンタイプ | クイックスキャン | フルスキャン | 実装済み | 画面表示 | ログに保存 |
|---|
| カーネルエクスプロイト提案 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SUID/GUIDスキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| ファイルケイパビリティスキャン | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| 興味深いファイルスキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| コアダンプスキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| ブレイクアウトバイナリスキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SSHD設定スキャン | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Sysctlスキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Living Off The Landスキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 現在のユーザースキャン | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| *.soインジェクションスキャン | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| パーミッションスキャン | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| ファイルシステムスキャン | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Dockerスキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| 環境スキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| 特権アクセススキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| ネットワークスキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| システム情報スキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| バージョン情報スキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| デフォルトの脆弱な認証情報スキャン | ✔️ | ✔️ | ❌ | ✔️ | |
| 弱い暗号スキャン | ❌ | ✔️ | ❌ | ✔️ |