Github: https://github.com/Neo23x0/Loki
Loki – シンプルなIOCスキャナ
単純な妥協の指標のためのスキャナ
検出は、4つの検出方法に基づいています。
- ファイル名IOC
完全なファイルパス/名前の正規表現マッチ - ヤラルールチェック
ファイルデータとプロセスメモリに対する署名の一致 - ハッシュチェック
既知の悪意のあるハッシュ(MD5、SHA1、SHA256)をスキャンしたファイルと比較します。 - C2バックコネクトチェック
プロセス接続エンドポイントをC2 IOCと比較します(バージョンv.10以降)
追加チェック:
- Reginファイルシステムのチェック(–reginfsを介して)
- プロセス異常のチェック( Sysforensicsに基づいて)
- SWF解凍スキャン(バージョンv0.8以降)
- SAMのダンプチェック
- DoublePulsarチェック – ポート445 / tcpおよび3389 / tcpのDoublePulsarバックドアを検出しようとします。
- PE-Sieveプロセスチェック
WindowsバイナリはPyInstaller 2.1でコンパイルされ、x86およびx64ベースのシステムでx86アプリケーションとして実行する必要があります。
ダウンロード
リリースセクションからLOKIの最新バージョンをダウンロードしてください。
LOKIを実行してレポートを分析する方法
走る
- リリースセクションから最新のLOKIバージョンをダウンロードする
- 一度実行して最新の署名ベースリポジトリを取得する
- スキャンする必要のあるターゲットシステムに、リムーバブルメディア、ネットワーク共有、ターゲットシステム上のフォルダを提供する
- loki.exeを右クリックして「管理者として実行」を選択するか、Administratorとしてコマンドライン「cmd.exe」を開き、そこから実行します(管理者権限なしでもLOKIを実行できますが、いくつかのチェックは無効になります)。ディスクにアクセスできない)
レポート
- 結果のレポートには、緑色、黄色、または赤色の結果行が表示されます。
- 自分の所見を自分で分析してください:
- 非機密サンプルをVirustotal.comにアップロードする
- Webでファイル名を検索する
- ルール名からキーワードをWebで検索します(例:EQUATIONGroupMalware_1> “方程式グループ”検索)。
- ウェブでサンプルのMD5ハッシュを検索する
- 私の顧客のAPT検索エンジンでファイル名または識別子を検索する
- 問題のセクションで偽陽性を報告してください(ハッシュやファイル名のような偽陽性のインジケータとトリガーされたルール名について言及してください)
更新
バージョン0.21.0以来、LOKIには、 loki-upgrader.exe
loki-upgrader.py
またはloki-upgrader.py
という別のアップデータツールが含まれています。
usage: loki-upgrader.py [-h] [-l log-file] [--sigsonly] [--progonly] [--nolog]
[--debug]
Loki - Upgrader
optional arguments:
-h, --help show this help message and exit
-l log-file Log file
--sigsonly Update the signatures only
--progonly Update the program files only
--nolog Don't write a local log file
--debug Debug output
コンパイルされたWindows用のloki.exeとシグニチャベースのソースを更新することができます。
loki.exe --update
実行すると、新しいアップグレードプロセスが作成され、 loki.exe
を新しいものに置き換えるためにLOKIを終了します。そうでない場合はロックされます。
使用法
usage: loki.exe [-h] [-p path] [-s kilobyte] [-l log-file] [-r remote-loghost]
[-a alert-level] [-w warning-level] [-n notice-level]
[--printAll] [--allreasons] [--noprocscan] [--nofilescan]
[--scriptanalysis] [--rootkit] [--noindicator] [--reginfs]
[--dontwait] [--intense] [--csv] [--onlyrelevant] [--nolog]
[--update] [--debug]
Loki - Simple IOC Scanner
optional arguments:
-h, --help show this help message and exit
-p path Path to scan
-s kilobyte Maximum file size to check in KB (default 5000 KB)
-l log-file Log file
-r remote-loghost Remote syslog system
-a alert-level Alert score
-w warning-level Warning score
-n notice-level Notice score
--printAll Print all files that are scanned
--allreasons Print all reasons that caused the score
--noprocscan Skip the process scan
--nofilescan Skip the file scan
--scriptanalysis Activate script analysis (beta)
--rootkit Skip the rootkit check
--noindicator Do not show a progress indicator
--reginfs Do check for Regin virtual file system
--dontwait Do not wait on exit
--intense Intense scan mode (also scan unknown file types and all
extensions)
--csv Write CSV log format to STDOUT (machine prcoessing)
--onlyrelevant Only print warnings or alerts
--nolog Don't write a local log file
--update Update the signatures from the "signature-base" sub
repository
--debug Debug output
LOKIを構築する
このリポジトリのrelease
セクションでコンパイル済みの実行可能ファイルを使用する場合、要件はありません。
自分でLOKIを構築したい場合は:
LinuxまたはOS X
- yara :ちょうど最新のリリースのソースコードを使用して、コンパイルしてインストールします(またはpip install yara-pythonでインストールします)
- いくつかのPythonパッケージ:pip install yara-python psutil netaddr pylzma colorama
Windows
- yara:Windows用にコンパイルされたパッケージの最新バージョンを使用することをお勧めします(例:yara-python-3.5.0.0.win32-py2.7.exe – ここからダウンロードしてください: https : //github.com/VirusTotal/yara /リリース
- pywin32 :パスの変換(PyInstallerの問題 、Windowsのみ)
- Microsoft Visual C ++ 2010再頒布可能パッケージ( https://www.microsoft.com/en-US/download/details.aspx?id=5555 )
- Python 2.7用Microsoft Visual C ++コンパイラ( https://www.microsoft.com/en-us/download/details.aspx?id=44266):pylzma用
c:\Python27\python.exe -m pip install --upgrade pip
pip.exe install psutil netaddr wmi colorama pylzma pycrypto
プライベートルールセットを使用したLOKIパッケージ
LOKIには、暗号化されたカスタムルールセットがパッケージ化されており、pyinstallerパッケージに組み込まれています。 独自のルールを組み込むには、LOKIディレクトリのprivate-signatures
というディレクトリに配置し、 build.bat
を実行しbuild.bat
。
loki/
├── private-signatures/ <-- YARA rules places in here will by added to loki.exe
├── signature-base/ <-- clear text and still required (retrieved by loki-upgrader.exe)
│ ├── iocs/
│ ├── yara/
ビルドスクリプトを正常に実行するには、PyInstallerをインストールする必要があります。 PyInstaller 3を使用してビルドされたパッケージは、Windows 2003およびXPベースのシステムでは実行されないという問題のため、PyInstaller 2.1を使用します。 (はい、インシデント対応に必要です – Windows 2000またはWindows NTを実行している生産システムもあります)
PyInstallerをインストールする最も簡単な方法は次のとおりです。
pip install pyinstaller==2.1
その後、ビルドスクリプトを実行するだけです。
build.bat
署名セットが有効かどうかは、 loki-package-builder.py
手動で呼び出して確認できます。
C:\Python27\python.exe loki-package-builder.py --ruledir signatures --target rules
このツールの使用方法は次のとおりです。
usage: loki-package-builder.py [-h] --ruledir RULEDIR --target TARGET
Package builder for Loki
optional arguments:
-h, --help show this help message and exit
--ruledir RULEDIR directory containing the rules to build into Loki
--target TARGET target where to store the compiled ruleset
インテルレシーバの脅威に対する要件
署名とIOC
バージョン0.15以降、Yaraの署名はサブリポジトリの署名ベースに存在します。 LOKIリリースのZIPアーカイブをダウンロードし、LOKIを一度実行すると、すべての署名付きの「署名ベース」サブリポジトリをダウンロードできます。 バージョン0.21.0以来、個別のアップデータはloki-upgrader.exe
loki-upgrader.py
またはloki-upgrader.py
として提供されています。 LOKIは、 signature-base
という名前のサブフォルダ内のsignature-base
レポのIOCとシグネチャを期待しています。
ハッシュとファイル名のIOCファイルは ‘./signature-base/iocs’フォルダに保存されます。 ‘./signature-base/yara’フォルダに置かれたすべての ‘.yar’ファイルは、すでに含まれているルールセットとともに初期化されます。 署名の一致時にメッセージのレベルを定義するには、 ‘score’値を使用します。
‘./signature-base/iocs’サブフォルダにファイルを追加することで、ハッシュ、c2、およびファイル名IOCを追加できます。 すべてのハッシュIOCおよびファイル名IOCファイルは、LOKIが使用する形式でなければなりません(デフォルトファイルを参照)。 初期化時にファイル名に “hash”、 “filename”または “c2″という文字列が含まれている必要があります。
ハッシュIOC(改行で除算、ハッシュタイプは自動的に検出されます)
Hash;Description [Reference]
ファイル名IOC(改行で割ったもの)
# Description [Reference]
Regex;Score;False Positive Regex
あなたはあなたがLOKIを提供するYARA規則で次の外部変数を使用することができます
filename - e.g. condition: $s1 and not filename == 'nmap.exe'
filepatch - e.g. condition: filepath == 'C:\Windows\cmd.exe'
extension - e.g. condition: uint32(0) == 0x5a4d and extension == ".txt"
filetype - eg. condition: extension == ".txt" and filetype == "EXE"
(see file-type-signatures.cfg in signature-base repo for all detected file types)
md5 - legacy value
ユーザー定義のスキャン除外
バージョンv0.16.2以来、LOKIは新しい “./config”フォルダ内の “excludes.cfg”を介してユーザ定義除外の定義をサポートしています。 各行は正規表現を表し、ディレクトリウォーク中にファイル全体のパスに適用されます。 この方法では、ドライブ名、特定のフォルダ内のファイル拡張子、およびウイルス対策スキャンに敏感な製品に属するすべてのファイルとディレクトリに関係なく、特定のディレクトリを除外できます。
” ‘exclude.cfg’ ”は次のようになります。
# Excluded directories
#
# - add directories you want to exclude from the scan
# - double escape back slashes
# - values are case-insensitive
# - remember to use back slashes on Windows and slashes on Linux / Unix / OSX
# - each line contains a regex that matches somewhere in the full path (case insensitive)
# e.g.:
# Regex: \\System32\\
# Matches C:\Windows\System32\cmd.exe
#
# Regex: /var/log/[^/]+\.log
# Matches: /var/log/test.log
# Not Matches: /var/log/test.gz
#
# Useful examples
\\Ntfrs\\
\\Ntds\\
\\EDB[^\.]+\.log
Sysvol\\Staging\\Nntfrs_cmp
\\System Volume Information\\DFSR
PE-シーブ
バージョン0.26 LOKIは@ hasherezadeの素晴らしいツールPE-Sieveを統合してプロセスの異常を検出します 。
LOKIが起動時に./tools
サブフォルダ内で見つかると、ツールは初期化されます。
インテルレシーバの脅威
バージョンv0.10以来、LOKIには、これらのサービスのパブリックAPIを使用して、LOKIが理解できる形式でIOCを取り出して格納するさまざまな脅威インテリジェント受信機が含まれています。 これらのインジケータがすでに含まれているインジケータと重なっていても問題ありません。 Lokiはファイル名の正規表現またはハッシュを1回だけ使用します。 (予選のインパクトなし)
脅威インテリジェントレシーバはシグニチャベースのサブリポジトリにバージョン0.15で移動され、 “./signature-base/threatintel”にあります。
-k APIKEY
使用してAPIキーを提供するか、スクリプトのヘッダーに設定します。
脅威交換(OTX)レシーバを開く
Alienvault OTXから購読したイベント/ iocsをダウンロードし、正しい形式で ‘./iocs’サブフォルダに保存するシンプルなスクリプトです。 スクリプトは “./threatintel”フォルダにあり、 “get-otx-iocs.py”という名前です。 (上記の要件を参照)
usage: get-otx-iocs.py [-h] [-k APIKEY] [-o dir] [--verifycert] [--debug]
OTX IOC Receiver
optional arguments:
-h, --help show this help message and exit
-k APIKEY OTX API key
-o dir Output directory
--verifycert Verify the server certificate
--debug Debug output
MISP受信機
購読したイベント/ iocsをカスタムMISPインスタンスからダウンロードし、正しい形式で ‘./iocs’サブフォルダに保存する簡単なスクリプト。 MISPに保存されているYARAルールは ‘./iocs/yara’サブフォルダに書き込まれ、起動時に自動的に初期化されます。 このスクリプトは “./threatintel”フォルダにあり、 “get-misp-iocs.py”という名前です。 (上記の要件を参照)
usage: get-misp-iocs.py [-h] [-u URL] [-k APIKEY] [-l tframe] [-o dir]
[-y yara-dir] [--verifycert] [--debug]
MISP IOC Receiver
optional arguments:
-h, --help show this help message and exit
-u URL MISP URL
-k APIKEY MISP API key
-l tframe Time frame (e.g. 2d, 12h - default=30d)
-o dir Output directory
-y yara-dir YARA rule output directory
--verifycert Verify the server certificate
--debug Debug output
スクリーンショット
ロキスキャン
コマンドラインスキャン出力
ハッシュベースのIOC
ファイル名ベースのIOC
生成されたログファイル
接触
LOKIスキャナは、当社のホームページhttps://www.nextron-systems.com/loki/
Twitter @ cyb3rOps @thor_scanner
APTスキャンの企業ソリューションに興味がある場合は、Lokiの兄弟THORをチェックしてください。
スキャナのコンパイル
PyInstaller v2.1をダウンロードし、pyinstallerプログラムディレクトリに切り替えて次のコマンドを実行します。
python ./pyinstaller.py -F C:\path\to\loki.py
これにより、サブフォルダ./loki/dist
loki.exe
が作成されます。
プロのヒント(オプション)
ターゲットOSの互換性を向上させるためにmsvcr100.dllをインクルードするには、a.bianriesを含むファイル./loki/loki.spec
行を次のように変更します。
a.binaries + [('msvcr100.dll', 'C:\Windows\System32\msvcr100.dll', 'BINARY')],
Mac OS XでLOKIを使用する
- ここからYaraのソースをダウンロードする
- opensslをインストールします(brew install openssl、次にsudo cp -r /usr/local/Cellar/openssl/1.0.2h_1/include/usr/local)
- ./build.sh
- sudo make install
- フォルダ
yara-python
変更 -
python setup.py install
実行python setup.py install
- また、要件をインストールすると、
sudo pip install colorama
gitpython、netaddr、pylzmaなど… - Lokiフォルダにhttps://github.com/Neo23x0/signature-baseをダウンロードして解凍します。
- cd lokiフォルダ、sudoのpython loki.py -p /
代替案
LOKIは、私たちのスキャナラインナップの唯一のオープンソーススキャナであり、私的なプロジェクトでもありますが、オープンソースではなく、Windows、Linux、macOS用にプリコンパイルされた新しいフリースキャナSPARK Coreに興味があります。
ウイルス対策 – 偽陽性
コンパイルされたスキャナは、ウイルス対策エンジンによって検出される可能性があります。 これは、スキャナがコンパイルされたマルウェアコードでも使用されているファイルシステムとプロセススキャン機能を実装したコンパイル済みのPythonスクリプトであることが原因です。
コンパイルされた実行ファイルを信頼しない場合は、自分でコンパイルしてください。
ライセンス
Loki – Simple IOC Scanner Copyright(c)2015 Florian Roth
このプログラムはフリーソフトウェアです。フリーソフトウェア財団が発行したGNU一般公衆利用許諾契約書、バージョン3のライセンス、または(オプションで)それ以降のバージョンのいずれかの条件で、再配布および/または改変することができます。
このプログラムは有用であることを期待して配布されていますが、いかなる保証もありません。 商品性または特定目的への適合性の暗黙の保証さえも含みません。 詳細については、GNU General Public Licenseを参照してください。
このプログラムと共にGNU General Public Licenseのコピーを受け取ったはずです。 そうでない場合は、 http://www.gnu.org/licenses/を参照してください。
署名ベースライセンス
第三者によって作成されたYARAルールを除き、 signature-base
リポジトリ内のすべての署名とIOCファイルは、 Creative Commons Attribution-NonCommercial 4.0 International Licenseの下でライセンスされています。