標題:REDELK的安裝和使用

taibeihacker

Moderator

0x00 前言简介​

紅隊的SIEM有兩個主要目標:
通過創建一個集中管理中心,收集和豐富來自多個teamservers的所有相關操作日誌,增強了紅隊人員的可用性和概述。這對於在操作中進行歷史搜索以及提供操作的可預覽視圖(例如藍隊)非常有用。特別適用於多場景、多teamservers、多成員和多時間操作。此外,查看所有屏幕截圖、IOC、鍵盤輸出等簡單方法
通過一個集中管理中心收集和豐富來自重定向器的所有流量日誌來發現藍隊。使用特定的查詢,現在可以檢測到藍團隊正在探測您的基礎結構設施。
項目地址:https://github.com/outflanknl/RedELK

0x01 体系架构概述​

以下是RedELK如何運行的體系架構概述。
44yxunl4rbo22576.png

redelk使用典型的組件filebeat(傳送)、logstash(過濾)、elasticsearch(存儲)和kibana(查看)。 rsync用於teamserver數據的第二次同步:日誌、鍵盤輸入、截圖等。 nginx用於對kibana進行身份驗證,並在操作員瀏覽器中以簡單的方式提供截圖、beaconlogs、鍵盤輸入。
一組python腳本用於大量豐富日誌數據,以及用於Blue Team檢測。

0x02 安装和配置​

執行安裝需要幾個重要步驟。每個步驟都需要執行:
1.生成密钥和包我們需要生成用於加密重定向器/teamservers和redelk服務器之間的filebeat流量的TLS密鑰對。
配置./certs/config.cnf以包含TLS證書的正確詳細信息。在該文件中列出正確的IP(IP.1)或DNS(DNS.1)名稱非常重要!這些需要指向RedELK服務器的IP或DNS。否則,您的TLS設置將不起作用,Logstash將啟動失敗並嚴重崩潰,日誌中存在隱藏的錯誤。
完成後,運行:initial-setup.sh ./certs/config.cnf這將創建一個CA,為redirs,teamserver和elkserver之間的安全通信生成必要的證書,並為Elkserver到TeamServer的安全rsync身份驗證生成一個ssh密鑰對。
它還生成teamservers.tgz、redirs.tgz和elkserver.tgz,其中包含每個組件的安裝包。您需要將這些TGZ文件複製到相關的系統中(TeamServers,redirs-en,將用作RedELK中心節點的系統)
只有在需要使用新的TLS密鑰時才需要重新運行此初始設置。如果是這種情況,請刪除./certs/redelkCA.*和./certs/elkserver.*文件,並重新運行initial-setup.sh ./certs/config.cnf
2.重定向器安装的配置目前僅支持haproxy服務器
作為紅隊基礎設施部署過程的一部分,在重定向器上複製並解壓縮redirs.tgz。行:install-redir.sh$filebeatid$scenarioname$ip/dns:port
$ FilebeatID是filebeat中重定向器的標識符。
$ ScenarioName是重定向器用於攻擊方案的名稱。
$ip/dns:port是filebeat日誌發送的IP或DNS名稱和端口的信息,這將是redelk服務器的IP/dns。即使使用默認端口(TCP/5044),也需要將其作為參數提供。
此腳本將設置時區(默認為Europe/Amsterdam,但您可以在腳本中更改此內容),安裝filebeat和依賴項,安裝所需證書,修改filebeat配置並啟動filebeat。
(1).HAProxy细节RedELK需要修改默認的haproxy配置才能記錄更多詳細信息。
在“默認值”部分:
log-format frontend:%f/%H/%fi:%fp\ backend:%b\ client:%ci:%cp\ GMT:%T\ useragent:%[capture.req.hdr(1)]\ body:%[capture.req.hdr(0)]\ request:%r
在“前端”部分:
declare capture request len 40000
http-request capture req.body id 0
capture request header User-Agent len 512
(2).HAProxy配置文件示例下面的配置是haproxy的一個運行示例。這適用於默認的Cobalt Strike配置文件
log 127.0.0.1 local2 debug
maxconn 2000
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
timeout connect 5000
timeout client 10000
timeout server 10000
log-format frontend:%f/%H/%fi:%fp\ backend:%b\ client:%ci:%cp\ GMT:%T\ useragent:%[capture.req.hdr(1)]\ body:%[capture.req.hdr(0)]\ request:%r
frontend www-https
option http-buffer-request
declare capture request len 40000
http-request capture req.body id 0
capture request header User-Agent len 512
log /dev/log local2 debug
bind :443 v4v6 ssl crt /etc/letsencrypt/live/haproxy.pem
reqadd X-Forwarded-Proto:\ https
acl path_cs path -m beg /dpixel
acl path_cs path -m beg /submit.php
acl path_cs path_reg ^/[0-z][0-z][0-z][0-z]$
use_backend cobaltstrike-https if path_cs
default_backend www-decoy
timeout client 1m
frontend www-http
mode http
option http-buffer-request
declare capture request len 40000
http-request capture req.body id 0
capture request header User-Agent len 512
log /dev/log local2 debug
bind :80 v4v6
reqadd X-Forwarded-Proto:\ http
acl path_cs path -m beg /dpixel
acl path_cs path -m beg /submit.php
acl path_cs path_reg ^/[0-z][0-z][0-z][0-z]$
use_backend cobaltstrike-http if path_cs
default_backend www-decoy
timeout client 1m
backend www-decoy
mode http
http-request set-header Host localhost
server localhost localhost:80
backend cobaltstrike-https
option forwardfor
server teamserver ${FQDNteamserver}:443 check ssl verify none
backend cobaltstrike-http
option forwardfor
server teamserver ${FQDNteamserver}:80
3.Teamserver安装和配置在Cobalt StrikeTeamServer上複製並解壓縮teamservers.tgz,作為紅隊基礎設施部署過程的一部分。運行:install-teamserver.sh$filebeatid$scenarioname$ip/dns:port
$ FilebeatID是filebeat中teamserver的標識符。
$ ScenarioName是teamserver用於攻擊方案的名稱。
$ip/dns:port是filebeat日誌發送的IP或DNS名稱和端口的信息,這將是redelk服務器的IP/dns。即使使用默認端口(TCP/5044),也需要將其作為參數提供。
如果已經安裝了filebeat,則此腳本將發出警告(這一點很重要,因為elk和filebeat有時對於版本相同非常挑剔),設置時區(默認為Europe/Amsterdam,但您可以在腳本中更改此內容),安裝filebeat和依賴項,安裝所需書,修改filebeat配置,啟動filebeat,創建本地用戶'scponly'並通過scp,sftp,rsync將該用戶限制為基於ssh密鑰的身份驗證。
4.RedELK安装和配置(1).安装作為紅隊基礎設施部署過程的一部分,在RedELK服務器上複製並解壓縮elkserver.tgz。
運行:install-teamserver.sh(不需要參數)
此腳本將設置時區(默認為Europe/Amsterdam,但您可以在腳本中更改此內容),安裝logstash,elasticsearch,kibana和依賴項,安裝所需證書,部署logstash配置和所需的自定義ruby擴展腳本,下載GeoIP數據庫,安裝Nginx,配置Nginx,使用先前生成的SSH密鑰創建本地用戶'redelk',在TeamServers上安裝用於rsyncing遠程日誌的腳本,安裝用於創建屏幕截圖縮略圖的腳本,安裝RedELK配置文件,安裝crontab文件用於RedELK任務,安裝GeoIP elasticsearch插件並配置模板,安裝python擴展腳本,最後安裝python藍隊檢測腳本。
還沒有完成。需要在/etc/cron.d/redelk中手動輸入teamservers的詳細信息,並在/etc/redelk中調優配置文件(請參見下面的部分)
(2).配置在/etc/redelk目錄中的ELK服務器上,您可以找到幾個可用於調整RedELK實例的文件,以獲得更好的豐富功能和更好的警報。有些是必須的,有些則可選的
必须性配置:/etc/redelk/alarm.json.conf:警報運行所需的詳細信息。這包括用於在線服務的API密鑰(Virus Total,IBM X-Force等)以及通過電子郵件發送警報所需的SMTP詳細信息。如果不在此文件中輸入您的詳細信息,將導致REDELK無法使用其報警功能。
建议性配置:/etc/redelk/iplist_redteam.conf:紅隊的公共IP地址,每行一個。便於識別紅隊成員進行的測試。在此處包含地址的設置是將redirhaproxy- *索引中的適用記錄設置一個標記。
/etc/redelk/iplist_customer.conf:目標的公共IP地址,每行一個。在此處包含地址的設置是將為redirhaproxy- *索引中的適用記錄設置一個標記。
/etc/redelk/iplist_unknown.conf:您尚不確定的網關的公共IP地址,但不希望再次收到警告。每行一個。在此處包含地址的設置將為redirhaproxy- *索引中的適用記錄設置一個標記
/etc/redelk/rogue_useragents.conf:用戶代理在訪問C2後端時出現已知錯誤。已經包含了一個基本的UAs列表,如curl,python-urllib和Blue Teamers喜歡使用的一些其他工具。該列表還包含即時消息工具的UAs列表,例如WhatsApp,Skype和Slack。當C2使用IM在分析員之間共享時非常有用。請隨意將UAs添加到此列表中。
/etc/redelk/known_testsystems.conf:已知測試系統的beacon特徵。您可能想要添加有關您自己的測試系統的信息。每行一個。此處包含數據的配置將在rtops- *索引中為適用記錄設置一個標記。要將身份驗證更改為nginx,請更改/etc/nginx/htpasswd.users以包含您的首選憑據。或者在初始設置之前對/redelk/elkserver/etc/nginx/htpasswd.users文件進行配置。
不建议编辑的其他配置文件:/etc/redelk/abusbotnetc2ip.conf:由abuse.ch列出的已知c2 ip地址的自動更新列表
/etc/redelk/abussslcert.conf:由abuse.ch列出的c2 tls證書,c2已知的自動更新哈希列表。
/etc/redelk/roguedomains.conf:來自多個來源的已知壞域的自動更新列表。
/etc/redelk/torexitnodes.conf:已知TOR出口節點IP地址的自動更新列表。
/etc/redelk/known_sandboxes.conf:已知AV沙箱系統的beacon特徵。每行一個。此處包含數據的配置將在rtops- *索引中為適用記錄設置一個標記。隨著越來越多的沙箱具有完全隨機的名稱,因此這不再具有真正的相關性。
/etc/redelk/redteamdomains.conf:攻擊性基礎設施使用的域列表。由於還沒有進行報警編碼來檢查,因此不需要編輯此文件。
如果在初始安裝之前更改這些文件,這些更改將包含在.tgz包中,並可用於未來的安裝。這些文件可以在/redelk/elkserver/etc/redelk中找到。

0x03日常用法​

RedELK有兩個主要使用場景:
1.红队运行概述(1).首次登录瀏覽到RedELK服務器的IP地址,並使用Nginx的憑據登錄(默認為redelk:redelk)。您現在位於Kibana界面中。
您可能需要在此處執行兩項操作:查看儀錶盤,或者查看並蒐索更詳細的數據。您可以使用左側欄上的按鈕(默認Kibana功能)在這些視圖之間切換。
(2).仪表盘單擊左側的儀錶盤圖標,您將得到2個選項:Traffic和Beacon
lfohxqtv2gq22577.png

0vtx1q52cwg22578.png

4b3nyqau2rs22579.png

(3).详细查找和搜索数据單擊“發現”按鈕以更詳細地查看和搜索數據。完成後,單擊要使用的時間範圍,然後單擊“打開”按鈕,使用其中一個準備好的視圖搜索。
rglreydbwc422580.png

(3).Beacon数据當選擇搜索“TimelineOverview”時,您將看到一個易於使用的Cobalt Strike團隊服務器數據視圖,如果您願意,可以使用Beacon事件的時間線。該視圖包括您想要的相關列,例如時間戳、測試場景名稱、用戶名、BeaconID、主機名、操作系統和操作系統版本。最後,將顯示來自Cobalt Strike的完整消息
5oyiw2nnmqv22581.png

您可以根據自己的喜好修改此搜索。此外,因為它是elasticsearch,您可以使用搜索欄搜索此索引中的所有數據。
單擊記錄的詳細信息將顯示完整的詳細信息。可用性的一個重要字段是beaconlogfile字段。此字段是一個超鏈接,鏈接到該記錄的完整Beacon日誌文件。它允許您在更大的窗口中查看Beacon記錄並在其中使用CTRL + F.
geikmea1lz022582.png

(4).截图Redelk提供了一種簡單的方法,可以查看從您的目標中生成的所有截圖。選擇“截圖”搜索以獲取此詳細信息。我們添加了兩個很大的可用性內容:縮略圖和完整圖片的超鏈接。縮略圖可以快速滾動並給您一個直接的印象:通常你記得截圖是什麼樣子的。
4px14nowvtt22583.png

(5).键盘输入和截圖一樣,簡單地概述所有鍵盤輸入操作非常方便。此搜索為您提供了第一行內容,以及指向完整鍵盤輸入日誌文件的超鏈接。
wplt5kefsgt22584.png

(6).IOC数据為了快速獲得所有IOC的列表,Redelk提供了一個簡單的概述。只需使用“iocs”搜索即可獲得此列表。這將顯示來自Cobalt Strike的所有IOC數據,包括來自文件和服務的數據。
jszlfmj1wsp22585.png

您可以通過點擊頂部欄中的“報告”按鈕快速導出此列表,以生成此精確視圖的CSV。
(7).下载RedELK提供了一種簡單的方法來查看在紅隊運行期間下載的每個文件。您可以通過“下載”搜索找到此信息。現在可以獲得所有下載文件的列表,包括所有相關的元數據,這些都是可搜索的。但更重要的是,您還可以直接從Web瀏覽器下載實際文件。由於RedELK從每個TeamServer收集所有數據時,這意味著您在整個操作中擁有來自每個TeamServer的所有下載文件。不再需要使用Cobalt Strike客戶端登錄(並同步)到每個TeamServer。
nuearsdhyhx22586.png

2.蓝队检测(1).Aproach為了檢測藍隊活動:
Elasticsearch中存儲的數據
在線服務提供藍隊可能因OPSEC配置不當而放置的一些信息。
(2).配置文件FSD
(3).检查FSD

0x04 hood使用​

redelk使用典型的組件filebeat(傳送)、logstash(過濾)、elasticsearch(存儲)和kibana(查看)。 rsync用於teamserver數據的第二次同步:日誌、鍵盤輸入、截圖等。 nginx用於對kibana進行身份驗證,並在操作員瀏覽器中以簡單的方式提供截圖、beaconlogs、鍵盤輸入.
一組python腳本用於大量豐富日誌數據和藍隊檢測。
更多細節描述如下:
1.脚本如果您想在elk服務器的hood下查看,請查看/etc/cron.d/redelk中的redelk cron文件。它在/usr/share/redelk/bin/中啟動幾個腳本。有些腳本是為了豐富內容,另一些則用於警告。這些腳本的配置是通過/etc/redelk/中的配置文件完成的。 logstash中還進行了大量的擴展(包括為截圖生成超鏈接等)。您可以直接從/etc/logstash/conf.d/中的logstash配置文件中檢查出來。
2.日志在安裝過程中,所有安裝操作都記錄在當前工作目錄的日誌文件中。
redelk在TeamServer和redelk服務器上的操作期間生成的日誌。您可以在/var/log/redelk中找到這些日誌。除了所有典型的elasticsearch、logstash等日誌之外,您可能只需要將其用於故障排除。
redelk使用典型的組件filebeat(傳送)、logstash(過濾)、elasticsearch(存儲)和kibana(查看)。 rsync用於teamserver數據的第二次同步:日誌、鍵盤輸入、截圖等。 nginx用於對kibana進行身份驗證,
 
返回
上方