CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

passive

2017年5月23日 766点热度 0人点赞 0条评论

passive

  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

建立你自己的Passive DNS收集系统

东二门陈冠希2016-05-10共179926人围观 ,发现 11 个不明物体网络安全

在本篇文章中,我将会向大家介绍如何在Ubuntu服务器上搭建一个Bro IDS并且安装一个bro-pdns来记录DNS的查询记录,存入SQL数据库中。

Passive DNS对安全研究非常重要,因为它可以在前期帮助我们构建出目标的基础设施结构,并且可以得到以下三方面的答案:

该域名曾经绑定过哪些IP

这个IP有没有其他的域名

该域名最早/最晚什么时候出现

Passive DNS同时也在SOC的时候起到很大的帮助。通过识别的恶意域名,可以找到其他被恶意破坏的机器。目前有很多网站允许我们访问它的 Passive DNS系统,例如:

Virustotal(https://www.virustotal.com/)、passivetotal(https://www.passivetotal.com)、CIRCL (https://www.circl.lu/services/passive-dns/)。有很多这样的网站,但是,自己在本地有一个当然会更方便。

安装Bro

首先,你需要做的第一件事是安装一个ubuntu并且运行起来。我们就直接用Security Onion简单的搭建下就行了,直接通过虚拟机搭建起来就行了。

具体命令如下:

> apt-get update && apt-get upgrade

> apt-get install cmake make gcc g++ flex bison libpcap-dev/

/libgeoip-dev libssl-dev python-dev zlib1g-dev

/libmagic-dev swig2.0

> wget https://www.bro.org/downloads/release/bro-2.4.tar.gz

> tar -xvzf bro-2.4.tar.gz

> cd bro-2.4

> ./configure --prefix=/nsm/bro

> make

> make install

> export PATH=/nsm/bro/bin:$PATH

我们首先假设,我们只运行了单个的Bro,并且只有一个监控界面。如果你想要更多的功能,可以阅读配置文件。

 

以上的步骤完成后,我们需要配置一个文件。

 

由于我们只需要监控一个接口,所以我们不修改任何文件。但是,为了确定下,我们需要查看$PREFIX/etc/node.cfg确定下eth0是否是我们唯一的网卡接口。

注:在我们的例子中$PREFIX是/nsm/bro

 

现在我们可以开始运行Bro了:

> broctl

[BroControl] install

[BroControl] start

[BroControl] status

如果你的路径没有设置正确,你可以用完整路’/nsm/bro/bin/broctl`’运行”broctl”  好吧,这一点都不难!安装完Bro,我们开始安装MySQL,然后让MySQL工作起来,这样的话,我们就能在数据库中记录Bro的请求和应答了。这就更简单了:

> sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

> sudo mysql_install_db

> sudo /usr/bin/mysql_secure_installation

接下来,我们创建一个数据库使用:

> mysql -u root -p

mysql> CREATE DATABASE pdns;

但是,我们还需要安装其他的一些第三方库,首先我们需要安装‘pip’

> wget https://bootstrap.pypa.io/get-pip.py

> python get-pip.py

接下来我们安装,Bottle库,对,就像下面这样:

> pip install bottle

并且用apt安装SQLAlchemy:

> sudo apt-get install python-sqlalchemy

好了,我们需要的东西差不多都安装完了,我们可以让 bro-pdns启动了…首先,我们用git下载bro-pnd,没有的话可以apt安装:

> apt-get install git

> git clone https://github.com/JustinAzoff/bro-pdns.git

接下来,把bro-pdns文件夹移动到’/nsm/bro/share/bro/site’路径下,然后打开’/nsm/bro/share/bro/site’路径下的’local.bro’文件,添加下面这句内容:

@load ./bro_pdns

redef PDNS::uri = "mysql://root:password@localhost/pdns";

其中password要改成数据库的密码。然后,我们需要运行 `broctl deploy` 重启整个系统,并且把新的脚本导入到Bro  。设置下HTTP API,这样的话,你就可以直接调用API来获取domain和IP

BRO_PDNS_DB=mysql://root:pass@localhost/pdns/nsm/share/bro/

site/bro-pdns/bro_pdns.py serve

好了,配置好后,我们就可以正式开始使用它了。你想查询一个站点的信息,你可以向api传递你要查询的域名,就能查到结果了:

> curl http://localhost:8081/dns/www.youtube.com

很显然,用任何你想要查询的IP或者域名替换掉www.youtube.com,就可以了

图片16.png

 

但是这些结果是很乱的,因为他是用json格式的,我们可以用python写一个脚本来处理下,让结果更漂亮些,下面的脚本就是我们写的处理脚本:

#!/usr/bin/python

 

import requests

import json

import sys

 

indicator = sys.argv[1]

 

url = "http://localhost:8081/dns/"

 

r = requests.get(url+indicator)

j = json.loads(r.text)

 

print "+"+"-"*24+"+"+"-"*24+"+"+"-"*8+"+"+"-"*7+"+"+"-"*30+"+"

print "|"+" "*7+"First Seen"+" "*7+"|"+" "*7+"Last Seen"+" "*8+ \

"|"+" "*2+"Type"+" "*2+"|"+" "*2+"TTL"+" "*2+"|"+" "*12+"Answer"+" "*12+"|"

print "+"+"-"*24+"+"+"-"*24+"+"+"-"*8+"+"+"-"*7+"+"+"-"*30+"+"

 

for record in j['records']:

    print "  ",record['first'],"\t   ",record['last'],"     ",\

    record['type'],"      ",record['ttl'],"   ",record['answer']

下面是我们运行的结果:

图片17.png

 

总结

就像我一开始所提到的,整合现有的一些api,能得到一个更加强大的工具,并且构建出对手的基础设施和扩大你的列表。

*参考来源:nullsecure.org,FB小编东二门陈冠希编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

东二门陈冠希

东二门陈冠希70 篇文章等级: 7级
|
|
  • 上一篇:如何在网络中追踪入侵者(一):架构
  • 下一篇:如何在网络中追踪入侵者(二):高阶模式
发表评论

已有 11 条评论

  • tips 2016-05-10回复1楼

    干货,学习了

    亮了(2)
  • 123 2016-05-10回复2楼

    干货,360的天眼就是这个吧

    亮了(2)
    • 科科 2016-05-11回复

      @ 123 没错!

      亮了(1)
  • m09046105 (1级) 2016-05-10回复3楼

    你好 如何设置HTTP API ,以及如何调用HTTP API ,以及都有哪些 APi呢。谢谢。

    亮了(3)
    • 流沙 (1级) 2016-05-23回复

      @ m09046105  貌似是个环境变量吧

      亮了(2)
  • q2be 2016-05-11回复4楼

    [喵喵]

    亮了(2)
  • andy88 (5级)我相信我加入互联网,就是我未来的路、希望有大神关注http:... 2016-05-11回复5楼

    研究有遇到不断的问题,但是有失败才有成功

    亮了(2)
  • 流沙 (1级) 2016-05-23回复6楼

    安装完成有点问题,请教您

    亮了(2)
    • free_cherish (1级) 2016-11-24回复

      @ 流沙  bro-pdns部分的安装流程可以详细讲一下吗?

      亮了(0)
  • Tony.酱 2016-06-03回复7楼

    @流沙 这里的坑找到了 :)
    BRO_PDNS_DB确实是liunx的环境变量,但值不是“mysql://root:pass@localhost/pdns/nsm/share/bro/site/bro-pdns/bro_pdns.py serve”估计是排版的问题导致的,英文原贴好像也是这样,应该是mysql://root:pass@localhost/pdns,后面那一段是去该目录下执行bro_pdns.py serve,然后另开个终端curl就好了,伤不黑啊。。。。

    亮了(3)
    • free_cherish (1级) 2016-11-24回复

      @ Tony.酱 搞了很久,一直出错,我再问一下:
      (1)sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql显示定位不到后两个软件,于是自己安装了apache2 php php-myql
      这后两个模块在这里起什么作用?
      (2)sudo mysql_install_db,显示该命令已失效,使用mysqld –initialize报错
      求指导!!!

      亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

东二门陈冠希

东二门陈冠希

再看我就把你吃掉!

70 篇文章17 条评论

相关阅读

  • Metasploitable 2系列教程:漏洞利用之Unreal IRCd 3.2.8.1
  • 揭秘Patchwork APT攻击 :一个与中国南海和东南亚问题相关的网络攻击组织
  • 进击的比特币勒索者Locky
  • 让子弹多飞一会:论如何优化DDoS
  • 浅析思科0day漏洞CVE-2016-6415

特别推荐

关注我们 分享每日精选文章

不容错过

  • Tap Lan 实战之“伪装的路由”creturn2015-12-24
  • 动手搭建DDoS演练:揭秘在线DDoS攻击平台(下)ArthurKiller2016-07-05
  • 人大刚刚通过的《网络安全法》都有哪些看点?kuma2016-11-07
  • Python爬虫开发(五):反爬虫措施以及爬虫编写注意事项VillanCh2016-03-09

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2017年5月23日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me