跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

渗透基础——选择一个合适的C2域名


HACK7YD

推荐的帖子

0x00 前言

在渗透测试中,往往需要选择一个合适的域名作为c2服务器,那么什么样的域名才能称之为“合适”呢?

Expireddomains.net也许能给你一些建议。

Expireddomains.net可以查询最近过期或删除的域名,更重要的是,它提供了关键字搜索功能。

本文将对过期域名自动搜索工具CatMyFish进行测试,分析其原理,修复其bug,用python编写一个爬虫,得到所有的搜索结果。

0x01 简介

本文将介绍以下内容:

测试CatMyFish,一个自动搜索过期域名的工具

分析原理纠正了CatMyFish中的错误

爬虫的开发思路和实现细节

开源python实现的爬虫代码

0x02 测试过期域名自动化搜索工具CatMyFish

下载地址:

https://github.com/Mr-Un1k0d3r/CatMyFish

主要实现流程

用户输入关键字

该脚本将搜索请求发送给expireddomains.net进行查询。

获取域名列表

将脚本域名发送给Symantec BlueCoat进行查询。

获取每个域名的类别。

Expireddomains.net地址:

https://www.expireddomains.net/

赛门铁克大衣地址:

https://sitereview.bluecoat.com/

实际测试

需要安装Python库beautifulsoup4

pip安装beautifulsoup4

尝试搜索关键词微软,脚本给出错误,如下图。

2-1.png

解析脚本结果时出现问题。

所以按照CatMyFish的实现思路,自己写脚本测试一下。

访问expireddomains.net,使用以下代码查询关键字microsoft:

导入urllib

导入urllib2

从bs4导入BeautifulSoup

URL=' https://www . expired domains . net/domain-name-search/?q=微软

req=urllib2。请求(url)

res_data=urllib2.urlopen(req)

html=beautiful soup(RES _ data . read(),' html.parser ')

tds=html.findAll('td ',{'class': 'field_domain'})

对于tds中的td:

对于td.findAll('a ',{'class': 'namelinks'})中的a:

打印文本

总共得到15个结果,如下图所示。

2-2.png

通过浏览器访问,共获得25个结果,如下图所示

2-3.png

对比后发现,脚本获得的数量少于浏览器,应该是脚本的筛选出现了问题。

注:

建议初学者掌握使用beautifulsoup4的基本技巧,本文对此进行了简要介绍。

0x03 查找bug原因

1、根据response查看域名标签,对筛选规则进行判断

我们需要获取收到的响应数据,检查每个域名对应的标签,确定标签筛选是否有问题。

查看响应数据的两种方法:

(1) 使用Chrome浏览器查看

F12 -更多工具-网络条件

重新加载网页,选择?q=微软资源

如下图

2-4.png

(2) 使用python脚本

代码如下:

导入urllib

导入urllib2

URL=' https://www . expired domains . net/domain-name-search/?q=微软

req=urllib2。请求(url)

res_data=urllib2.urlopen(req)

print res_data.read()

分析响应数据并找出错误原因:

使用原始测试脚本,可以提取以下数据中的域名:

MicroSoft. MSK . rugo daddy . com dyna dot . com uniregistry . com name cheap . com one . com 123-reg . co . uk

但是响应数据还包含另一种类型的数据:

MicroSoft。com

最初的测试脚本没有提取存储在这个标签中的域名信息。

0x04 bug修复

筛选想法:

获取标签中第一个标题的内容。

原因:

这样就可以同时获得两组数据中存储的域名信息,过滤掉无效信息(如第二个标题中的域名GoDaddy.com)。

实施代码:

tds=html.findAll('td ',{'class': 'field_domain'})

对于tds中的td:

打印td.findAll('a')[0]['title']

因此,获得完整查询结果的测试代码如下:

导入urllib

导入urllib2

导入系统

从bs4导入BeautifulSoup

def SearchExpireddomains(键):

URL=' https://www . expired domains . net/domain-name-search/?q='键

req=urllib2。请求(url)

res_data=urllib2.urlopen(req)

html=beautiful soup(RES _ data . read(),' html.parser ')

tds=html.findAll('td ',{'class': 'field_domain'})

对于tds中的td:

打印td.findAll('a')[0]['title']

if __name__=='__main__ ':

searchepireddomains(sys . argv[1])

成功获取第一页上的所有结果,并按如下所示进行测试。

2-5.png

0x05 获得所有查询结果

Expireddomains.net每页保存25个结果。要获得所有结果,您需要发送多个请求来遍历所有查询页面的结果。

首先需要得到所有结果的数量,除以25得到要查询的页数。

1、统计所有结果

检查响应以找到指示搜索结果数量的位置,内容如下:

显示过滤器

(大约20,213 个域)

Chrome浏览器显示如下图

3-1.png

为了简化代码长度,select()被直接传入CSS选择器进行过滤。过滤标签strong后,第一个标签表示结果的数量,对应的查询代码是:

打印html.select('strong')[0]

输出为20,213

提取的数字:

打印html.select('strong')[0]。文本

输出是20213。

去掉中间”;

打印html . select(' strong ')[0]. text . replace(',','')

输出是20213。

除以25得到要查询的页数。这里需要注意的是,字符串类型“20213”需要转换成整数20213。

2、猜测查询规律

第二页查询的Url:

https://www.expireddomains.net/domain-name-search/?start=25q=微软

第3页查询的Url:

https://www.expireddomains.net/domain-name-search/?start=50q=微软

找到查询规则,即第一页上查询的url:

https://www.expireddomains.net/domain-name-search/?start=25*(i-1))q=microsoft

注:

测试结束后,expireddomains.net为未注册用户提供了多达550个结果,共21页。

3、对结果进行判断

在脚本实现中,需要判断结果。如果结果大于550,则只输出21页;如果小于550,结果将输出/25页。

4、模拟浏览器访问(备选)

当我们使用脚本自动查询多个页面时,如果网站使用反爬虫机制,就无法获得真实数据。

经过测试,expireddomains.net没有打开反爬虫机制。

将来,如果在expireddomains.net开启了反爬虫机制,脚本需要模拟浏览器发送请求,并在报头中附加用户代理等信息。

检查Chrome浏览器以获取发送请求的信息,如下所示。

3-2.png

控件中,添加要绕过的标头信息。

示例代码:

req.add_header('用户代理',' Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,像Gecko)Chrome/65 . 0 . 3325 . 181 Safari/537.36 ')

完整的代码实现地址:

https://github.com/3gstudent/GetExpiredDomains

实际测试:

搜索microsoftoffices,结果不到550,如下图。

4-1.png

搜索微软,结果大于550,只显示21页,如图。

4-2.png

与Web访问的内容进行比较,结果相同,测试成功。

0x06 小结

本文对过期域名自动搜索工具CatMyFish进行了测试,分析了其原理,修复了其bug,用python编写了爬虫来获取所有收集到的结果,分享了开发思路和开源代码。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...