Splunk BOSS of the SOC ver 2について(FTP Exfiltration)

[Boss of the SOC (BOTS) Advanced APT Hunting Companion App for Splunk](https://splunkbase.splunk.com/app/4430/)
Hunting an APT with Splunk Workshop
Welcome to the Hunting an APT with Splunk Workshop based on the Boss of the SOC 2017 data set.

こちらを元に、手順を追ってみる。データセットは[ここ](https://github.com/splunk/botsv2)
なお、ログの時間を合わせるためユーザの時間帯を**(GMT -08:00)**にする必要がある。

全１３回

1. [概要とPowerShell Empire](https://qiita.com/toshikawa/items/511af1a3054ab81cd475)
2. [FTP Exfiltration](https://qiita.com/toshikawa/items/ca6483e4c0ef7f3bb9d3)
3. [DNS Exfiltration](https://qiita.com/toshikawa/items/93a57d9ac0e06bab0bde)
4. [Adversary Infrastructure](https://qiita.com/toshikawa/items/75cbfa0b522735bc5228)
5. [Spearphishing Attachment](https://qiita.com/toshikawa/items/b9bc3527c0f9787d6be1)
6. [User Execution](https://qiita.com/toshikawa/items/945e271b05c1ea55ef34/)
7. [Account Persistence](https://qiita.com/toshikawa/items/df27a896ab71bafb512d)
8. [Scheduled Task](https://qiita.com/toshikawa/items/b203eb78c699192cfc6d/)
9. [Indicator Removal](https://qiita.com/toshikawa/items/8e0c730280e051a3ed4e/)
10. [User Agent Strings](https://qiita.com/toshikawa/items/bb0055bf74af461824a9/)
11. [OSINT Gathering](https://qiita.com/toshikawa/items/4cad2830289bc83ca330/edit)
12. [Lateral Movement](https://qiita.com/toshikawa/items/054c8c358c79758dec25/)
13. [Data Staging](https://qiita.com/toshikawa/items/886df42faf744c299985/)

#FTP Exfiltration
##FTP Exfiltration - Hypothesis
>仮説
一般的にネットワークプロトコル、主にFTPを使用してデータの流出が発生する可能性があります
説明
データの抽出は、メインのコマンドおよび制御プロトコルまたはチャネルとは異なるプロトコルで実行されます。 データは、メインのコマンドアンドコントロールサーバーから別のネットワークロケーションに送信される可能性があります。 代替プロトコルには、FTP、SMTP、HTTP / S、DNS、またはその他のネットワークプロトコルが含まれます。 さまざまなチャネルに、クラウドストレージなどのインターネットWebサービスを含めることができます。

####How Might We Confirm or Refute Our Hypothesis?
課題

- どのデータソース（sourcetypes）がFTPを参照または少なくとも参照していますか？
- 送信元と宛先の間のデータフローはどのように見えますか？
- FTPに関連付けられているコマンドが発行されていることを確認できますか？
- FTP通信で使用されているユーザーアカウントは何ですか？
- これらのイベントは何時に発生しますか？
- FTPで特定のファイルを移動（アップロード/ダウンロード）していますか？

##FTP Exfiltration - Data
>どんな種類のデータがありますか？

>私たちの狩りのすべてにおいて、私たちはまず自分がどんなイベントを持っているのかを理解したいと思っています。 特定のソースタイプを特定したら、アドレス間の通信パスの決定を開始したり、どのホストでイベントを利用できるかを決定したりできます。 これらの検索は、私たちの狩りを案内するのに役立ちます。

####sourcetypes To Start With
>文字列ftpを参照する2017年8月のログを探してみましょう。 出力に基づいて、Suricata、Stream、Palo Alto、Microsoft Sysmonなど、多数のソースタイプを確認できます。 これらのデータソースとその通信パスを詳細に調べ、そこから先に進みます。

####Suricata and stream:ftp
>検索は非常に簡単で、suricataとstream：ftpの両方のソースタイプで、同じ外部宛先アドレスである160.153.91.7と通信する2つのシステムしか見られないことがわかります。

>PowerShell Empireのハントで学んだことから、2つの内部ホストは両方ともワークステーションであり、Billy TunとKevin Lagerfieldが所有していることがわかります。 覚えているかもしれませんが、この情報はAsset and Identity Centerで簡単に確認できます。 KevinはIT管理者で、Billyはユーザーです。

####Palo Alto traffic and Palo Alto threat
>パロアルトのデータを見ると、pan：trafficとpan：threatの2つのソースタイプがあります。 トラフィックソースタイプのトラフィック量は圧倒的に多くなりますが、興味深いことに、トラフィックの大部分がファイアウォールの外部インターフェイスに向かっています。 そのため、このデータをさらに調べて詳細を確認する必要があります。

>残りのトラフィックデータは、suricataおよびstream：ftpのソースタイプと同様の内部から外部へのパターンを示していますが、トラフィックは2つのワークステーションからだけでなく、他の2つのシステムからのものです。 繰り返しますが、PowerShell Empireの狩りを思い出すと、他の2つのシステムはサーバーmercuryとvenusであることがわかります。 MercuryはR＆Dサーバーであり、venusはファイルサーバーです。

>pan：threat sourcetypeを見ると、ソースが71.39.18.125であり、このハントで一貫したアーティファクトであると思われる同じ外部IPアドレスに移動していることがわかります。

####Microsoft Sysmon
>Microsoft Sysmonを使用してNetwork Connectトラフィックを探すことはできますが、そのようなイベントをログに記録する場合と記録しない場合があります。 これらのイベントがない場合でも、statsコマンドを使用して検索し、ホストによるカウントを取得して、ftpを参照したイベントがあったシステムを確認できました。 ネットワークのサイズとホストの数に応じて、これは非常に大きくなる可能性がありますが、その時点では、ftpの実行がポリシーで許可されている特定のユーザーまたはデバイスの種類があります。 その時点で、ルックアップを使用してこれらのリストのサイズを縮小できます。

>検索に基づいて、ftpという文字列がwrk-btun（Billyのワークステーション）、wrk-klagerf（Kevinのワークステーション）、venus（IT所有のファイルサーバー）のホストに表示されていることがわかります。

####Commands Executed
>フィールドCommandLineをピボットすると、これら3つのシステムで実行されたコマンドを確認できます。 system32ディレクトリから実行されたFtp.exeと、実行された8回のうち7回は、-sスイッチを使用してスクリプトを呼び出しました。 PowerShell Empireのハントを行った場合、-sスイッチはftpが実行するスクリプトのスクリプトセットと共に使用されるため、このスイッチで.dllファイルを見るのは非常に奇妙です。 PSEハントを行っていない場合は、おそらく自分で調べました。ファイル名、winsys32.dll、singlefile.dllを検索することをお勧めします。

>これらのシステムにまだアクセスできる場合は、この検索で​​特定されたホストから特定のファイルをプルできますが、Splunkと生成されたイベントを使用して、存在しないものについてある程度の手がかりを提供できますそれらのログ。

>開いているコマンドが表示されるため、最後に表示されるイベントも興味深いものです。 openコマンドの後の値は、詳細を理解するために間違いなく調査する必要がある特定のドメイン/サイトです。監視に使用できる指標を発見した可能性があります。これは単なるIPではなくドメインであるため、攻撃者のインフラストラクチャの永続性が高い可能性があります。

##FTP Exfiltration - Time Series
>イベントはいつ発生しましたか？

>イベントボリューム、送信元、宛先、およびホストの観点からトラフィックフローを把握したので、時間に基づいてこのデータを調べてみましょう。

####Palo Alto
>検索では、Palo Altoデータに戻りましょうが、今回は検索にevalステートメントを挿入し、ソースアドレスと宛先アドレスを連結し、結果をタイムチャートに表示してソースのイベントカウントを取得します。 その月に通信した宛先アドレス。

>結果に基づいて、トラフィックは8月22日頃に始まり、8月29日までに完了したことがわかります。

####Suricata
>Suricataデータに対して同じ種類の検索を実行すると、同様の時間枠のアクティビティが見られます。

####stream:ftp
>これはおそらくそれほど驚くことではありませんが、stream：ftpデータはSuricataやPalo Altoと同様のパターンに従います。

####Drill Down on Time
>実行したばかりの検索の時系列データに基づいて、日付範囲を狭めることができます。 日付範囲を8月23〜26日に変更します。 また、160.153.91.7の目的地だけを見るように検索を変更しましょう。 結果セットでは、ヒストグラムから、すべてのftpアクティビティがこのより短い時間帯で発生したことがわかります。

####Drilling into fields
>新しい時間枠の2つの送信元アドレスと、時間範囲と宛先に基づくイベントの内訳を以下に示します。

####Zoom to Selection
>ヒストグラムを見ると、8月23日だけに焦点を合わせるためにタイムスライダーを使用できます。ここでは、8時間のウィンドウが選択されていることがわかります。 [選択範囲にズーム]をクリックすると、クエリを更新して特定の時間範囲に絞り込むことができます。

>この8時間の時間枠内で、両方のワークステーションが通信していることがわかります。 両方のイベントの数が同じであることに注意してください。 同じ数のイベントが発生する特別な理由はありますか？

##FTP Exfiltration - FTP Cluster #1
>特定のデータセットに焦点を当てる

>特定のデータセットを特定し、検索をこのクラスターのみに絞り込むことで、これらのイベントの値の類似性と相違点を検索できます。

####What Interesting Fields Do We Have?
>私たちのフィールドを調べ始めると、それらのいくつかには非常に興味深い情報が含まれています。攻撃者が共通ポートを使用していることがわかります。これも疑いを持たないように、標準ポートを介したFTPだけです。 Flow_idは、2つの異なるトランザクション、つまり2つの異なるセッションがあったことを示します。 Reply_contentには、2つのウェルカムメッセージ、ユーザーログインの成功、セッション終了メッセージなど、さまざまな制御メッセージが表示されます。

>methodフィールドを確認すると、ftpコードのリストも表示されます。 Method_parameterはさまざまな情報を提供します。 method_parameterフィールドでファイル名を確認できますが、他のメソッドをサポートできる追加の値もあります。

>最後に興味深いのは、ファイル名です。これにより、リストの下部にある非常に興味深いファイルを含む、それぞれ2回表示される7つの値のリストが提供されます。

>この結果リストは、2スライド前のreply_contentメッセージで一部の人が見たかもしれないメッセージによって、より興味深いものになります。これらのファイルはすべて宛先アドレスから送信元アドレスにダウンロードされたようです。これは、攻撃者がツールをローカルワークステーションにダウンロードしていることを示しているため、MITRE ATT＆CKのRemote File Copyテクニックと相互参照しています。

>検索を絞り込み、これらのさまざまなイベントがどのように組み合わされるかを見てみましょう。

####FTP Conversation
>ここで説明した興味深いフィールド（スペースのためだけにflow_idを除く）を取得し、これらの値を表にして最も古いものから新しいものに並べ替えることにより、検索をわずかに絞り込みます。

####FTP Conversation After Removing Extraneous methods
>結果を見ると、現時点ではPORT、TYPE、およびNLSTメソッドは意味がないため、これらの値を削除するには不等号（！=）を使用します。 新しいスライドは結果を削除し、このスライドで両方のトランザクションを確認できるようにします。 また、これらのシステムの両方でまったく同じトランザクションが発生していることもわかります。

一つの表にしてみた。

```Splunk:SPL
index=botsv2 sourcetype=stream:ftp src=10.0.2.107 dest=160.153.91.7 method!=PORT method!=TYPE method!=NLST 
| table _time src filename method method_parameter 
| sort + _time
| appendcols 
    [search index=botsv2 sourcetype=stream:ftp src=10.0.2.109 dest=160.153.91.7 method!=PORT method!=TYPE method!=NLST 
    | table _time src filename method method_parameter 
    | sort + _time 
    | eval time=_time
    | fieldformat time=strftime(time,"%B %H:%M:%S")
    | foreach * 
        [eval <<FIELD>>_s=<<FIELD>>]]
| eval time_s=strftime(time_s,"%H:%M:%S")
| table _time src filename method method_parameter time_s src_s filename_s method_s method_parameter_s
```
>2つのワークステーションを並べて見ると、両方のシステムでまったく同じアクションが実行されていることがわかります。 これらのファイルベースのアーティファクトを取得し、ダウンロード後にそれらの実行を探す可能性があります。 3つの実行可能ファイル、DLL、PythonのMSIインストーラー、Pythonスクリプト、hwpファイル拡張子があることがわかります。 hwpファイルが何であるかわからない場合は、Googleで拡張機能を検索すると、韓国語のワープロアプリケーションであることがわかります。

##FTP Exfiltration - FTP Cluster #2
>データの他のクラスターの観察

>データのクラスターは複数あるため、それらを別々に見る価値があります。 FTPは本質的にトランザクションであるため、個々のクラスターやクラスター内の送信を見ると、追加情報を明らかにする類似点と相違点が生じる可能性があります。

####What Interesting Fields Do We Have?
>前の検索に戻って、8月25日に発生したイベントにドリルダウンします。2時間のイベントを強調表示し、[選択範囲にズーム]をクリックすると、その時間枠のヒストグラムが表示されます。

####Break up the cluster into transmissions
>このイベントのクラスター内には、4つの異なるイベントグループがあります。 それぞれをtransmissionと呼び、それらを1つずつ見ていきます。

####Transmission #1
>10:28 PMに発生した最初のイベントをクリックすると、結果セットはその時間範囲にフィルターされます。 [選択したフィールド]でファイル名をクリックすると、frothly_passwords.kdbxファイルが外部サイトにFTPで送信されたことがわかります。

####Transmission #2
>FTPアクティビティの次の10分間のグループ化を強調すると、213個のファイルがFTPで送信されたことがわかります。 PDFファイルのようです。

####Transmission #3
>3番目のグループでは、23分間の時間枠で、496個のファイルがFTPで送信され、2回目の送信で送信された同じファイルの一部が2回送信されます。

####Transmission #4
>最後に、タイムフレーム中の最後のダウンロード試行は、topsecretyeast.pdfというファイルを参照します。 確かに私たちの重要な酵母のフォーミュラのように聞こえるので、それは懸念です。 reply_contentフィールドの最後のイベントを見ると、「0キロバイトをアップロードし、0キロバイトをダウンロードしました」と表示されます。これは、転送が失敗したことを示しているので、しばらくお待ちください。

####Filename Stacking
>statsコマンドを使用して、8月25日にデータの4回の送信でアップロードされたファイルを確認できます。一部のpdfが2回参照され、結果をスクロールすると、パスワードファイル、topsecretyeast.pdfファイルなどを含むファイルが1回アップロードされたことがわかります 

##FTP Exfiltration - FTP Transactions
>すべてのFTPトランザクションの確認

>FTPを使用した複数のクラスターと伝送が数日間にわたって観察されました。 これらのすべてのトランザクションを広く検索すると、これらのイベントをリンクする可能性がある追加の共通点があるかどうかを確認できます。

####Circling Back to reply_content
>先ほど、reply_contentフィールドを簡単に見てきましたが、ここでさらに詳しく見てみましょう。 ここにリストされている値を見ると、PORTコマンドの成功メッセージがいくつか表示されていますが、「User admin@hildegardsfarm.com OK。」という値も表示されています。 admin@hildegardsfarm.comは、リモートサイトが情報を受信するために探しているユーザー名のようです。

####Looking for the User Logins to Remote FTP
>この結果を取得し、検索を更新して、この文字列のフィールドreply_contentを検索できます。 関連するすべての値を確実に見つけるために、ワイルドカードを使用する可能性が高いことに留意してください。 または、method_parameterフィールドでユーザーアカウントを検索できます。ワイルドカードを心配する必要はありません。 この時点で、8月23日に2つのFTPセッションがあり、8月25日に4つのFTPセッションがあったことは、おそらく大きな驚きではありません。statsコマンドに基づいて、4つがBillyのワークステーションから、2つがKevinのワークステーションからだったことがわかります ワークステーション。

##FTP Exfiltration - Loose Ends
>ハントを締めくくるために、他にどんな質問に答えられますか？

>私たちは仮説を確認したかもしれませんが、多くの場合、発見されたアーティファクトがありますが、質問への回答が必要です。 ハントがインシデント対応チームまたは運用担当者のアナリストに引き渡されるため、それらの他のアーティファクトに関する追加情報を提供することは彼らにとって役立ち、ハンターが彼らのハントを完成させ、将来のハントにつながる可能性があります

####Searching for Files by Name
>狩りの早い段階で-s引数のファイル名を見たので、それらに戻ると言いました。 それをする時間。

>思い出すと、singlefile.dll、winsys32.dll、winsys64.dllの引数を使用してftpが実行されているのを見ました。 狩りで見たように、他のいくつかのファイルとともにダウンロードされたため、しばらくの間、winsys64.dllを脇に置きます。

>これらの2つの値を検索すると、すべての参照がSysmonおよびWindowsイベントログにあることがわかります。 残念ながら、これらのファイルは他の時点では表示されません。

####Sysmon and FTP
>Sysmonデータを詳しく調べると、8月23日にwinsys32.dllを参照する最初の3つのftpイベントが表示され、それらはすべて、以前に見たのと同じPSEスレッドであるエンコードされたPowerShellから生成されたようです。 winsys32.dllのタイミングに基づいて、2つのワークステーションで追加のPythonスクリプトと実行可能ファイルのダウンロードが許可されたと推測できます。

>最後のエントリは、Sysmonでsinglefile.dllへの唯一の参照ですが、PowerShellインスタンスからも実行されます。 このイベントは8月25日に発生し、Billyのワークステーションでのみ見られます。

####Windows Event Logs and FTP
>Windowsイベントログを見ると、1つを除き、EventCode 4688の下のWindowsイベントログに各Sysmonプロセスのミラーコピーがあります。 Sysmonにはホストmercuryのイベントはありません。 mercuryに関するイベントだけを検索しましょう。

[4688:新しいプロセスが作成されました。](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/auditing/event-4688)

```Splunk:SPL
index=botsv2 sourcetype=wineventlog (singlefile.dll OR winsys32.dll) | reverse
| stats count values(EventCode) as EventCode by  host 
| eventstats sum(count) as perc | eval percentage=round(count*100/perc,2) | fields - perc |sort - count
```
確認用
####Windows Event Logs and FTP
>mercuryのイベントは、プロセスがftpをservice3アカウントとして実行しようとしたように見え、プロセスの作成が成功したことを示しているようですが、ParentCommandが何であるかを確認するSysmonエントリがありません。 Sysmonがそのシステムで構成されていない可能性がありますが、その追加コンテンツがない場合、他のシステムが使用したのと同じ種類のPowerShellクレードルからのものであると推測できます。

>このシステムにダウンロードされた追加のツールは見られなかったため、おそらく実行されましたが、何らかの理由で成功しませんでした。 これらは、これらのファイルが将来の攻撃で使用するためにこれらのシステムにまだ残っていないことを確認するために満足するまで追跡したい未解決の質問です。

####What Happened to singlefile.dll?
>Sysmonがsinglefile.dll引数で実行されているftp.exeを観察した時間をキャプチャすると、Billyだけでなく、任意のワークステーションから後続のftpアクティビティを検索することができます。 良くも悪くも、トラフィックは表示されません。 これに基づいて、これが実行されている間、敵はスクリプト内の正しい情報を提供していないか、何かがスクリプトのルーチンの実行を妨げていると結論付けることができます。

####One Last Thing...
>FTPを介してBillyとKevinのワークステーションにダウンロードされた7つのファイルのリストを見ましたが、それらのファイルへのさらなる参照があるかどうかを確認することはありませんでした。 そのコンテンツを確認したので、ダウンロード時に開始し、stream：ftpデータを削除しながら楽しみにして検索を構築できます。 3つの異なるソースタイプから22のイベントがあり、3つのホストのみが参照されていることがわかります。 ホストの観点から見てみましょう。

####wrk-klagerf Processes
>Kevinのシステムを見ると、winsys64.dllで-s引数を使用して、ftp.exeでSysmonデータを確認できます。 この動作は以前に見ました。 もう1つのイベントは、同じftpイベントのプロセス開始イベントを示すWindowsイベントログのように見えます。 ここで新しいものはありません。

####wrk-btun Processes
>Billyのワークステーションは、最初の2つのイベントに似たものを表示しますが、追加のftpイベントが含まれており、増分的にダウンロードしようとするようです。

####Venus Processes
>Venusは、他の2つのシステムのように、ftpおよびwinsys64.dllに関連するものを表示しません。 Venusはdns.pyがPython経由で実行されていることを示しています。 ParentCommandLineを見ると、狩りで見たPowerShell Empireの揺りかごを指し示す可能性のある、素敵なbase64エンコード値がわかります。

>mercuryがそれに関連する他のイベントを見てみましょう。 リストをスクロールすると、mercuryの残りのイベントは10分ごとに同じスクリプトを実行するように見えます。 サーバー上で何らかのcronジョブが実行されているように見えるので、これは他に検討する必要があります。 これは、攻撃者によってロードされたpythonスクリプトであるため、それが実行していることに関する追加の調査が保証されます。

##FTP Exfiltration - Findings
####Were We Able To Confirm Our Hypothesis?
- 両方のFTPが抽出に使用されているのを見ました
- FTPは主に使用され、3つのシステムで見られました
 - スクリプトアクション
  - Sysmonの-s引数で見つかったwinsys32.dllファイルに基づく
 - 完全に成功しなかった
  - ftp openコマンドを含む複数の試みが見られました

####What We Learned
- ワークステーションwrk-btunおよびwrk-klagerfは、複数のソースタイプを介して外部IP 160.153.91.7と通信していることが確認されました
- サーバーのmercuryとvenusはpan:trafficでのみ見られました
- 攻撃者は主に2つのワークステーションでftpコマンドを使用して、このIPアドレスへのデータの流出を試みています。
 - dll拡張子を持つファイル名の使用は、スクリプトが呼び出されていることをわかりにくくするために使用されます
- FTPイベントは、アップロードとダウンロードの両方のアクティビティに関する洞察を提供します
 - 8月23日-同じ7つのファイルが両方のワークステーションにダウンロードされています
 - 8月25日-Froth.lyのPDFファイルが複数回正常にアップロードされています。おそらくTopSecretYeast.pdfはアップロードされていないようです（PAN：Threatではブロックされています）
- 流出トラフィックは、hildegardsfarm.comというドメインを宛先としています。

####Diamond Model
>このハントでは、追加の機能とインフラストラクチャは具体的に明らかにされていませんが、FTPの流出、hwpサフィックスが付いたドキュメント、韓国語のフォントが技術軸で見られることを確認しました。 また、韓国とハンコムのThinkfree Officeが運用中に利用されているなど、敵についても少し学びました。

####What should we operationalize?
>各ハントの終わりに、私たちは何を取り、インシデント対応チームにフィードバックできるかについて考えたいと思います。 これは、ボックスを引っ張ってフォレンジックアクティビティを実行するなどの追加アクティビティであるか、インジケータを取得してSIEMまたはログ管理システムにフィードするか、発見したことに基づいて新しい分析とアラートを構築することができます。 一日の終わりには、先ほど言ったように、狩りから何かを学ぶ必要があります！

- ブラックリスト
 - IP-160.153.91.7（基本、簡単に歩き回りますが、考慮すべきこと）
 - ドメイン-hildegardsfarm.com
- システムのトラフィック分析を実行して、外部システムと内部システム間の通信のベースラインを確立します
- ネットワーク上にあると予想されないデータを監視する
 - FTPを企業で使用していない場合は、FTPが表示されたら監視および警告します
 - 企業で使用する場合、特定のユーザーとシステムに限定されますか？
 - コンテンツを監視し、他の人が見られたら監視します
- 関心のあるファイルのグループとその場所を監視します–単一のファイルでFPを作成できます
 - コマンドを使用して奇妙な引数を監視する
 - ftp.exeで.dllを使用する理由

#まとめ
こちらはESの機能をつかうことなく、みていればわかるような作りになっている。
[作り終わって見つけた資料](https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1569863860.pdf)
:sweat: これでよかったかも・・・