查看: 3732|回复: 2

[项目] 如何使用树莓派自制网络监视器

[复制链接]
  • TA的每日心情
    无聊
    2019-1-9 09:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2018-11-16 11:01:52 | 显示全部楼层 |阅读模式
    分享到:
    本文所介绍的工具适合家庭环境下的“黑盒测试”,它可以帮助你记录网络中发生的所有事情。你可以用它来检测网络威胁,或将数据提供给相关专家来进行网络取证分析。

    如果你需要的是企业环境下的解决方案,你可以参考Security Onion的这篇文章

    购物清单
    1.      树莓派3 (外壳+电源+电路板)
    2.      闪迪Class 10 microSD卡 64GB(80Mb/s)
    3.      Debian OS-Linux RaspbianLite
    4.      网件千兆交换机或其他支持端口镜像的设备,我使用的是D-Link1100-08P
    5.      Critical Stack API(Threat Intel/ IOCs)
    6.      Mailgun账号或类似支持警报/通知的邮件服务
    总价值:约75英镑

    概览图
    2.jpg

    关键技术介绍

    什么是端口镜像?
    将一个端口的流量数据复制到另一个端口(被动式),会增加交换机的运行负荷。

    什么是Bro
    一款IDS协议分析工具,你可以把它当作Wireshark的协议分析器,但是它没有GUI界面,而且速度更快。

    什么是Netsniff?
    进行数据包捕获的守护进程,它使用了AF-packet来提升数据包的捕捉速度。

    什么是LOKI
    基于YARA的文件扫描守护进程。有些类似基于签名检测的反病毒产品,但是你可以自行制定检测规则。

    什么是Critical Stack
    一个威胁情报平台,你可以在树莓派上通过API来与该平台链接。

    什么是Team Cymru MHR
    一个恶意软件哈希库,你可以使用该数据库中的信息来对检测到的恶意程序哈希进行匹配。


    开始动手
    3.jpg

    1.      把系统刷到树莓派中
    2.      给树莓派分配一个IP
    3.      运行bash脚本
    4.      搞定

    一、把Raspbian刷到microSD卡中
    我使用的是MacBook,所以不同平台的方法可能会有所不同,其他平台用户可以参考【这篇教程】来获取更多内容。

    插入microSD卡:

    1. diskutil list
    复制代码
    找到磁盘号:
    1. diskutil unmountDisk /dev/disk<disk#from diskutil>
    复制代码
    将Raspbian镜像刷入到microSD卡’disk’中:
    1. <font face="Menlo, Monaco, Consolas, Courier New, monospace"><span style="font-size: 13px; white-space: pre-wrap;">sudo dd bs=1m if=image.imgof=/dev/rdisk<disk# from diskutil></span></font>
    复制代码
    完成之后,卸载microSD卡:
    1. diskutil unmountDisk /dev/disk<disk#from diskutil>
    复制代码


    二、配置网络
    使用默认配置登录。用户名:pi,密码:raspberry。

    设置wlan0(wifi)的IP,用于受信管理访问:

    1. sudo nano/etc/wpa_supplicant/wpa_supplicant.conf
    复制代码

    1. <blockquote>network={
    复制代码
    1. <blockquote>sudo ifdown wlan0
    复制代码
    当你获取到了一个DHCP IP之后,你可以使用SSH访问这个节点了。接下来,将eth0留下当作镜像接口,它不需要设置IP地址。
    1. sudo apt-get update && sudo apt-get-y install vim

    2. sudo vim /etc/network/interfaces
    复制代码
    添加下列代码:
    1. iface eth0 inet static

    2. static ip_address=0.0.0.0
    复制代码
    重启eth0接口:
    1. sudo ifconfig eth0 down && sudoifconfig eth0 up
    复制代码


    三、部署

    下载并运行bash脚本,脚本已在Raspbian上成功测试。

    -安装程序的核心组件

    -配置网络选项(禁用NIC offloading)

    -给每一个程序创建服务

    -使用Mailgun/SSMTP创建邮件警报

    -配置cron任务

    1. pi@foxhound:~# sudo su -

    2. root@foxhound:~# apt-get install -y git

    3. root@foxhound:~# cd ~

    4. root@foxhound:~# git clonehttps://github.com/sneakymonk3y/foxhound-nsm.git

    5. root@foxhound:~# chmod +xfoxhound-nsm/foxhound.sh

    6. root@foxhound:~# ./foxhound-nsm/foxhound.sh
    复制代码


    现在,环境部署已经完全完成啦!
    4.jpg
    接下来呢?当脚本完成运行之后,所有的服务都会被立刻激活,然后你就可以看到所有流入的数据啦!

    性能

    通过pcap数据来向镜像端口eth0发送一些垃圾信息,我使用的是一些提前准备好的数据:

    1. <blockquote>pi@foxhound:~ $ sudo tcpreplay -t -K -q--loop=10 --intf1=eth0 /opt/foxhound-1476541443.pcap
    复制代码
    下面是发送前和发送后的broctl netstats数据:
    1. <blockquote>root@foxhound:/etc/network# broctl netstats
    复制代码
    1. <blockquote>root@foxhound:/etc/network# broctl netstats
    复制代码
    对于家庭或实验室环境来说,它的性能相对还算很好了(1000000个数据包只会丢弃10000个)。我的带宽速度为40Mbps,对于IDS系统来说已经足够了。如果你还需要提升性能,建议考虑换掉树莓派。

    如果你想进行更多的NIC perf测试,你可以在服务器上运行下列命令:

    1. <blockquote>mark@ubuntu:~$ sudo apt install iperf3
    复制代码
    然后在树莓派上运行:
    1. <blockquote>root@foxhound:~# apt install iperf3
    复制代码
    我假设这里的瓶颈是microSD卡,它的速度大约是80MB/s。

    Bro基础
    -所有Bro日志的默认存储路径为/nsm/bro/logs/

    -默认的脚本路径为/usr/local/bro/share/bro/site/bro-scripts/

    日志目录结构大致如下所示:

    1. <blockquote>pi@foxhound:/nsm/bro/logs/current $ ls-lash
    复制代码
    你可以使用head命令来查找文本域名称:
    1. <blockquote>pi@foxhound:$ head  dns.log
    复制代码
    使用bro-cut来解析日志:
    1. pi@foxhound:$ cat dns.log | bro-cut -D tsid.orig_h id.orig_p id.resp_h id.resp_p proto query answers TTLs
    复制代码
    基础报告:
    1. pi@foxhound:$ bro-cut query < dns.log |sort | uniq -c | sort -rn | head -n 10
    复制代码
    如果你还需要更多的示例,你可以查看Bro提供的官方练习【传送门】。

    你可以使用tail命令输出DNS日志并在客户端生成一些DNS流量:

    1. tail -f dns.log | awk  '{print $3, $7, $9}'
    复制代码
    请注意,只有conn.log才可以启用MaxMind GEOIP查询。
    1. <blockquote>pi@foxhound:$ bro-cut resp_cc < conn.log| sort | uniq -c | sort -rn | head -n 10
    复制代码
    我还没有制作仪表盘(Dashboard),如果你不想自己做的话,你可以直接使用VPS ELK实例在云端存储所有的日志,或者你也可以使用ELK/Splunk/Graylog将日志存储在本地。

    基础维护
    开启/停止netsniff-ng:
    1. <blockquote>pi@foxhound:~ $ sudo service netsniff-ngstop
    复制代码
    开启/停止bro(网络统计):
    1. pi@foxhound:~ $ sudo -i broctl stop

    2. pi@foxhound:~ $ sudo -i broctl start

    3. pi@foxhound:~ $ sudo -i broctl netstats

    4. pi@foxhound:~ $ sudo -i broctl status
    复制代码
    手动运行Loki:
    1. root@foxhound:~ $ python /nsm/Loki/loki.py--noprocscan --dontwait --onlyrelevant -p /nsm/bro/extracted -l /nsm/Loki/log
    复制代码
    检测CriticalStack的入侵威胁指标(IoCs),可通过cron脚本实现定期检查:
    1. root@foxhound:~ $ sudo -u critical-stackcritical-stack-intel list
    复制代码
    5.jpg

    参考资料
    1.      部署网络安全监控:http://www.appliednsm.com/
    2.      网络安全监控实践:https://www.nostarch.com/nsm
    3.      Laika BOSS-对象扫描系统:https://github.com/lmco/laikaboss
    4.      PassiveDNS:https://github.com/gamelinux/passivedns
    5.      D3js(图形化工具):https://d3js.org/
    6.      Graylog:https://www.graylog.org/

    6.gif

    参考来源:sneakymonkey,转载自FreeBuf




    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 16:48
  • 签到天数: 1056 天

    连续签到: 3 天

    [LV.10]以坛为家III

    发表于 2018-11-16 13:45:13 | 显示全部楼层
    谢谢分享                    
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-11-16 17:50:31 | 显示全部楼层
    感谢分享! null9.png null8.png

    null7.png null6.png

    null5.png null4.png

    null3.png null2.png

    null1.png null0.png


    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 17:01 , Processed in 0.142196 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.