Maltrail は悪意のあるトラフィック検出システムであり、悪意のある証跡や一般に疑わしい証跡を含む公的に利用可能な (ブラック) リストと、さまざまな AV レポートやカスタム ユーザー定義リストからコンパイルされた静的な証跡を利用します。証跡はドメイン名 ( zvpprsensinaix.com
など) からのものにすることができます。 zvpprsensinaix.com
(Banjori マルウェアの場合)、URL (例: hXXp://109.162.38.120/harsh02.exe
(既知の悪意のある実行可能ファイルの場合))、IP アドレス (例:既知の攻撃者の場合は185.130.5.231
)、または HTTP User-Agent ヘッダー値(自動 SQL インジェクションおよびデータベース引き継ぎツールの場合はsqlmap
)。また、未知の脅威 (新しいマルウェアなど) の発見に役立つ高度なヒューリスティック メカニズムを (オプションで) 使用します。
次の(ブラック)リスト(つまりフィード)が使用されています。
360bigviktor, 360chinad, 360conficker, 360cryptolocker, 360gameover,
360locky, 360necurs, 360suppobox, 360tofsee, 360virut, abuseipdb, alienvault,
atmos, badips, bitcoinnodes, blackbook, blocklist, botscout,
bruteforceblocker, ciarmy, cobaltstrike, cruzit, cybercrimetracker,
dataplane, dshieldip, emergingthreatsbot, emergingthreatscip,
emergingthreatsdns, feodotrackerip, gpfcomics, greensnow, ipnoise,
kriskinteldns, kriskintelip, malc0de, malwaredomainlistdns, malwaredomains,
maxmind, minerchk, myip, openphish, palevotracker, policeman, pony,
proxylists, proxyrss, proxyspy, ransomwaretrackerdns, ransomwaretrackerip,
ransomwaretrackerurl, riproxies, rutgers, sblam, socksproxy, sslbl,
sslproxies, talosintelligence, torproject, trickbot, turris, urlhaus,
viriback, vxvault, zeustrackermonitor, zeustrackerurl, etc.
静的エントリの時点で、次の悪意のあるエンティティ (マルウェア C&C やシンクホールなど) の痕跡が (さまざまな AV レポートや個人的な調査から) 手動で組み込まれています。
1ms0rry, 404, 9002, aboc, absent, ab, acbackdoor, acridrain, activeagent,
adrozek, advisorbot, adwind, adylkuzz, adzok, afrodita, agaadex, agenttesla,
aldibot, alina, allakore, almalocker, almashreq, alpha, alureon, amadey,
amavaldo, amend_miner, ammyyrat, android_acecard, android_actionspy,
android_adrd, android_ahmythrat, android_alienspy, android_andichap,
android_androrat, android_anubis, android_arspam, android_asacub,
android_backflash, android_bankbot, android_bankun, android_basbanke,
android_basebridge, android_besyria, android_blackrock, android_boxer,
android_buhsam, android_busygasper, android_calibar, android_callerspy,
android_camscanner, android_cerberus, android_chuli, android_circle,
android_claco, android_clickfraud, android_cometbot, android_cookiethief,
android_coolreaper, android_copycat, android_counterclank, android_cyberwurx,
android_darkshades, android_dendoroid, android_dougalek, android_droidjack,
android_droidkungfu, android_enesoluty, android_eventbot, android_ewalls,
android_ewind, android_exodus, android_exprespam, android_fakeapp,
android_fakebanco, android_fakedown, android_fakeinst, android_fakelog,
android_fakemart, android_fakemrat, android_fakeneflic, android_fakesecsuit,
android_fanta, android_feabme, android_flexispy, android_fobus,
android_fraudbot, android_friend, android_frogonal, android_funkybot,
android_gabas, android_geinimi, android_generic, android_geost,
android_ghostpush, android_ginmaster, android_ginp, android_gmaster,
android_gnews, android_godwon, android_golddream, android_goldencup,
android_golfspy, android_gonesixty, android_goontact, android_gplayed,
android_gustuff, android_gypte, android_henbox, android_hiddad,
android_hydra, android_ibanking, android_joker, android_jsmshider,
android_kbuster, android_kemoge, android_ligarat, android_lockdroid,
android_lotoor, android_lovetrap, android_malbus, android_mandrake,
android_maxit, android_mobok, android_mobstspy, android_monokle,
android_notcompatible, android_oneclickfraud, android_opfake,
android_ozotshielder, android_parcel, android_phonespy, android_pikspam,
android_pjapps, android_qdplugin, android_raddex, android_ransomware,
android_redalert, android_regon, android_remotecode, android_repane,
android_riltok, android_roamingmantis, android_roidsec, android_rotexy,
android_samsapo, android_sandrorat, android_selfmite, android_shadowvoice,
android_shopper, android_simbad, android_simplocker, android_skullkey,
android_sndapps, android_spynote, android_spytekcell, android_stels,
android_svpeng, android_swanalitics, android_teelog, android_telerat,
android_tetus, android_thiefbot, android_tonclank, android_torec,
android_triada, android_uracto, android_usbcleaver, android_viceleaker,
android_vmvol, android_walkinwat, android_windseeker, android_wirex,
android_wolfrat, android_xavirad, android_xbot007, android_xerxes,
android_xhelper, android_xploitspy, android_z3core, android_zertsecurity,
android_ztorg, andromeda, antefrigus, antibot, anubis, anuna, apocalypse,
apt_12, apt_17, apt_18, apt_23, apt_27, apt_30, apt_33, apt_37, apt_38,
apt_aridviper, apt_babar, apt_bahamut, etc.
Maltrail は、トラフィック->センサー<->サーバー<->クライアントアーキテクチャに基づいています。センサーは、監視ノード (SPAN/ミラーリング ポートに受動的に接続されている Linux プラットフォーム、または Linux ブリッジ上で透過的にインラインに接続されているなど) またはスタンドアロン マシン (ハニーポットなど) で実行され、通過するトラフィックを「監視」するスタンドアロン コンポーネントです。ブラックリストに登録された項目/証跡 (つまり、ドメイン名、URL、および/または IP)。一致が正しければ、イベントの詳細が (中央)サーバーに送信され、イベントの詳細は適切なログ ディレクトリ (つまり、 「構成」セクションで説明されているLOG_DIR
) 内に保存されます。 Sensor がServerと同じマシンで実行されている場合 (デフォルト構成)、ログはローカルのログ ディレクトリに直接保存されます。それ以外の場合、それらは UDP メッセージ経由でリモート サーバー (つまり、 「構成」セクションで説明されているLOG_SERVER
) に送信されます。
Serverの主な役割は、イベントの詳細を保存し、レポート Web アプリケーションにバックエンド サポートを提供することです。デフォルト構成では、サーバーとセンサーは同じマシン上で実行されます。したがって、センサーアクティビティの潜在的な中断を防ぐために、フロントエンドレポート部分は「ファットクライアント」アーキテクチャに基づいています(つまり、すべてのデータの後処理はクライアントのWebブラウザインスタンス内で行われます)。選択された (24 時間) 期間のイベント (つまり、ログ エントリ) はクライアントに転送され、レポート Web アプリケーションがプレゼンテーション部分のみを担当します。データは圧縮されたチャンクでクライアントに送信され、そこで順次処理されます。最終レポートは非常に凝縮された形式で作成されるため、事実上無制限の数のイベントをプレゼンテーションすることができます。
注:サーバーコンポーネントは完全にスキップして、スタンドアロンのSensorだけを使用することができます。このような場合、すべてのイベントはローカルのログ ディレクトリに保存され、ログ エントリは手動または CSV 読み取りアプリケーションによって調べることができます。
実際の脅威を集めた完全に機能するデモ ページは、ここにあります。
Maltrail を適切に実行するには、 *nix/BSD システム上で Python 2.6 、 2.7または3.xが、インストールされた pcapy-ng パッケージとともに必要です。
注: pcapy-ng
の代わりにpcapy
lib を使用すると、特にPython 3.x環境で Maltrail が正しく動作しない可能性があります。例。
センサーコンポーネントをシングルプロセス モードで実行するには少なくとも 1GB の RAM が必要で、マルチプロセス モードで実行する場合はオプションCAPTURE_BUFFER
に使用される値に応じてそれ以上の RAM が必要です。さらに、 Sensorコンポーネント (一般的な場合) には管理者/root 権限が必要です。
サーバーコンポーネントには特別な要件はありません。
次の一連のコマンドにより、Maltrail Sensor が起動して実行されます (デフォルト設定と監視インターフェイスが「any」の状態ですぐに使用できます)。
sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
sudo zypper install gcc gcc-c++ git libpcap-devel python3-devel python3-pip procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
同じマシン上で (オプションの)サーバーを起動するには、新しいターミナルを開いて次のコマンドを実行します。
[[ -d maltrail ]] || git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
python server.py
すべてが稼働していることをテストするには、次のコマンドを実行します。
ping -c 1 136.161.101.53
cat /var/log/maltrail/ $( date + " %Y-%m-%d " ) .log
また、DNS トラフィックのキャプチャをテストするには、次のことを試すことができます。
nslookup morphed.ru
cat /var/log/maltrail/ $( date + " %Y-%m-%d " ) .log
センサーインスタンスとサーバーインスタンスを停止するには (バックグラウンドで実行している場合)、次のコマンドを実行します。
sudo pkill -f sensor.py
pkill -f server.py
Web ブラウザから http://127.0.0.1:8338 (デフォルトの認証情報: admin:changeme!
) にアクセスして、レポート インターフェイス (つまりClient ) にアクセスします。
センサーの設定は、 maltrail.conf
ファイルの[Sensor]
セクション内にあります。
オプションUSE_MULTIPROCESSING
がtrue
に設定されている場合、すべての CPU コアが使用されます。 1 つのコアはパケット キャプチャ (適切なアフィニティ、IO 優先順位、および Nice レベル設定) にのみ使用され、他のコアはパケット処理に使用されます。それ以外の場合は、すべてが単一のコアで実行されます。オプションUSE_FEED_UPDATES
使用すると、フィードからの証跡の更新を完全にオフにすることができます (提供された静的な更新のみを使用します)。オプションUPDATE_PERIOD
には、 trails
ディレクトリ内の定義を使用して、証跡の自動更新間の秒数が含まれます (注: デフォルト値は86400
(つまり 1 日) に設定されています) (注:センサーとサーバーの両方が証跡の更新を処理します)。ユーザーはオプションCUSTOM_TRAILS_DIR
使用して、カスタム証跡 ( *.txt
) ファイルを含むディレクトリの場所を指定できます。
オプションUSE_HEURISTICS
、ヒューリスティック メカニズム (例: long domain name (suspicious)
、 excessive no such domain name (suspicious)
、 direct .exe download (suspicious)
など) をオンにし、誤検知を引き起こす可能性があります。オプションCAPTURE_BUFFER
、マルチプロセッシング モードの場合に、非キャプチャ プロセスによるさらなる処理のためにパケット キャプチャをリング バッファに保存するために使用される合計メモリ (合計物理メモリのバイト数のパーセンテージ) を示します。オプションMONITOR_INTERFACE
には、キャプチャ インターフェイスの名前が含まれている必要があります。すべてのインターフェイスからキャプチャするには、値any
を使用します (OS がこれをサポートしている場合)。オプションCAPTURE_FILTER
は、興味のないパケットをスキップしてキャプチャ プロセスを容易にするネットワーク キャプチャ ( tcpdump
) フィルタを含める必要があります。オプションSENSOR_NAME
には、イベントのsensor_name
値内に表示される名前が含まれているため、あるセンサーからのイベントを他のセンサーから区別できます。オプションLOG_SERVER
が設定されている場合、すべてのイベントはリモートでServerに送信されます。それ以外の場合、イベントは、オプションLOG_DIR
で設定されたロギング ディレクトリに直接保存されます。このディレクトリは、 maltrail.conf
ファイルの[All]
セクション内にあります。オプションUPDATE_SERVER
が設定されている場合、すべての証跡は指定された場所から取得されます。それ以外の場合は、インストール自体の内部にある証跡定義から更新されます。
オプションSYSLOG_SERVER
および/またはLOGSTASH_SERVER
使用して、センサー イベント (つまり、ログ データ) を非 Maltrail サーバーに送信できます。 SYSLOG_SERVER
の場合、イベント データは CEF ( Common Event Format ) 形式で、指定されたアドレス (例: 192.168.2.107:514
) でリッスンしている UDP (例: Syslog) サービスに送信されます。一方、 LOGSTASH_SERVER
の場合、イベント データは で送信されます。指定されたアドレスでリッスンする UDP (例: Logstash) サービスへの JSON 形式 (例: 192.168.2.107:5000
)。
UDP 経由で送信されるイベント データの例は次のとおりです。
SYSLOG_SERVER
の場合 (注: LogSeverity
値は 0 (低)、1 (中)、2 (高) です): Dec 24 15:05:55 beast CEF:0|Maltrail|sensor|0.27.68|2020-12-24|andromeda (malware)|2|src=192.168.5.137 spt=60453 dst=8.8.8.8 dpt=53 trail=morphed.ru ref=(static)
LOGSTASH_SERVER
の場合: {"timestamp": 1608818692, "sensor": "beast", "severity": "high", "src_ip": "192.168.5.137", "src_port": 48949, "dst_ip": "8.8.8.8", "dst_port": 53, "proto": "UDP", "type": "DNS", "trail": "morphed.ru", "info": "andromeda (malware)", "reference": "(static)"}
センサー (例: sudo python sensor.py
) を初めて実行するとき、および/または長期間実行されなかった後に、証跡定義 (注: trails
ディレクトリ内に保存されている) から証跡が自動的に更新されます。初期化後、設定されたインターフェイス ( maltrail.conf
内のオプションMONITOR_INTERFACE
) の監視が開始され、設定されたログ ディレクトリ ( maltrail.conf
ファイルのセクション[All]
内のオプションLOG_DIR
) にイベントが書き込まれるか、リモートでイベントが送信されます。ロギング/レポートサーバー(オプションLOG_SERVER
)。
検出されたイベントは、 Serverのログ ディレクトリ (つまり、 maltrail.conf
ファイルのセクション[All]
内のオプションLOG_DIR
) 内に、読みやすい CSV 形式 (注: 空白 ' ' は区切り文字として使用されます) で単一行エントリとして保存されます。構成: time
sensor
src_ip
src_port
dst_ip
dst_port
proto
trail_type
trail
trail_info
reference
(例: "2015-10-19 15:48:41.152513" beast 192.168.5.33 32985 8.8.8.8 53 UDP DNS 0000mps.webpreview.dsl.net malicious siteinspector.comodo.com
):
サーバーの設定は、 maltrail.conf
セクション[Server]
内にあります。
オプションHTTP_ADDRESS
には、Web サーバーのリスニング アドレスが含まれます (注: すべてのインターフェイスでリスニングするには0.0.0.0
を使用します)。オプションHTTP_PORT
には、Web サーバーのリスニング ポートが含まれます。デフォルトのリスニング ポートは8338
に設定されています。オプションUSE_SSL
がtrue
に設定されている場合、Web サーバー (例: https://192.168.6.10:8338/
) へのアクセスにSSL/TLS
使用されます。その場合、オプションSSL_PEM
サーバーのプライベート/証明書 PEM ファイルを指している必要があります。
サブセクションUSERS
は、ユーザーの構成設定が含まれます。各ユーザー エントリはusername:sha256(password):UID:filter_netmask(s)
で構成されます。値UID
一意のユーザー識別子を表し、管理アカウントには 1000 未満の値を使用し、非管理アカウントにはそれより高い値を使用することをお勧めします。 filter_netmask(s)
の部分は、ユーザー アカウントに応じて表示されたイベントをフィルターするために使用できる、カンマ区切りのハード フィルターを表します。デフォルトのエントリは次のとおりです。
オプションUDP_ADDRESS
にはサーバーのログ収集リスニング アドレスが含まれます (注: すべてのインターフェイスでリッスンするには0.0.0.0
使用します)。オプションUDP_PORT
にはリスニング ポート値が含まれます。オンにすると、オプションLOG_SERVER
と組み合わせて使用され、個別の (複数の)センサー<->サーバーアーキテクチャに使用できます。
オプションFAIL2BAN_REGEX
には、抽出用の/fail2ban
Web 呼び出しで使用される正規表現 (例: attacker|reputation|potential[^"]*(web scan|directory traversal|injection|remote code|iot-malware download|spammer|mass scanner
)が含まれます。これにより、IP ブロック メカニズム (例: fail2ban
、 iptables
、またはipset
) の使用が可能になります。ブラックリストに登録された IP アドレスをリモートの場所から定期的に取得する場合の使用例は、次のようなスクリプトです (分単位でroot
cron ジョブを実行するなど)。
#! /bin/bash
ipset -q flush maltrail
ipset -q create maltrail hash:net
for ip in $( curl http://127.0.0.1:8338/fail2ban 2> /dev/null | grep -P ' ^[0-9.]+$ ' ) ; do ipset add maltrail $ip ; done
iptables -I INPUT -m set --match-set maltrail src -j DROP
オプションBLACKLIST
使用すると、1 つのフィールドに適用する正規表現を作成できます。各ルールの構文は次のとおりです: <field> <control> <regexp>
ここで、:
field
、コンページするフィールドを示します。 src_ip
、 src_port
、 dst_ip
、 dst_port
、 protocol
、 type
、 trail
、またはfilter
です。control
、一致する場合は~
、一致しない場合は!~
のいずれかですregexp
フィールドに適用する正規表現です。 and
キーワードを使用して別のルールを連結します ( or
キーワードはサポートされていません。これには行を追加するだけです)。キーワードBLACKLIST
を単独で使用することも、名前BLACKLIST_NAME
を追加することもできます。後者の場合、URL は/blacklist/name
になります。
たとえば、次の例では、 192.168.0.0/16
以外の送信元から宛先ポートSSH
へのすべてのトラフィック、またはフィルタscan
またはknown attacker
と一致するトラフィックのアウト ブラックリストを構築します。
BLACKLIST_OUT
src_ip !~ ^192.168. and dst_port ~ ^22$
src_ip !~ ^192.168. and filter ~ scan
src_ip !~ ^192.168. and filter ~ known attacker
BLACKLIST_IN
src_ip ~ ^192.168. and filter ~ malware
ipset ブラックリストを作成する方法は、この例では URL が/blacklist/in
と/blacklist/out
になることを除いて同じです (上記を参照)。
Sensorと同様に、サーバー(例: python server.py
) を初めて実行するとき、および/または長期間非実行の後に、オプションUSE_SERVER_UPDATE_TRAILS
がtrue
に設定されている場合、証跡定義から証跡が自動的に更新されます (注: trails
ディレクトリ内に保存されます)。その基本的な機能は、ログ ディレクトリ内にログ エントリを保存し (つまり、 maltrail.conf
ファイルのセクション[All]
内のオプションLOG_DIR
)、同じエントリをエンド ユーザーに提示するための Web レポート インターフェイスを提供することです (注: Apache などのサードパーティ Web サーバー パッケージをインストールする必要があります):
Serverのレポート インターフェイスに入るとき (つまり、オプションHTTP_ADDRESS
およびHTTP_PORT
で定義されたアドレス経由)、ユーザーには次の認証ダイアログが表示されます。ユーザーは、構成ファイルmaltrail.conf
内でサーバーの管理者によって設定された適切な資格情報を入力する必要があります (注: デフォルトの資格情報はadmin:changeme!
です)。
内部に入ると、次のレポート インターフェイスが表示されます。
上部にはスライド式のタイムラインがあり (注: 現在の日付ラベルやカレンダー アイコンをクリックするとアクティブになります)、ユーザーは過去のイベントのログを選択できます (注: イベントにマウスを置くと、現在のイベントのおおよその数を示すツールチップが表示されます)日付)。日付は月ごとにグループ化されており、ウィジェット自体の中に 4 か月分のデータが表示されます。ただし、提供されたスライダー (つまり ) を使用すると、ユーザーは前月のイベントに簡単にアクセスできます。
日付をクリックすると、その特定の日付のすべてのイベントがロードされ、クライアントの Web ブラウザーに表示されます。イベントの数とネットワーク接続速度に応じて、ログに記録されたイベントの読み込みと表示には数秒から最大で数分かかることがあります (たとえば、100,000 件のイベントには合計で約 5 秒かかります)。処理時間全体にわたって、無効化されたユーザー インターフェイス全体にアニメーション ローダーが表示されます。
中央部分には、表示されたイベントの概要が保持されます。 Events
ボックスは、選択した 24 時間のイベントの総数を表します。赤い線は IP ベースのイベント、青い線は DNS ベースのイベント、黄色の線は URL ベースのイベントを表します。 Sources
ボックスは、上位ソースごとのイベント数を積み上げ縦棒グラフの形式で表し、ソースの合計数が一番上に表示されます。 Threats
ボックスは、上位の脅威のパーセンテージを円グラフの形式で表します (注: 灰色の領域には、合計イベント数が 1% 未満のすべての脅威が表示されます)。脅威の合計数が上に表示されます。 Trails
ボックスは、上位のトレイルのパーセンテージを円グラフの形式で表し (注: 灰色の領域には、合計イベント数が 1% 未満のすべてのトレイルが表示されます)、トレイルの合計数が上部に表示されます。これらの各ボックスはアクティブになっているため、いずれかのボックスをクリックすると、より詳細なグラフが表示されます。
下部には、ログに記録されたイベントの要約表現がページ分割されたテーブルの形式で保持されます。各エントリには、単一の脅威の詳細が保持されます (注: 外部からの攻撃の場合のように、 src_ip
がtrail
と同じである場合は、 (src_ip, trail)
trail) または(dst_ip, trail)
のペアによって一意に識別されます)。
列のthreat
には脅威の一意の ID (例: 85fdb08d
) と色 (注: 脅威の ID から抽出)、 sensor
はイベントがトリガーされたセンサー名 (例: blitvenica
)、 events
は現在の脅威のイベントの総数が保持されます。 、 severity
、評価された脅威の重大度を保持します (注: info
とreference
列の値に基づいて計算され、マルウェアが生成したトラフィックを優先します)、 first_seen
、最初のイベントの時間を保持します。選択された (24 時間) 期間 (例: 06th 08:21:54
)、 last_seen
選択された (24 時間) 期間 (例: 06th 15:21:23
) の最後のイベントの時間を保持します。 sparkline
は、選択された期間における脅威の活動を表す小さなスパークライン グラフを保持します。 、 src_ip
脅威の送信元 IP を保持します (例99.102.41.102
)、 src_port
送信元を保持しますポート (例: 44556, 44589, 44601
)、 dst_ip
は宛先 IP (例: 213.202.100.28
)、 dst_port
宛先ポート (例: 80 (HTTP)
)、 proto
プロトコルを保持、(例: TCP
)、 trail
イベントをトリガーしたブラックリスト (またはヒューリスティック) エントリを保持しますinfo
脅威/証跡に関する詳細情報を保持します (例: 既知known attacker
、起動時にマルウェアが一般的に使用する既知の IP 情報サービスの場合はipinfo
)、 reference
ブラックリストに登録されたエントリのソースを保持します (例: 静的証跡の場合は(static)
、同じソースから取得された動的フィードのmyip.ms
) およびtags
、特定の証跡 (例: APT28
) のユーザー定義タグを保持します。
src_ip
およびdst_ip
テーブル エントリの上にマウスを移動すると、詳細な逆引き DNS および WHOIS 情報を含む情報ツールチップが表示されます (注: RIPE は情報プロバイダーです)。
同じ脅威エントリ内で異なるイベントの詳細 (例: src_port
、 dst_port
、 proto
など) は、バブル アイコン (つまり ) の形式で要約されます。これは、可能な限り少ない行数で使用可能なレポート インターフェイスを取得するために実行されます。このようなアイコンの上にマウスを移動すると、保持されているすべての項目を含む情報ツールチップが表示されます (たとえば、 attacker
によってスキャンされているすべてのポート番号)。
このようなアイコンの 1 つをクリックすると、保存されているすべての項目 (注: 非圧縮形式) を含む新しいダイアログが開き、さらなる分析のためにコピーアンドペーストできるようになります。
脅威の痕跡の上にマウス ポインタを数秒間置くと、その痕跡を検索語として使用した結果で構成されるフレームが表示されます。検索暗号化検索エンジン「searX」。多くの場合、これにより脅威自体に関する基本情報が提供されるため、ユーザーが手動で脅威を検索する必要がなくなります。開いたフレーム ウィンドウの右上隅に 2 つの追加のボタンがあります。最初のフレーム (ie ) をクリックすると、結果のフレームが新しいブラウザのタブ (またはウィンドウ) 内で開きますが、2 番目のフレーム (ie ) をクリックすると、すぐにフレームが閉じます (注: 同じアクションは、マウスポインタがフレーム境界線の外側にある場合):
脅威ごとに列tag
があり、同じ証跡を共有するすべての脅威を詳しく説明するために任意の「タグ」を入力できます。また、これは脅威を個別に説明する優れた方法であるため、同じタグ (例: yahoo
) を共有するすべての脅威を後でグループ化できます。
次のセクションでは、「通常の容疑者」シナリオのいくつかを実際の事例を通じて説明します。
大量スキャンは、個人や組織が 0.0.0.0/0 IP 範囲全体 (つまり、インターネット全体) を毎日スキャンする権利を自分たちに与える、かなり一般的な現象です。その場合は、今後のスキャンをスキップしてもらうために、個人的に連絡を取る必要があります。
さらに悪いことに、Shodan や ZoomEye などの組織は、検索エンジンを通じてすべての結果を (他の潜在的な攻撃者に) 自由に利用できるようにしています。次のスクリーンショットでは、1 日の Shodan スキャンの詳細が表示されます。
以下は、「攻撃者」のアドレスの DNS および WHOIS 逆引き検索です。
trail
列の内容 (IP アドレス) の上にマウス ポインタを置くと、searX からの検索結果が表示され、「攻撃者」に関する詳細情報を見つけることができます。
大規模な組織の場合、 dst_ip
列には、スキャンされた IP アドレスの大規模なリストが表示されます。
dst_port
列には、このような一括スキャンによってスキャンされたすべてのポートが表示されます。
他の同様の状況では、ブラックリストに登録された個々の攻撃者 (この場合は cinsscore.com によるもの) からの同じ動作が見られます。
もう 1 つの一般的な動作は、1 つの特定のポート (たとえば、Heartbleed が見つかった場合の TCP ポート 443) を検索するために 0.0.0.0/0 IP 範囲全体 (つまり、インターネット) をスキャンすることです。次のスクリーンショットでは、以前にブラックリストに登録された攻撃者 (この場合は、alienvault.com と他の 2 つのブラックリストによるもの) が、誤って設定された VoIP デバイスを探して UDP ポート 5060 (つまり SIP) をターゲットにしているケースの 1 つを示しています。
Tor 匿名ネットワークの背後に隠れている潜在的な攻撃者を特定するために、Maltrail は公開されている Tor 出口ノードのリストを利用します。次のスクリーンショットでは、潜在的な攻撃者が Tor ネットワークを利用して、組織の範囲内の Web ターゲットに (HTTP 経由で) 不審な方法でアクセスしている例が示されています (10 分間に合計 171 回の接続リクエスト)。
前のケースとよく似たケースは、以前にブラックリストに登録されていた攻撃者が、かなり不審な方法で組織の範囲内の特定のサービス (例: 非 HTTP ) にアクセスしようとした場合です (つまり、15 分以内に合計 1513 回の接続試行)。
ssh attacker
Filter
フィールドに入力すると、その日の同様の発生をすべて表示できますが、この場合はポート 22 (つまり SSH) です。
組織内の感染したコンピュータから既知の C&C サーバーへの接続試行の場合、次のような脅威が見つかります (この場合は Beebone)。
既知の DGA ドメイン名を含む DNS リクエストの場合、脅威は次のように表示されます (この場合は Necurs):
次の場合、ブラックリストに登録された (この場合は malwarepatrol.net による) URL からのファイルのダウンロードが発生しました。
特定のマルウェア名 (この場合は Ramnit) をFilter
フィールドに入力すると、このマルウェアに関連することがわかっている脅威のみがフィルターされます (影響を受けるすべての内部コンピューターが表示されます)。
より一般的には、 Filter
フィールドにmalware
入力すると、マルウェア (関連) の証跡 ( IP
アドレスなど) で見つかったすべての脅威が次のようにフィルターされます。
Maltrail は、不審なアクティビティに一般的に関与していることが知られている TLD ドメインの静的リストを使用します。このような TLD ドメインのほとんどは無料のドメイン レジストラ (Freenom など) から提供されているため、より厳しい監視を受ける必要があります。次のスクリーンショットでは、そのような TLD ドメイン.cm
、DGA アルゴリズムを使用して C&C サーバーに接続する未知のマルウェアによって使用されているケースがわかります。
また、完全に有効な TLD ドメイン (例: .ru
) が不審なアクティビティに使用される場合もあります。この場合 (例: long domain name (suspicious)
)、ドメインは明らかに未知のマルウェアによって生成された DGA です。
Maltrail は、不審なアクティビティ (宛先の IP アドレスを頻繁に変更するマルウェア C&C サーバーなど) でよく使用される、いわゆる「動的ドメイン」の静的リストを使用します。
また、Maltrail は、不審なアクティビティ (Tor2Web サービスを使用して C&C サーバーにアクセスするマルウェアなど) にもよく使用される「onion」関連ドメインの静的リストを使用します。
組織の感染した内部コンピューター上に古いマルウェアや時代遅れのマルウェアが検出されずに存在する場合、マルウェアが DNS 解決を行わずに長く機能しなくなった C&C サーバーのドメインに継続的に接続しようとする「現象」がよく発生します。したがって、そのような種類の (潜在的な) 脅威はexcessive no such domain (suspicious)
としてマークされます。
1 つの証跡があまりにも多くの脅威に関与している場合 (例: DNS 増幅攻撃のような偽のソース IP の場合)、すべての同様の脅威は 1 つのflood
脅威の下にグループ化されます (注: 脅威の ID にはサフィックスF0
が付けられます)。次の例のように:
多くのマルウェアは、被害者のインターネット IP アドレスを見つけるために、ある種のipinfo
サービス (例: ipinfo.io) を使用します。定期的な場合、特に営業時間外の場合、次の例のように、この種のリクエストを注意深く監視する必要があります。
フィルターipinfo
使用すると、この種の不審な動作を共有する、組織の範囲内にある感染の可能性のあるコンピューターをすべてリストできます。
Maltrail は、疑わしいファイルの直接ダウンロード試行をすべて追跡します (例: .apk
、 .bin
、 .class
、 .chm
、 .dll
、 .egg
、 .exe
、 .hta
、 .hwp
、 .lnk
、 .ps1
、 .scr
、 .sct
、 .wbk
ファイル拡張子は.wbk
および.xpi
)。これは多くの誤検知を引き起こす可能性がありますが、最終的には感染連鎖の再構築に役立つ可能性があります (注: Google などの正規のサービス プロバイダーは通常、この種のダウンロードを実行するために暗号化された HTTPS を使用します)。
外部の Web アプリケーション セキュリティ スキャナ (SQLi、XSS、LFI などの脆弱性の検索など) からの疑わしいリクエストや、未知の Web サイトに対する内部ユーザーの悪意のある試みの場合、次のような脅威が見つかる可能性があります (実際のケース)。 Joomla! CMS CVE-2015-7297、CVE-2015-7857、および CVE-2015-7858 の脆弱性を悪用しようとする攻撃者):
次の例では、Web アプリケーションの脆弱性スキャンが「疑わしい」としてマークされています。
バブル アイコン (つまり ) をクリックして詳細を表示し、内容全体をテキスト ファイルにコピーして貼り付けると、疑わしい HTTP リクエストをすべて確認できます。
次のスクリーンショットでは、一般的な SQLi 脆弱性ツール sqlmap の実行がログ内で見つかります。
かなりの量の異なる TCP ポートへの接続試行が多すぎる場合、Maltrail はヒューリスティック メカニズム検出の結果として、潜在的なポート スキャンについて警告します。次のスクリーンショットでは、一般的なポート スキャン ツール nmap の実行時にこのような警告が表示されます。
Web サーバー インフラストラクチャに対する一般的な DDoS 攻撃の 1 つは、(疑似) ランダムなサブドメイン名 (例: abpdrsguvjkyz.www.dedeni.com
) に対して有効な DNS 再帰クエリを実行することによって、(メイン) DNS サーバーのリソースを枯渇させることです。
さまざまなプログラム (特にモバイル ベース) は、機密性の高いデータをリモート ビーコン ポストに送信するマルウェア (のような) 動作を示します。 Maltrail は、次の例のようにそのような動作をキャプチャしようとします。
他のすべてのセキュリティ ソリューションと同様に、Maltrail は「誤検知」の傾向があります。このような場合、Maltrail は (特にsuspicious
脅威の場合) 通常のユーザーの行動を記録し、悪意のあるユーザーおよび/または疑わしいユーザーとしてマークします。次の例では、ブラックリスト フィード プロバイダーblocklist.de
通常の Google サーバーをattacker
としてマークし、その結果次の脅威が発生したことがわかります。
軌跡の上にマウスを置くと、searX 検索の結果が表示されるフレームに、これが (おそらく) 通常の Google のサーバーであることが示されます。
別の例として、通常の.work
ドメイン (悪意のある目的で一般的な TLD) にアクセスすると、次のような脅威が発生します。
ただし、管理者は、次の例に示すように、追加の時間を費やして、「疑わしい」が悪意のあるものであるかどうかを (他の手段を使用して) 確認する必要があります。
Ubuntu/Debianの場合
sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
cd /tmp
git clone --depth 1 https://github.com/stamparm/maltrail.git
sudo mv /tmp/maltrail /opt
sudo chown -R $USER : $USER /opt/maltrail
SUSE/openSUSEの場合
sudo zypper install gcc gcc-c++ git libpcap-devel python3-devel python3-pip procps schedtool
sudo pip3 install pcapy-ng
cd /tmp
git clone --depth 1 https://github.com/stamparm/maltrail.git
sudo mv /tmp/maltrail /opt
sudo chown -R $USER : $USER /opt/maltrail
作業環境を設定します。
sudo mkdir -p /var/log/maltrail
sudo mkdir -p /etc/maltrail
sudo cp /opt/maltrail/maltrail.conf /etc/maltrail
sudo nano /etc/maltrail/maltrail.conf
実行環境を設定します。
crontab -e # autostart server & periodic update
*/5 * * * * if [ -n "$(ps -ef | grep -v grep | grep 'server.py')" ]; then : ; else python3 /opt/maltrail/server.py -c /etc/maltrail/maltrail.conf; fi
0 1 * * * cd /opt/maltrail && git pull
sudo crontab -e # autostart sensor & periodic restart
*/1 * * * * if [ -n "$(ps -ef | grep -v grep | grep 'sensor.py')" ]; then : ; else python3 /opt/maltrail/sensor.py -c /etc/maltrail/maltrail.conf; fi
2 1 * * * /usr/bin/pkill -f maltrail
systemd サービスとして有効化します (Linux のみ):
sudo cp /opt/maltrail/maltrail-sensor.service /etc/systemd/system/maltrail-sensor.service
sudo cp /opt/maltrail/maltrail-server.service /etc/systemd/system/maltrail-server.service
sudo systemctl daemon-reload
sudo systemctl start maltrail-server.service
sudo systemctl start maltrail-sensor.service
sudo systemctl enable maltrail-server.service
sudo systemctl enable maltrail-sensor.service
systemctl status maltrail-server.service && systemctl status maltrail-sensor.service
注: /maltrail-sensor.service
/maltrail-server.service
を事前に開始しなくても、専用サービスとして開始できます。これは、 /maltrail-server.service
がインストールされており、ネットワーク環境内の別のマシンで動作する場合に便利です。
このソフトウェアは MIT ライセンスに基づいて提供されます。詳細については、付属の LICENSE ファイルを参照してください。
1トレイル(のみ)を使用する
2トレイルへのコネクター (のみ)