GitHubじゃ!Pythonじゃ!

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

stamparm

maltrail – 悪意のあるトラフィック検出システム

投稿日:

悪意のあるトラフィック検出システム

コンテンツ

前書き

Maltrailは悪意のあるトラフィックや一般的に疑わしいトレイルを含む一般公開されている(ブラック)リストを利用した悪意のあるトラフィック検出システムであり、さまざまなAVレポートやカスタムユーザ定義リストからコンパイルされた静的なトレイルに加え、ドメイン名( zvpprsensinaix.com (例えば、既知の攻撃者の場合は185.130.5.231 )、HTTPユーザーエージェントのヘッダー値の場合(例えば自動の場合はsqlmap )、URL(例:悪意のある実行可能ファイルの場合は http://109.162.38.120/harsh02.exe ) SQLインジェクションとデータベース引き継ぎツール)。 また、未知の脅威(新しいマルウェアなど)の発見に役立つ高度なヒューリスティックメカニズム(オプション)を使用します。

次の(黒の)リスト(すなわちフィード)が利用されています:

alienvault, autoshun, badips, bambenekconsultingc2dns,
bambenekconsultingc2ip, bambenekconsultingdga, bitcoinnodes,
blocklist, botscout, bruteforceblocker, ciarmy, cruzit,
cybercrimetracker, deepviz, dataplanesipinvitation,
dataplanesipquery, dataplane, dshielddns, dshieldip, 
emergingthreatsbot, emergingthreatscip, emergingthreatsdns,
feodotrackerdns, malwaredomainlist, malwaredomains, malwarepatrol,
maxmind, myip, nothink, openbl, openphish, packetmailcarisirt,
packetmailramnode, palevotracker, policeman, proxylists, proxyrss,
proxy, ransomwaretrackerdns, ransomwaretrackerip,
ransomwaretrackerurl, riproxies, rutgers, sblam, securityresearch,
snort, socksproxy, sslipbl, sslproxies, torproject, torstatus,
turris, urlvir, voipbl, vxvault, zeustrackerdns, zeustrackerip,
zeustrackermonitor, zeustrackerurl, etc.

静的エントリの場合、次のような悪意のあるエンティティ(マルウェアのC&Cまたはシンクホールなど)の追跡は、さまざまなAVレポートやパーソナルリサーチから手動で行われています。

aboc, adwind, alienspy, almalocker, alureon, android_acecard, 
android_adrd, android_alienspy, android_arspam, 
android_backflash, android_basebridge, android_boxer, 
android_chuli, android_claco, android_coolreaper, 
android_counterclank, android_cyberwurx, android_dendoroid, 
android_dougalek, android_droidjack, android_droidkungfu, 
android_enesoluty, android_ewalls, android_exprespam, 
android_fakebanco, android_fakedown, android_fakeinst, 
android_fakelog, android_fakemart, android_fakemrat, 
android_fakeneflic, android_fakesecsuit, android_feabme, 
android_flexispy, android_frogonal, android_geinimi, 
android_ghostpush, android_ginmaster, android_gmaster, 
android_godwon, android_golddream, android_gonesixty, 
android_ibanking, android_kemoge, android_lockdroid, 
android_lovetrap, android_maistealer, android_maxit, 
android_oneclickfraud, android_opfake, android_ozotshielder, 
android_pikspam, android_pjapps, android_qdplugin, 
android_repane, android_roidsec, android_samsapo, 
android_sandorat, android_selfmite, android_simplocker, 
android_skullkey, android_sndapps, android_spytekcell, 
android_stealer, android_stels, android_teelog, android_tetus, 
android_tonclank, android_torec, android_uracto, 
android_usbcleaver, android_walkinwat, android_windseeker, 
android_zertsecurity, androm, andromem, angler, anuna, arec, 
aridviper, artro, autoit, avalanche, avrecon, axpergle, babar, 
bachosens, badblock, balamid, bamital, bankapol, bankpatch, 
banloa, banprox, bayrob, bedep, blackenergy, blackvine, 
blockbuster, bredolab, bubnix, bucriv, buterat, camerashy, 
carbanak, carberp, careto, casper, cerber, changeup, chanitor, 
chekua, cheshire, chewbacca, chisbur, cleaver, cloud_atlas, 
conficker, contopee, copykittens, corebot, cosmicduke, 
couponarific, criakl, cridex, crilock, cryakl, cryptinfinite, 
cryptodefense, cryptolocker, cryptowall, ctblocker, cutwail, 
darkhotel, defru, desertfalcon, destory, dnschanger, 
dnsmessenger, dnstrojan, dorifel, dorkbot, drapion, dridex, 
dukes, dursg, dyreza, elf_aidra, elf_billgates, elf_darlloz, 
elf_ekoms, elf_fysbis, elf_groundhog, elf_hacked_mint, 
elf_mayhem, elf_mokes, elf_pinscan, elf_rekoobe, elf_shelldos, 
elf_sshscan, elf_themoon, elf_turla, elf_xnote, elf_xorddos, 
elpman, emogen, emotet, equation, evilbunny, ewind, expiro, 
fakeav, fakeran, fantom, fareit, fbi_ransomware, fiexp, 
fignotok, fin4, finfisher, fraudload, fynloski, fysna, gamarue, 
gauss, gbot, generic, golroted, gozi, groundbait, harnig, 
hawkeye, helompy, hiloti, hinired, htran, immortal, injecto, 
ios_keyraider, ios_muda, ios_oneclickfraud, ios_specter, 
ismdoor, jenxcus, kegotip, keydnap, kingslayer, kolab, 
koobface, korgo, korplug, kovter, kradellsh, kulekmoko, 
lazarus, locky, lollipop, lotus_blossom, luckycat, majikpos, 
malwaremustdie, marsjoke, mdrop, mebroot, mestep, mhretriev, 
miniduke, misogow, modpos, morto, nanocor, nbot, necurs, 
nemeot, neshuta, nettraveler, netwire, neurevt, nexlogger, 
nivdort, nonbolqu, nuqel, nwt, nymaim, odcodc, oficla, onkods, 
optima, osx_keranger, osx_keydnap, osx_salgorea, 
osx_wirelurker, palevo, pdfjsc, pegasus, pepperat, phytob, 
picgoo, pift, plagent, plugx, ponmocup, poshcoder, potao, 
powelike, proslikefan, pushdo, pykspa, qakbot, quasar, ramnit, 
ransirac, reactorbot, redoctober, redsip, remcos, renocide, 
reveton, revetrat, rovnix, runforestrun, russian_doll, rustock, 
sakurel, sality, satana, sathurbot, scarcruft, scarletmimic, 
scieron, seaduke, sednit, sefnit, selfdel, shifu, shylock, 
siesta, silentbrute, silly, simda, sinkhole_abuse, 
sinkhole_anubis, sinkhole_arbor, sinkhole_bitdefender, 
sinkhole_blacklab, sinkhole_botnethunter, sinkhole_certgovau, 
sinkhole_certpl, sinkhole_checkpoint, sinkhole_cirtdk, 
sinkhole_conficker, sinkhole_cryptolocker, sinkhole_drweb, 
sinkhole_dynadot, sinkhole_dyre, sinkhole_farsight, 
sinkhole_fbizeus, sinkhole_fitsec, sinkhole_fnord, 
sinkhole_gameoverzeus, sinkhole_georgiatech, sinkhole_gladtech, 
sinkhole_honeybot, sinkhole_kaspersky, sinkhole_microsoft, 
sinkhole_rsa, sinkhole_secureworks, sinkhole_shadowserver, 
sinkhole_sidnlabs, sinkhole_sinkdns, sinkhole_sofacy, 
sinkhole_sugarbucket, sinkhole_tech, sinkhole_unknown, 
sinkhole_virustracker, sinkhole_wapacklabs, sinkhole_zinkhole, 
skeeyah, skynet, skyper, smsfakesky, snake, snifula, snort, 
sockrat, sofacy, sohanad, spyeye, stabuniq, stonedrill, 
stuxnet, synolocker, tdss, teamspy, teerac, teslacrypt, 
themida, tibet, tinba, torpig, torrentlocker, troldesh, turla, 
unruy, upatre, utoti, vawtrak, vbcheman, vinderuf, virtum, 
virut, vittalia, vobfus, volatilecedar, vundo, waledac, 
waterbug, wecorl, wndred, xadupi, xcodeghost, xtrat, yenibot, 
yimfoca, zaletelly, zcrypt, zemot, zeroaccess, zeus, zherotee, 
zlader, zlob, zombrari, zxshell, etc.

建築

Maltrailは、 Traffic – > Sensor < – > Server < – > クライアントアーキテクチャに基づいています センサは、監視ノード(例えば、Linuxプラットフォームが受動的にSPAN /ミラーリングポートに接続されているか、Linuxブリッジでインラインで透過的に接続されている)や、通過するトラフィックを「監視」するスタンドアロンのマシン(Honeypotなど)ブラックリストに載っているアイテム/トレイル(ドメイン名、URL、IP) 正の一致の場合、イベントの詳細を(中央の) サーバーに送信し、適切なログディレクトリ(つまり、 構成セクションで説明したLOG_DIR )に格納します。 SensorServer (デフォルト設定)と同じマシン上で実行されている場合、ログはローカルロギングディレクトリに直接格納されます。 それ以外の場合は、UDPメッセージを介してリモートサーバ(つまり、 設定セクションで説明されているLOG_SERVER )に送信されています。

サーバーの主な役割は、イベントの詳細を格納し、レポートWebアプリケーションのバックエンドサポートを提供することです。 デフォルト設定では、サーバーとセンサーは同じマシン上で実行されます。 したがって、センサーアクティビティの中断の可能性を防ぐため、フロントエンドのレポートパーツは「Fatクライアント」アーキテクチャに基づいています (つまり、すべてのデータ後処理はクライアントのWebブラウザインスタンス内で実行されます)。 選択された期間(24時間)のイベント(ログエントリ)はクライアントに転送されます。 クライアントでは、レポートWebアプリケーションがプレゼンテーションパートに単独で責任を負います。 データは圧縮されたチャンクでクライアントに送信され、そこで順次処理されます。 最終報告書は、凝縮された形式で作成され、実質的に事実上無制限の数のイベントの提示を可能にします。

注: サーバーコンポーネントはすべてスキップして、単独のセンサーを使用することができます。 このような場合、すべてのイベントはローカルロギングディレクトリに格納されますが、ログエントリは手動または一部のCSV読込みアプリケーションによって調べられます。

クイックスタート

以下のコマンドセットでは、Maltrail Sensorを起動して稼働させる必要があります(デフォルト設定と監視インタフェース「any」を使用してすぐに使用できます)。

sudo apt-get install git python-pcapy
git clone https://github.com/stamparm/maltrail.git
cd maltrail
sudo python sensor.py

同じマシン上で(オプションの) サーバーを起動するには、新しいターミナルを開き、次のコマンドを実行します。

[[ -d maltrail ]] || git clone 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

SensorインスタンスとServerインスタンスを停止するには(バックグラウンドで実行している場合)、次のコマンドを実行します。

sudo pkill -f sensor.py
pkill -f server.py

Webブラウザからhttp://127.0.0.1:8338 (デフォルトの資格情報: admin:changeme! )にアクセスして、レポートインターフェイス( クライアント )にアクセスします。

管理者ガイド

センサー

センサーの設定は、 maltrail.confファイルの[Sensor]セクションにあります。

オプションUSE_MULTIPROCESSINGtrue設定すると、すべてのCPUコアが使用されます。 1つのコアはパケットキャプチャ(適切なアフィニティ、IO優先順位、niceレベルの設定)でのみ使用され、他のコアはパケット処理に使用されます。 それ以外の場合は、すべてが単一のコアで実行されます。 オプションUSE_FEED_UPDATESを使用すると、フィードからトレールのアップデートを完全にオフにすることができます。 オプションUPDATE_PERIODは、 trailsディレクトリ内の定義を使用して、各自動トレイルの更新間隔(注:デフォルト値は86400 (つまり1日)に設定されます)が含まれtrails (注: SensorServerの両方がトレール更新を処理します)。 オプションCUSTOM_TRAILS_DIRは、ユーザーがカスタムトレイル( *.txt )ファイルを含むディレクトリの場所を指定するために使用できます。 オプションUSE_HEURISTICSはヒューリスティックメカニズム(例えば、 long domain name (suspicious)excessive no such domain name (suspicious)direct .exe download (suspicious)など)をUSE_HEURISTICS可能性があります。 オプションCAPTURE_BUFFERは、非キャプチャプロセスによるさらなる処理のためにパケットキャプチャをリングバッファに格納するためのマルチプロセッシングモードの場合に使用される合計メモリ(物理メモリ全体のパーセンテージのバイト数)をCAPTURE_BUFFERます。 オプションMONITOR_INTERFACEにはキャプチャインターフェイスの名前を含める必要があります。 すべてのインタフェースからキャプチャするには、値anyを使用します(OSがこれをサポートしている場合)。 オプションCAPTURE_FILTERは、 CAPTURE_FILTERパケットをスキップしてキャプチャ処理を簡単にするネットワークキャプチャ( tcpdump )フィルタが含まれている必要があります。 オプションSENSOR_NAMEは、イベントsensor_name値に表示される名前が含まれているため、あるセンサのイベントを他のセンサと区別することができます。 オプションLOG_SERVERが設定されている場合、すべてのイベントはサーバーにリモートで送信されます 。そうでない場合は、 maltrail.confファイルの[All]セクションにあるmaltrail.confオプションをLOG_DIRしてログディレクトリに直接格納されます。 オプションUPDATE_SERVERが設定されている場合は、すべての軌跡が所定の場所から引かれています。そうでない場合は、インストール自体の中にある軌跡定義から更新されています。

初めてセンサーを走らせるとき( sudo python sensor.py )、走っていない長い時間を過ぎると、自動的にトレイル定義からトレイルが更新されます(注: trailsディレクトリに格納されtrails )。 初期化後、設定されたインターフェース( maltrail.conf内のオプションMONITOR_INTERFACE )の監視が開始され、設定されたログディレクトリ( maltrail.confファイルのセクション[All]内のオプションLOG_DIR )にイベントがmaltrail.confます。ログ記録/レポートサーバー (オプションLOG_SERVER )。

検出されたイベントは、読みやすいCSV形式(注:空白は区切り文字として使用されます)で単一の行のエントリとしてサーバのロギングディレクトリ( maltrail.confファイルのセクション[All]内のオプションLOG_DIR内にmaltrail.confされます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_SSLtrue設定されているtrue 、WebサーバーへのアクセスにSSL/TLSが使用されます(例: https://192.168.6.10:8338/ : USE_SSL 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と組み合わせて使用​​すると、個別(複数)のSensor < – > Serverアーキテクチャに使用できます。

Sensorと同じですが、 Server (例えばpython server.py )を最初に実行したときや、長期間実行しないで、オプションUSE_SERVER_UPDATE_TRAILStrueに設定したtrue 、トレイル定義から自動的に更新されtrue注: trailsディレクトリ内に格納されtrails )。 その基本的な機能は、ログディレクトリ(つまり、 maltrail.confファイルのセクション[All]の中のオプションLOG_DIRログエントリを格納し、それらのエントリをエンドユーザに提示するためのWebレポートインターフェイスを提供することです(注: ApacheのようなサードパーティのWebサーバーパッケージをインストールする必要があります)。

ユーザーガイド

レポートインターフェイス

サーバーのレポートインターフェイス(つまり、オプションHTTP_ADDRESSHTTP_PORT定義されたアドレスを使用)に入ると、次の認証ダイアログが表示されます。 ユーザーは、設定ファイルmaltrail.conf内でサーバの管理者が設定した適切な認証情報を入力する必要があります(注:デフォルトの認証情報はadmin:changeme! )。

内部に入ると、次のレポートインターフェイスが表示されます。

上部にはスライディングタイムラインが表示されます(注:現在の日付ラベルおよび/またはカレンダーアイコン )ここで、ユーザーは過去のイベントのログを選択できます(注:マウスオーバーイベントは、現在の日付のおおよそのイベント数でツールチップの表示をトリガーします)。 日付は月単位でグループ分けされ、ウィジェット自体の内部に4ヶ月分のデータが表示されます。 しかし、提供されたスライダー(すなわち、 )ユーザーは前の月からのイベントに簡単にアクセスできます。

日付をクリックすると、その特定の日付のイベントがすべてロードされ、クライアントのWebブラウザによって表示されます。 イベント数とネットワーク接続速度によっては、記録されたイベントの読み込みと表示に数秒から数分かかることがあります(合計100万イベントには約5秒かかります)。 処理時間全体で、無効化されたユーザーインターフェイスにアニメーション化されたローダーが表示されます。

中央の部分には、表示されたイベントの概要が保持されます。 Eventsボックスは、選択した24時間内のイベントの合計数を表します。赤い線はIPベースのイベントを表し、青い線はDNSベースのイベントを表し、黄色の線はURLベースのイベントを表します。 Sourcesボックスは、スタックされた縦棒グラフの形式でトップソースごとのイベントの数を表し、ソースの総数は上にあります。 Threatsボックスは、上位脅威の割合を円グラフ形式で表します(注:灰色領域は合計イベント数が1%未満のすべての脅威を保持します)。 Trailsボックスは、円グラフの形でトップトレイルのパーセンテージを表します(注:灰色の領域は総イベント数が1%未満のすべてのトレールを保持します)。 それらのボックスのそれぞれはアクティブなので、それらのいずれかをクリックすると、より詳細なグラフが表示されます。

下部には、ページされたテーブルの形でログに記録されたイベントの要約が表示されます。 各エントリには、単一の脅威の詳細が保持されます(注:外部からの攻撃の場合と同様にsrc_iptrailと同じ場合は、ペア(src_ip, trail)または(dst_ip, trail)によって一意に識別されます)。

コラムのthreatは、脅威の一意のID(例: 85fdb08d )と色(注:脅威のIDから押し出されたもの)を保持し、 sensorはイベントがトリガされた場所(例: blitvenica )にあり、 eventsは現在の脅威first_seenは選択された(24時間)の期間(例えば06th 08:21:54 : 06th 08:21:54 )の最初のイベントの時刻を保持し、 first_seenは、選択された期間(例えば06th 15:21:23 :15:21: 06th 15:21:23 )に最後のイベントの時刻を保持し、 sparkline 06th 15:21:23は選択された期間における脅威の活動を表す小さなスパーク06th 15:21:23グラフを保持し、 src_ipは脅威のソースIP(例えば99.102.41.102 )、 dst_ipは宛先ポート(例えば、 213.202.100.28 )を保持し、 dst_portは宛先ポート(例えば80 (HTTP) )を保持し、 protoはプロトコルを保持し、 (例えばTCP )、 trailはイベントを引き起こしたブラックリスト(またはヒューリスティック)エントリを保持し、 infoはより多く保持する 脅威/トレイルに関する情報(例えば、既知の攻撃者のIPアドレスに対する既知の攻撃known attacker 、または起動中にマルウェアによって一般的に使用される既知のIP情報サービスに対するipinfo )は、ブラックリストに登録されたエントリのソース(static)なトレイルまたはmyip.ms同じソースから取得された動的フィードの場合はmyip.ms )、 tagsは特定のトレイル(たとえばAPT28 )のユーザー定義タグがAPT28されます。

src_ipおよびdst_ipテーブルエントリの上にマウスを移動すると、詳細な逆DNSおよびWHOIS情報(注: RIPEは情報提供者)で情報ツールチップが表示されます。

同じ脅威エントリ内で異なるイベントの詳細(例: src_portdst_portprotoなど)は、バブルアイコンの形で圧縮されます(つまり、 )。 これは、できるだけ少ない行で、使用可能なレポート作成インターフェースを得るために実行されます。 このアイコン上にマウスを移動すると、すべてのアイテムが保持された情報ツールチップが表示されます(たとえば、すべてのポート番号がattackerによってスキャンされます)。

そのようなアイコンをクリックすると、後で分析するためにコピー・ペースト(d)の準備が整った、保存されたすべてのアイテム(注:非凝縮フォーム)を含む新しいダイアログが開きます。

脅威のトレイル上にマウスポインターを数秒間ホバーすると、 DuckDuckGo検索エンジンに対して実行された検索用語としてトレイルを使用した結果のフレームが表示されます。 多くの場合、これは脅威そのものに関する基本的な情報を提供し、ユーザーが手動でそれを検索する必要性を排除します。 開いているフレームウィンドウの右上隅には2つの追加のボタンがあります。 最初のものをクリックすると(すなわち )、結果のフレームは新しいブラウザのタブ(またはウィンドウ)内で開き、2番目のフレームをクリックすると(つまり )は、直ちにフレームを閉じます(注:マウスポインターをフレーム枠の外に動かすことで、同じアクションが達成されます)。

各脅威に対して、同じトレイルを共有するすべての脅威を詳しく記述する任意の「タグ」で埋められる列tagがあります。 また、脅威を個別に記述するには最適な方法です。そのため、同じタグ(例: yahoo )を共有するすべての脅威を後でグループ化することができます。

実際のケース

以下のセクションでは、「通常の容疑者」のシナリオのいくつかを実際のケースを通して説明します。

大量スキャン

マス・スキャンは、個人や組織が毎日0.0.0.0/0のIP範囲(インターネット全体)全体をスキャンする権利を自分自身に与えて、好きでないと言ったところで免責するというかなり一般的な現象ですそれ以降のスキャンからスキップするために非公開で連絡する必要があります。

物事を悪化させるために、 ShodanZoomEyeのような組織は、検索エンジンを通じてすべての結果を(他の潜在的な攻撃者に)自由に利用できるようにします。 次のスクリーンショットではShodanスキャンの詳細を1日で見ることができます。

ここに、逆のDNSとWHOISの “攻撃者”アドレスの参照があります:

trailコラムのコンテンツ(IPアドレス)にマウスポインタを合わせるとDuckDuckGoの検索結果が表示されます。ここで、「攻撃者」(Shodan)に関する詳細情報が表示されます。

dst_ip列には、大規模な組織がある場合、スキャンされたIPアドレスの大きなリストが表示されます。

dst_port列には、このような一括スキャンによってスキャンされたすべてのポートが表示されます。

他の同様の状況では、ブラックリストに載っている個々の攻撃者(この場合はcinsscore.com )から来るのと同じ動作が表示されます

もう1つの一般的な動作は、特定の1つのポート( Heartbleedが見つかった場合はTCPポート443など)を検索するために、IP範囲全体(つまりインターネット)をスキャンすることです。 次のスクリーンショットでは、 誤って設定されたVoIPデバイスを検索するために、UDPポート5060(つまりSIP)を対象とした、以前にブラックリストに載った攻撃者(この場合、 alienvault.comと他の2人のブラックリスト)

匿名の攻撃者

Torの匿名性ネットワークの背後に潜む潜在的な攻撃者を発見するために、MaltrailはTor出口ノードの公開リストを利用しています。 次のスクリーンショットでは、潜在的な攻撃者がTorネットワークを利用して疑わしい方法でWebターゲット(HTTP経由)にアクセスしているケースを確認します(10分間で合計171の接続要求)。

サービスの攻撃者

以前のブラックリストに載っている攻撃者が、組織の範囲内で特定の(例えばHTTP以外の)サービスにアクセスしようとすると、疑いの余地はありません。

ssh attackerFilterフィールドに入力すると、その日のすべての類似した出現を見ることができますが、この場合はポート22(つまりSSH)です:

マルウェア

組織内の感染したコンピュータから既知のC&Cサーバーに接続しようとすると、次のような脅威(この場合はBeebone )を見つけることができます。

既知のDGAドメイン名を含むDNS要求の場合、脅威は(この場合はNecursのように )表示されます。

次のケースでは、ブラックリストからのファイルのダウンロード(この場合はmalwarepatrol.netによって)URLが発生しています:

Filterフィールドに特定のマルウェア名(この場合はRamnit )を入力すると、このマルウェアにリンクされている脅威のみがフィルタリングされます(影響を受けるすべての内部コンピュータが表示されます)。

より一般的には、 Filterフィールドにmalwareを入力すると、 malware (関連する)トレイル(たとえばIPアドレス)によって検出されたすべての脅威がフィルタリングされます:

疑わしいドメインの検索

Maltrailは、疑わしい活動によく関与することが知られているTLD ドメインの静的リストを使用します。 そのようなTLDドメインのほとんどはフリー・ドメイン・レジストラ(フリーネームなど )から来ているため、より詳細な調査が必要です。 次のスクリーンショットでは、 DGAアルゴリズムを使用して未知のマルウェアによってそのC&Cサーバーに接続しているTLDドメイン.cmが1つ使用されているケースを見つけることができます。

ドメインが明らかに未知のマルウェアによって生成されたDGAである、この場合(例えば、 long domain name (suspicious) )のような、疑わしい活動に完全に有効なTLDドメイン(たとえば.ru )が使用される場合もあります。

Maltrailは、不審なアクティビティ(たとえば、マルウェアのC&Cサーバで、しばしば宛先のIPアドレスを変更する)でよく使用される、いわゆる「動的ドメイン」の静的リストを使用します。

また、Maltrailは、疑わしい活動(Tor2Webサービスを使用してマルウェアとC&Cサーバーとの接触など)でよく使用される「タマネギ」関連ドメインの静的リストを使用します。

組織の感染した内部コンピュータで検出されなくなった古いマルウェアや古いマルウェアの場合、マルウェアがDNS解決なしで長時間死んだC&Cサーバーのドメインに継続的に接続しようとする「現象」がしばしばあります。 したがって、そのような(潜在的な)脅威の種類は、そのようexcessive no such domain (suspicious)としてマークされexcessive no such domain (suspicious)

(例えば、DNS増幅攻撃のような偽のソースIPの場合)1つの証跡が多すぎる脅威の原因である場合、すべての同様の脅威が1つのflood脅威(注:脅威のIDには接尾辞F0でマークされます)の下でグループ化されます。次の例のようになります。

不審なipinfoリクエスト

マルウェアの多くは、何らかの種類のipinfoサービス(例: ipinfo.io )を使用して、被害者のインターネットIPアドレスを調べます。 定期的、特に休業時間には、次の例のように、そのような要求を厳密に監視する必要があります。

filter ipinfoを使用することで、この種の不審な動作を共有する、組織の範囲内にある潜在的に感染したすべてのコンピュータを一覧表示できます。

疑わしい直接ファイルのダウンロード

Maltrailは、すべての不審な直接ファイルのダウンロード試行(例: .apk.exe 、および.scrファイル拡張子)を追跡します。 これは多くの偽陽性を引き起こす可能性がありますが、最終的には感染の連鎖の再構築に役立ちます(注:Googleなどの正規のサービスプロバイダは通常、この種のダウンロードを実行するために暗号化されたHTTPSを使用します)。

疑わしいHTTPリクエスト

内部Webアプリケーションセキュリティスキャナ(SQLi、XSS、LFIなどの脆弱性の検索など)や内部のユーザーによる不明なWebサイトに対する悪意のある検索など、疑わしいリクエストがあった場合、次のような脅威が検出されますJoomla!CMS CVE-2015-7297、CVE-2015-7857、およびCVE-2015-7858の脆弱性を悪用しようとする攻撃者):

次の例では、Webアプリケーションの脆弱性スキャンが「疑わしい」とマークされています。

バブルアイコンをクリックすると )を使用して、コンテンツ全体をテキストファイルにコピーしてコピーすると、疑わしいHTTPリクエストがすべて表示されます。

次のスクリーンショットでは、一般的なSQLi脆弱性ツールsqlmapの実行結果をログに記録しています。

ポートスキャン

かなりの量の異なるTCPポートへの接続試行が多すぎる場合、ヒューリスティックなメカニズム検出の結果、ポートレットの潜在的なスキャンについて警告されます。 次のスクリーンショットは、一般的なポートスキャンツールnmapの実行時に、そのような警告を見つけることができます:

DNSリソースの枯渇

Webサーバーインフラストラクチャに対する一般的なDDoS攻撃の1つは、(疑似)ランダムサブドメイン名( abpdrsguvjkyz.www.dedeni.com )に対して有効なDNS再帰クエリを作成することによって、(メイン)DNSサーバーのリソースが枯渇することです。

データ漏洩

その他のプログラム(特にモバイルベース)は、潜在的に機密性の高いデータをリモートビーコンポストに送信するマルウェア(類似の)動作を示します。 Maltrailは次の例のようにこのような動作をキャプチャしようとします:

偽陽性

他のすべてのセキュリティソリューションと同様に、Maltrailは「 誤検出 」になりがちです。 そのような場合、Maltrailは(特にsuspicious脅威の場合)通常のユーザーの行動を記録し、それを悪意のあるユーザーおよび/または疑わしいユーザーとして記録します。 次の例では、ブラックリストフィードプロバイダblocklist.deが通常のGoogleサーバーをattackerとしてマークし、次の脅威を引き起こしていることがblocklist.deます。

DuckDuckGoの検索結果から、これは通常のGoogleのサーバーであることがわかります。

別の例として、通常の.workドメイン(有害な目的のための一般的なTLD)へのアクセスには、次の脅威がありました。

それにもかかわらず、管理者は次の例のように、余分な時間を投資して、「疑わしい」が悪意のあるかどうかを(他の手段で)チェックする必要があります。

要件

Maltrailを正しく動作させるには、 pcapy (例えばsudo apt-get install python-pcapy )と一緒にPython 2.6.xまたは2.7.xが必要です。 管理/ root権限を使用してSensorコンポーネントを実行する以外は、他の要件はありません。

ライセンス

このソフトウェアは、MITライセンスの下で提供されています。 詳細については、付随するLICENSEファイルを参照してください。

ありがとうございました

  • トーマスクリストナー
  • Eduardo Arcusa Les
  • ジェームスレイ
  • Ladislav Baco(@laciKE)
  • ジョンクリストフ(@jtkdpu)







-stamparm
-, , , , , ,

執筆者: