被动信息搜集

 

 

被动信息搜集主要通过搜索引擎或者社交等方式对目标资产信息进行提取, 通常包括IP查询、Whois查询、子域名搜集等。进行被动信息搜集时不与目标产  生交互,可以在不接触到目标系统的情况下挖掘目标信息。主要方法包括:DNS 解析、子域名挖掘、邮件爬取等。

 

 

 

 

 

 

4.1.1    DNS解析

DNS(Domain Name System ,域名系统)是一种分布式网络目录服务,主要 用于域名与IP地址的相互转换,能够使用户更方便地访问互联网,而不用去记住 一长串数字(能够被机器直接读取的IP)。就像拜访朋友要先知道别人家怎么走 一样,当Internet上的一台主机要访问另外一台主机时,必须首先知道其地址,

TCP/IP中的IP地址是由四段以“ .”分开的数字组成,记起来总是不如名字那么方 便,所以采用了域名系统来管理名字和IP的对应关系。本节将介绍如何通过

Python脚本获取目标网站域名对应的IP地址,以及获取注册时间、注册人姓名、 邮箱等信息。

1.IP查询

IP查询是通过当前所获取到的URL去查询对应IP地址的过程。可以应用 Socket库函数中的gethostbyname() 获取域名所对应的IP值。

例如,查询域名www.baidu.com所对应的IP值,代码如下:

>>> import socket

>>> ip = socket.gethostbyname( 'www .baidu .com ')

>>> print(ip)

输出结果:

2.Whois查询

Whois是用来查询域名的IP以及所有者信息的传输协议。简单地说,Whois就 是一个数据库,用来查询域名是否已经被注册,以及注册域名的详细信息(如域 名所有人、域名注册商等)。Python中的模块python-whois可用于Whois 的查询。

首先通过pip安装python-whois模块:

   pip install python-whois                                                                    

例如,通过Python 自带的whois模块查询域名www.baidu.com的注册信息,代 码如下:

 

 

 

 

 

>>> data = whois( 'www .baidu .com ')

>>>print(data)

输出结果如下所示:

3b949171caa8408a9bb2645f7d54f295.png bc8ee294617e4925a215f210b8c80878.png

 

 

 

 

 

4.1.2    子域名挖掘

域名可以分为顶级域名、一级域名、二级域名等。子域名(subdomain )是顶 级域名( 一级域名或父域名)的下一级。例如,mail.example.com和

calendar.example.com是example.com的两个子域,而example.com则是顶级域.com  的子域。在测试过程中,测试目标主站时如果未发现任何相关漏洞,此时通常会 考虑挖掘目标系统的子域名。子域名挖掘方法有很多种,例如,搜索引擎、子域 名破解、字典查询等。

下面将向大家介绍如何通过Python写一个简单的子域名挖掘工具。此处是通 过Bing搜索引擎(网址为必应)进行子域名搜集。代码如下:

#! /usr/bin/env python

#   *   coding:utf-8   *  

import requests

from bs4 import BeautifulSoup

from urllib.parse import urlparse

import sys

def bing_search(site, pages) :

Subdomain = []

headers = { 'User-Agent ' : 'Mozilla/5 .0 (X11; Linux x86_64; rv:60 .0) Gecko/ 20100101 Firefox/60 .0 ',

'Accept ' : '*/* ',

'Accept-Language ' : 'en-US,en;q=0 .5 ',

'Accept-Encoding ' : 'gzip,deflate ',

'referer ' : "http://cn .bing .com/search?q=email+site%3abaidu .

com&qs=n&sp=-1&pq=emailsite%3abaidu .com&first=2&FORM=PERE1"

}

for i in range(1,in t(pages)+1) :

url = "https://cn .bing .com/search?q=site%3a"+site+"&go=Search&qs=ds&

first="+ str((in t(i)-1)*10) +"&FORM=PERE"

conn = requests .session()

conn.get('必应 ', headers=headers)

html = conn .get(url, stream=True, headers=headers, timeout=8)

soup = BeautifulSoup(html.content, 'html.parser ')

job_bt = soup .findAll( 'h2 ')

for i in job_bt :

link = i.a .get( 'href ')

domain = str(urlparse(link) .scheme + " ://" + urlparse(link) .netloc) if domain in Subdomain:

pass

else:

Subdomain .append(domain)

print(domain)

if __name__ == '__main__ ' :

# site=baidu .com

if len(sys .argv) == 3:

site = sys .argv[1]

page = sys .argv[2]

else:

print ("usage: %s baidu .com 10" % sys .argv[0])

sys .exit(-1)

Subdomain = bing_search(site, page)

打开Linux系统终端,并执行命令Python3 subdomain.py baidu.com 15 ,输入

 

 

 

 

baidu.com ,表示对该域名进行子域名收集,数字15表示获取Ping搜索引擎页数, 运行效果如下所示:

 

dbde5d1978a341e7897c12f24ebf4171.png

 

14f85b19f47e4b21aba49d63242404de.png

 

 

4.1.3    邮件爬取

 

在针对目标系统进行渗透的过程中,如果目标服务器安全性很高,通过服务 器很难获取目标权限时,通常会采用社工的方式对目标服务进行进一步攻击。邮 件钓鱼攻击是常见的攻击方式之一。在进行钓鱼之前,需要针对目标相关人员的 邮件信息进行全面采集。下面将带领大家一起编写一个邮件采集工具。

此处邮件采集工具主要通过国内常见的搜索引擎(百度、Bing等)进行搜   集。针对搜索界面的相关邮件信息进行爬取、处理等操作之后。利用获得的邮箱 账号批量发送钓鱼邮件,诱骗、欺诈目标用户或者管理员进行账号登录或者点击 执行,进而获取目标系统的权限。该邮件采集工具所用到的相关库函数如下所

示:

 

sys

getopt

requests

1)在程序的起始部分,当执行过程中没有发生异常时,则执行定义的

start() 函数。通过sys.argv[]实现外部指令的接收。其中,sys.argv[0]表示代码本 身的文件路径,sys.argv[1:]表示从第一个命令行参数到输入的最后一个命令行  参数,存储形式为list类型:

if __name__ == '__main__ ' :

#定义异常

try:

start(sys .argv[1:])

except Keyboard Interrupt :

print("interrupted by user, killing all threads . . .")

2)编写命令行参数处理功能。此处主要应用getopt.getopt() 函数处理命令  行参数,该函数目前有短选项和长选项两种格式。短选项格式为“-”加上单个字母 选项;长选项格式为“--”加上一个单词选项。opts为一个两元组列表,每个元素形 式为“(选项串,附加参数)” 。当没有附加参数时,则为空串。之后通过for语句 循环输出opts列表中的数值并赋值给自定义的变量:

#主函数,传入用户输入的参数

def start(argv) :

url = ""

pages = ""

if len(sys .argv) < 2:

print("-h 帮助信息;\n")

sys .exit()

#定义异常处理

try:

banner()

 

 

 

 

 

opts,args = getopt.getopt(argv,"-u:-p:-h")

except getopt.GetoptError:

print( 'Error an argument! ')

sys .exit()

for opt,arg in opts:

if opt == "-u" :

url = arg

elif opt == "-p" :

pages = arg

elif opt == "-h" :

print(usage())

launcher(url,pages)

 

3)输出帮助信息,增加代码工具的可读性和易用性。为了使输出信息更加  美观简洁,可以通过转义字符设置输出字体颜色,从而实现需要的效果。开头部 分包含三个参数:显示方式、前景色、背景色。这三个参数是可选的,可以只写 其中的某一个参数。结尾部分可以省略,但是为了书写规范,建议以“\033[0m” 结 尾。其具体的输出格式如下所示:

开头:\033[显示方式;前景色;背景色m

结尾部分:\033[0m

示例代码如下:

print( '\033[0;30;41m print( '\033[0;31;42m print( '\033[0;32;43m print( '\033[0;33;44m print( '\033[0;34;45m print( '\033[0;35;46m print( '\033[0;36;47m

ms08067实验室欢迎你 \033[0m ')

ms08067实验室欢迎你 \033[0m ')

ms08067实验室欢迎你 \033[0m ')

ms08067实验室欢迎你 \033[0m ')

ms08067实验室欢迎你 \033[0m ')

ms08067实验室欢迎你 \033[0m ')

ms08067实验室欢迎你 \033[0m ')

示例的输出效果如下所示:

685242cd25e34f108302df989a9d1e6b.png

该部分主要代码如下所示,先以图案的形式输出脚本出自MS08067实验室, 然后输出有关该脚本使用的帮助信息,即可执行参数指令以及对应的功能简介。 代码如下:

#banner信息

def banner() :

print( '\033[1;34m######################################################### ###############################\033[0m\n '

 

 

 

 

 

'\033[1;34m######################################\033[1;32MMS08067实验室 \033[1;34m#####################################\033[0m\n '

'\033[1;34m######################################################### ###############################\033[0m\n ')

#使用规则

def usage() :

print( '-h : --help 帮助; ')

print( '-u: --url  域名; ')

print( '-p: --pages 页数; ')

print( 'eg: python -u "www .baidu .com" -p 100 '+ '\n ')

sys .exit()

##未授权函数检测

 

输出效果如下所示:

b57fb2445d3c40999240a1840b238c87.png

当然,此处也可以根据自己的喜好设置输出不同类型的字体颜色或者图案。

4)确定搜索邮件的关键字,并调用bing_search() 和baidu_search() 两个 函数,返回Bing与百度两大搜索引擎的查询结果。由获取到的结果进行列表合  并,去重之后,循环输出。代码如下:

#漏洞回调函数

def launcher(url,pages) :

email_num = []

key_words = [ 'email ', 'mail ', 'mailbox ', '邮件 ', '邮箱 ', 'postbox ']

for page in range(1,in t(pages)+1) :

for key_word in key_words:

bing_emails = bing_search(url,page,key_word)

baidu_emails = baidu_search(url,page,key_word)

sum_emails =  bing_emails + baidu_emails

for email in sum_emails:

if email in email_num:

pass

else:

print(email)

with open( 'data .txt ', 'a+ ') as f :

f.write(email + '\n ')

email_num .append(email)

5)用Bing搜索引擎进行邮件爬取。Bing引擎具有反爬防护,会通过限定

referer 、cookie等信息来确定是否是网页爬取操作。可以通过指定referer与

requests.session() 函数自动获取cookie信息,绕过Bing搜索引擎的防爬防护。代 码如下:

 

 

 

 

 

 

def bing_search(url,page,key_word) :

referer = "http://cn .bing .com/search?q=email+site%3abaidu .com&qs=n&sp=-1& pq=emailsite%3abaidu .com&first=1&FORM=PERE1"

conn = requests .session()

bing_url = "http://cn .bing .com/search?q=" + key_word + "+site%3a" + url + "&qs=n&sp=-1&pq=" + key_word + "site%3a" + url + "&first=" + str(

(page-1)*10) + "&FORM=PERE1"

conn.get('必应 ', headers=headers(referer))

r = conn .get(bing_url, stream=True, headers=headers(referer), timeout=8) emails = search_email(r .text)

return emails

 

6)用百度搜索引擎进行邮件爬取。百度搜索引擎同样设定了反爬防护,相  对于Bing搜索引擎来说,百度搜索引擎不仅对referer和cookie进行校验,还同时在 页面中通过JavaScript语句进行动态请求链接,从而导致不能动态获取页面中的信 息。可以通过对链接的提取,再进行request请求,从而绕过百度搜索引擎的反爬 设置,具体代码如下所示:

def baidu_search(url,page,key_word) :

email_list = []

emails = []

referer = "https://www .baidu .com/s?wd=email+site%3Abaidu .com&pn=1"

baidu_url = "https://www .baidu .com/s?wd="+key_word+"+site%3A"+url+"&pn= "+str((page-1)*10)

conn = requests .session()

conn .get(referer,headers=headers(referer))

r = conn .get(baidu_url, headers=headers(referer))

soup = BeautifulSoup(r .text, 'lxml ')

tagh3 = soup .find_all( 'h3 ')

for h3 in tagh3:

href = h3 .find( 'a ') .get( 'href ')

try:

r = requests .get(href, headers=headers(referer),timeout=8)

emails = search_email(r .text)

except Exception as e:

pass

for email in emails:

email_list.append(email)

return email_list

7)通过正则表达式获取邮箱号码。此处也可换成目标企业邮箱的正则表达 式,代码如下:

def search_email(html) :

emails = re .findall(r"[a-z0-9\ .\-+_]+@[a-z0-9\ .\-+_]+\ .[a-z]+",html,re .I) return emails

def headers(referer) :

headers = { 'User-Agent ' : 'Mozilla/5 .0 (X11; Linux x86_64; rv:60 .0) Gecko/ 20100101 Firefox/60 .0 ',

'Accept ' : '*/* ',

'Accept-Language ' : 'en-US,en;q=0 .5 ',

'Accept-Encoding ' : 'gzip,deflate ',

'Referer ' : referer

}

return headers

通过Python 3执行刚刚写完的脚本并通过-u参数指定域名,-p参数表示搜索引

 

 

 

 

 

擎的页数,其输出效果如下所示:

此处也可以指定其他域名,并将爬取结果打印到页面中

 

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Kali渗透测试中,信息收集是非常重要的一步。信息收集又分为被动信息收集和主动信息收集。被动信息收集是指通过公开的信息来源,如搜索引擎、社交媒体、公司网站等来搜集目标的信息。主动信息收集则是指使用特定的工具和技术来主动获取目标的信息。以下是Kali渗透测试中常用的信息收集步骤: 1. 开始被动信息收集:使用搜索引擎进行目标的虚拟足迹搜索,查找目标可能泄露的信息,如员工姓名、电子邮件地址、电话号码等。同时,还可以通过搜索引擎的高级搜索功能,对目标域名进行更详细的搜索和分析。 2. 分析目标的社交媒体:通过目标的社交媒***解目标,并有针对性地进行后续攻击。 3. 扫描目标的网络:使用网络扫描工具,如Nmap,对目标的IP地址进行扫描,查找目标主机的开放端口和服务。这些信息可以帮助渗透测试人员了解目标的网络基础设施。 4. 利用WHOIS查询:使用WHOIS查询工具,查询目标的域名注册信息,如注册人、注册商、联系方式等。这些信息可以帮助渗透测试人员了解目标的背景信息和网络架构。 5. 进行主动信息收集:使用渗透测试工具,如Metasploit、Nessus等,对目标进行主动扫描和漏洞评估。通过对目标系统的漏洞扫描和渗透测试,可以发现可能存在的安全漏洞,并进行后续的攻击和渗透。 综上所述,Kali渗透测试中的信息收集步骤包括被动信息收集和主动信息收集,通过搜索引擎、社交媒体分析、网络扫描、WHOIS查询和渗透测试工具等手段,可以收集到目标的关键信息,为后续的攻击和渗透提供支持。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [如何使用Kali进行信息收集?](https://blog.csdn.net/hack0919/article/details/130913774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [渗透技术之各种信息收集的方式.docx](https://download.csdn.net/download/qq_40730911/12595950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值