GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

Neo23x0

Loki – Loki – シンプルなIOCとインシデントレスポンススキャナ

投稿日:

Loki – シンプルなIOCとインシデントレスポンススキャナ https://www.nextron-systems.com/compa …

Loki – シンプルなIOCスキャナ

単純な妥協の指標のためのスキャナ

検出は、4つの検出方法に基づいています。

  1. ファイル名IOC
    完全なファイルパス/名前の正規表現マッチ
  2. ヤラルールチェック
    ファイルデータとプロセスメモリに対する署名の一致
  3. ハッシュチェック
    既知の悪意のあるハッシュ(MD5、SHA1、SHA256)をスキャンしたファイルと比較します。
  4. C2バックコネクトチェック
    プロセス接続エンドポイントをC2 IOCと比較します(バージョンv.10以降)

追加チェック:

  1. Reginファイルシステムのチェック(–reginfsを介して)
  2. プロセス異常のチェック( Sysforensicsに基づいて)
  3. SWF解凍スキャン(バージョンv0.8以降)
  4. SAMのダンプチェック
  5. DoublePulsarチェック – ポート445 / tcpおよび3389 / tcpのDoublePulsarバックドアを検出しようとします。
  6. PE-Sieveプロセスチェック

WindowsバイナリはPyInstaller 2.1でコンパイルされ、x86およびx64ベースのシステムでx86アプリケーションとして実行する必要があります。

ダウンロード

リリースセクションからLOKIの最新バージョンをダウンロードしてください。

LOKIを実行してレポートを分析する方法

走る

  • リリースセクションから最新のLOKIバージョンをダウンロードする
  • 一度実行して最新の署名ベースリポジトリを取得する
  • スキャンする必要のあるターゲットシステムに、リムーバブルメディア、ネットワーク共有、ターゲットシステム上のフォルダを提供する
  • loki.exeを右クリックして「管理者として実行」を選択するか、Administratorとしてコマンドライン「cmd.exe」を開き、そこから実行します(管理者権限なしでもLOKIを実行できますが、いくつかのチェックは無効になります)。ディスクにアクセスできない)

レポート

  • 結果のレポートには、緑色、黄色、または赤色の結果行が表示されます。
  • 自分の所見を自分で分析してください:
    1. 非機密サンプルをVirustotal.comにアップロードする
    2. Webでファイル名を検索する
    3. ルール名からキーワードをWebで検索します(例:EQUATIONGroupMalware_1> “方程式グループ”検索)。
    4. ウェブでサンプルのMD5ハッシュを検索する
    5. 私の顧客の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

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の下でライセンスされています。







-Neo23x0
-, , , , , , , , ,

執筆者: