Bro 是一個很強大的開源網路流量分析的框架,我們可以把他想成是一個強化版的 IDS(Intrusion Detection System)
安裝環境
- ubuntu 16.04
- Bro 2.5.3
# 安裝原文:https://www.digitalocean.com/community/tutorials/how-to-install-bro-on-ubuntu-16-04
Pre-install
sudo update
sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python-dev swig zlib1g-dev gitsudo apt-get install bison cmake flex g++ gdb make libmagic-dev libpcap-dev libgeoip-dev libssl-dev python-dev swig2.0 zlib1g-dev
Download both the IPv4 and IPv6 databases
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gzgzip -d GeoLiteCity.dat.gz
gzip -d GeoLiteCityv6.dat.gz sudo mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
sudo mv GeoLiteCityv6.dat /usr/share/GeoIP/GeoIPCityv6.dat
Install
git clone --recursive git://git.bro.org/bro
# 進入 clone 下來的資料夾後,檢查本機環境
./configure # 建立安裝的程式,需要花一段時間
make # 安裝完記得看有無錯誤訊息
sudo make install
建立軟連結 or 加入 PATH
這個擇一做就好囉
# 軟連結
sudo ln -s /usr/local/bro/bin/broctl /usr/local/bin/broctl
sudo ln -s /usr/local/bro/bin/bro /usr/local/bin/bro # PATH
export PATH=/usr/local/bro/bin:$PATH
修改參數檔
請檢查的需監聽的網卡(這個步驟是一定要修改的),當然後面還有很多要改的,但目前只需要監聽封包這個功能,所以我們只修改這裡
sudo vim /usr/local/bro/etc/node.cfg
Bro 的操作
安裝完畢後,我們有兩種使用的方式,一種是使用 Broctl,另一種是直接使用 command-line 運行 bro
使用 broctl
$ sudo broctl # 初始化參數
>> install
# 錄製與停止
# 這邊如果出現錯誤訊息,可以用 diag 來檢測
>> start
>> stop
在內部可以做許多操作,詳情可以查看help
主要程式預設是放置在
/usr/local/bro
錄製結束後的檔案會被封裝在下面路徑
# 錄製中
/usr/local/bro/logs/current
# 錄製完
/usr/local/bro/logs/{錄製日期}
使用 command-line 運行 bro
會直接在運行位置下生成檔案
sudo bro -i {網卡裝置}
可以利用 bro-cut 幫你整理資料
# 幫你把時間做轉換
cat ssl.log | /usr/local/bro/bin/bro-cut -C -d | tail -n 5
Using Docker
這邊我有嘗試利用 docker 來監聽,但最後失敗了,還是記錄下並且改使用替代方案
Docker image
Capture Live Traffic(失敗)
選定好網卡讓 bro 直接錄製
$ docker run --rm --cap-add=NET_RAW --net=host -v ${PWD}:/pcap:rw blacktop/bro -i eth0
這邊只能監聽到 docker 內部的網路,沒有看到本地端的網卡裝置,就算已加入 --net=host
參數依舊無法監聽本地端的網路,如果要監聽 host 的網路可能需要額外的導入?
需再研究一下 docker 內部的網路
https://docs.docker.com/network/
Capture Live Traffic with tcpdump(替代方案)
所以這裡使用 tcpdump 的方式來監聽本地端網路
sudo tcpdump -i en6 -w output.trace
我們可以加入 -s
參數來抓到更完整的封包
sudo tcpdump -i en0 -s 0 -w mypackets.trace
我們可以使用ifconfig
來找出系統中正確的網路卡介面取代 en0
(而 -s 0
可以告訴 tcpdump 抓取完整的 packets ,有些時候要使用 -s 65535
)
接著用 bro 分析,他會使用預設的腳本來對錄製好的 trace 做分析,會輸出數個檔案
docker run --rm -v ${PWD}:/pcap:rw blacktop/bro -r output.trace