msf中的情报搜集
msf中的情报搜集
被动的信息搜集
使用被动的、间接的信息搜索技巧,可以在目标不察觉的情况下挖掘目标的相关信息。
- 公开渠道情报搜集
- 对公开的和已知的信息进行检索筛选,获取到目标的情报集合,一系列的工具可以让被动信息搜集更加的方便,包括Yeti和Whois等方法。
- 注意:测试中的目标主要是一个非公开的网站和192.168.2.158 是本地搭建的一个测试系统环境
Whois查询
msf > whois baidu.com
- Whois查询后,会出现诸如以下的内容信息
Netcraft网站
Netcraft是一个Web页面工具,它可以发现某个网站的具体服务器IP地址和其他信息
除上以外,还有其他信息!https://searchdns.netcraft.com/
从挖掘到的数据信息,我们得知目标的IP地址为:104.193.88.77;如此我们就可以进一步的使用Whois查询该IP地址的信息。【如下图】
- 从上述的搜集信息中可以看出了该网站的注册结构、地理位置等信息。
nslookup命令
nslookup命令可以获得服务器的附加信息,
主动的信息搜集
Nmap端口扫描
确定目标的IP范围后,就可以启动Nmap对目标的IP端口开放情况进行扫描,得知对方的开放端口有哪些。
Nmap是目前最流行的端口扫描工具,Nmap的扫描结果可以输出在后端数据库中供后续使用。
<Nmap使用思维导图>:[Nmap使用思维导图]((F:\Metasploit\Nmap使用思维导图.png)
root > nmap -sS -Pn [IP]
-sS:TCP SYN扫描(可以执行一次隐藏的TCP SYN扫描)
-Pn:禁用Ping操作(nmap则不会使用ping命令预判主机是否存活)
我们使用Nmap完成了对192.168.2.158目标主机IP的端口扫描,结果中显示了现在开启的端口和服务。
root > nmap -sS -Pn -A [IP]
-A:对目标IP主机进行全面的扫描(耗时较长)
上图就是对目标的全面深入的扫描结果:
- 不仅显示了端口、状态,还显示了具体的正在进行的服务名称(VERSION)
- 还显示了目标使用的操作系统的类型和版号(OS CPE/OS details)
- 如果目标是真正的在生产的服务器还会有更多的信息
Metasploit与数据库连接使用
在面对大量目标的时候,非常的繁杂,此时就需要使用数据库,记录所有的操作过程;Metasploit支持对数据库的兼容,并且默认支持PostgreSQL数据库。
- 启动PostgreSQL数据库
apt-get install postgresql # 安装数据库
service postgresql start # 启动数据库
apt-get install metasploit-framework #安装msf
msf控制数据库
msf > msfdb init #初始化数据库
登陆PostgreSQL数据库
msf > switch user[/su] postgres #登陆数据库
- 连接数据库/数据表
msf > db_connect postgres:[user]@[IP]/[库名]
- 确认数据库和表的MSF之间的连接
msf > db_status #确认连接状态
- MSF-help中的数据库操作方法
analyze:分析特定地址或地址范围的数据库信息
db_connect:连接数据库服务
db_disconnect:断开数据库服务
db_export:导出包含数据库内容的文件
db_import:导入扫描结果文件(将自动检测文件类型)
db_nmap:执行nmap并自动记录输出
db_rebuild_cache:重建数据库存储模块缓存
db_remove:删除保存的数据服务条目
db_save:将当前数据服务连接保存为启动时重新连接的默认值
db_status:显示当前数据服务状态
hosts:列出数据库中的所有主机
loot:列出数据库中的所有数据表
services:列出数据库中的所有服务
vulns:列出数据库中的所有漏洞
workspace:在数据库工作区之间切换
Nmap扫描结果写入Metasploit的数据库中
- 执行Nmap并保存为.xml文件
root > nmap -sS -Pn -A -oX [文件名] [目标IP]
-oX:表示存储为xml文件
- 打开DB并确认连接、导入XML文件到数据库中
msf > db_status #确认连接
msf > db_import [文件名] #向数据库中导入文件
msf > db_hosts -c address #显示库中的所有主机address列
高级的Nmap扫描技巧:TCP空闲扫描
TCP空闲扫描相当于网络上”冒充“另一台IP主机,对目标进行更加”秘密“的扫描。我们需要在网络上定位一台使用递增IP帧标识(IP ID:用于跟踪IP包的次序的一种技术方法)机制的空闲主机(空闲主机指主机在一段特定的时间内不想网络发送数据包)
MSF中的scanner/ip/ipidseq模块,来寻找满足TCP空闲扫描要求的空闲主机
这个列表显示的是ipidseq模块扫描所需的的所有参数;
- RHOSTS:参数表示说明使用的IP地址段,如192.168.1.0/24;可以使用逗号分隔多个地址块以及每行包含一个IP地址的IP列表文本文件(引用路径)
- THREAD:参数表示设定扫描的线程数,线程数越大扫描速度越快,但是取决于机器的性能。
- 执行扫描任务
msf auxiliary(ipidseq) > set RHOSTS 192.168.2.0/24 #[IP]
msf auxiliary(ipidseq) > set THREAD 50 #[线程]
msf auxiliary(ipidseq) > run #执行
通过ipidseq模块的扫描得出该IP地址段中有三个空闲的主机
- Nmap-TCP空闲扫描
我们利用ipidseq模块扫描得出的三个空闲主机(有一个也是我们的目标主机,所以执行的过程中忽略它)
msf auxiliary(ipidseq) > nmap -PN -sI [空闲主机的IP] [目标主机的IP]
-sI:指定一个IP(空闲主机的IP)对目标进行扫描
使用空闲扫描,本机的IP地址不会向目标主机发送任何的数据包,但是空闲扫描方法就是这样利用被的主机IP访问,本机获得目标IP主机上开放的端口信息。
在MSF终端运行Nmap
将Nmap和Metasploit结合起来使用>>>>连接到数据库
msf > db_connect postgres:root@127.0.0.1/msfbook
成连接数据库后,在msf中的nmap扫描结果都会被数据库所记录在表中;之后在msf中nmap想被存进库中,则可以使用”db_nmap“命令进行nmap扫描。
msf > db_nmap -sS -A [目标ip]
在扫描结果中,我们发现了目标的开放端口、服务名称、软件版本、目标操作系统的类型猜测等……
- 查看数据库中的结果
msf > db_services
至此我们对目标的端口和服务扫描结果结束了。
Metasploit进行端口扫描
在MSF中,除了Nmap等众多的第三方端口扫描以外,MSF自家也带有几款不错的端口扫描器。
举例:假设攻陷一个位于防火墙之后使用网络地址转换NAT协议的主机,这台主机没有办法从Internet中获得连接的私有IP地址,只有内网的地址;如果想要使用MSF对位于NAT之后的主机进行攻击,那么就需利用已被攻陷的主机作为跳板,将流量传送到网络内部的主机上。使用msf内建的端口扫描工具:
msf > search portscan
使用msf的SYN端口扫描器对单个主机进行一次简单的扫描
msf > use scanner/portscan/syn
msf auxiliary(syn) > set RHOSTS [目标主机IP]
msf auxiliary(syn) > set THREADS [线程数<=128]
msf auxiliary(syn) > run # 执行
从结果中看出(未完全完成扫描任务),80、135、139等端口是开放的
针对性的扫描
服务器消息块协议扫描
Metasploit可以利用它的smb_version模块来遍历一个网络,并获取系统的版本号。
msf > use scanner/smb/smb_version
msf auxiliary(smb_version) > show options
msf auxiliary(smb_version) > set RHOSTS 192.168.2.158
msf auxiliary(smb_version) > run
如上图所示;smb_version模块扫描结果显示了目标IP主机的系统类型。
SMB协议是一种通用的文件共享协议,
搜索配置不当的SQL Server
配置不当的SQL Server通常是一个进入目标系统的第一个后门;安装后默认是在监听TCP-1433或使用动态端口,如果是随机的端口号,只需要简单的对UDP端口1433进行查询,便可以获得随机的TCP端口号。(msf中的mssqp_ping模块就是用来查询随机tcp端口的)
msf > use scanner/mssql/mssql_ping
msf auxiliary(mssql_ping) > show options
msf auxiliary(mssql_ping) > set RHOSTS [IP]
msf auxiliary(mssql_ping) > set THREADS [线程]
msf auxiliary(mssql_ping) > run
由于本地的虚拟目标中并未安装mssql,所以查询无果
如果目标中有MSSQL,查询结果会显示 MSSQL服务器的IP地址,确定sql的实例名,服务器版本号以及TCP的监听端口号
这是最为快捷的在一个大的子网中查找一个MSSQL监听的端口。
SSH服务[器]扫描
如果相对一些主机运行着SSH服务扫描发现,对版本号进行识别。SSH是一种非常安全的协议,但任何协议都是必有漏洞的。msf的ssh_version模块可以来识别目标上运行的SSH版本。
msf > use scanner/ssh/ssh_version
msf auxiliary(ssh_version) > set RHOSTS [IP]
msf auxiliary(ssh_version) > set THREADS [线程]
msf auxiliary(ssh_version) > run
扫描结果告诉我们 192.168.2.248主机的SSH版本号;
FTP扫描
msf > use scanner/ftp/ftp_version
msf auxiliary(ftp_version) > show options
msf auxiliary(ftp_version) > set RHOSTS [ip]
msf auxiliary(ftp_version) > set THREADS [线程]
msf auxiliary(ftp_version) > run
因为目标网段没有主机开启FTP服务,所以没有扫描出结果;
成功扫描出ftp服务,可以使用anonymous模块来检查FTP服务是否允许匿名用户登录;
如果目标的FTP允许匿名用户的默认登录,意味着我们具备了默认的文件读写的权限
简单网络管理协议扫描
简单网络管理协议SNMP,用来报告带宽利用率、冲突率以及其他信息。
SNMP是渗透测试者的金矿,可访问的SNMP服务器能够泄露关于特定系统的更多信息,甚至会导致设备被远程攻陷。(得到具有读写权限的Cisco路由器的SNMP团体字符串,便可以下载整个路由器的配置,对其进行修改并回传到路由器中)
MSF中snmp_enum模块,是为了SNMP扫描专门设计的:
msf > use scanner/snmp/snmp_enum
msf auxiliary(snmp_enum) > show options
msf auxiliary(snmp_enum) > set RHOSTS [IP]
msf auxiliary(snmp_enum) > set THREADS [线程]
msf auxiliary(snmp_enum) > run
猜解:
msf中的snmp_login模块,可以尝试对一个IP或一段IP使用字典来猜解SNMP团体字符串。
开始扫描前要留意,如果能够获得只读RO或读写RW权限的团体字符串,将是非常的有价值的!
基于Windows系统的SNMP,通常可以使用RO或RW权限的团体字符串,提取目标的补丁级别、运行的服务、用户名、持续运行时间、路由以及其他信息(团体字符串等同于查询设备信息或写入设备配置的参数所需要的口令)
猜解出字符串后,SNMP在范围内可以允许你做任何事,v1,v2版本有天生的缺陷,而v3版本后添加了加密功能机制,为了获取管理一台交换机的权限,首先需要找到SNMP团体字符串,利用snmp_login模块调用字典来采集被加密的SNMP团体字符串。
互联网中存在大量的不变更出厂设置就投入生产的设备。
自编扫描器
在MSF中拥有自定义扫描器的功能,自定义的扫描器可以使用msf框架中的全部类和方法,内建了代理服务器、安全套接字层SSL支持、报告生成以及线程设置等。
msf框架软件的扫描器模块包括各种mixin(混入类),如用作TCP、SMB的mixin,以及集成在MSF中的辅助扫描mixin;Mixin预定义的函数和调用的代码模块。
msf中的情报搜集的更多相关文章
- msf中exploit的web_delivery模块
背景:目标设备存在远程文件包含漏洞或者命令注入漏洞,想在目标设备上加载webshell,但不想在目标设备硬盘上留下任何webshell文件信息 解决思路:让目标设备从远端服务器加载webshell代码 ...
- msf stagers开发不完全指北(四): msf 中使用域前置技术隐藏流量
msf 中使用域前置技术隐藏流量 前几篇都是说了下如何采用不同的语言开发 reverse_tcp 第二阶段,接下来将慢慢分析 reverse_http,这篇文章并不会围绕 stagers 进行讲解,这 ...
- MSF魔鬼训练营-3.5.3 MSF中常用的关于数据库的命令
渗透测试数据库用来保存渗透测试过程中获取的各种数据,很多时候你重启了kali发现连接不上数据库了,其实就是因为这个服务没开 MSF所使用的数据库时postgresql root@kali:/# ser ...
- msf中arp_sweep使用报错:usbmon1:ERROR while getting interface flags:no such device
在许多的工具使用中,会出现很多的错误,要养成先思考再去寻找帮助的习惯 在用use命令使用arp_sweep模块的时候爆出错误:usbmon1:ERROR while getting interface ...
- 渗透msf工具中andorid被控端的实现
msf中andoird端的实现代码一共只有8k 核心代码就是下载者. 下载dex,动态执行dex.
- 实战!利用MSF批量扫描校园网中含有MS17_010漏洞的主机并入侵
利用ms17_010的永恒之蓝在前些日子火爆了一段时间,校园网中也声称封锁了相应端口.最近在搞MSF的深入学习,于是有了下文. ms17_010扫描工具 msf中的辅助模块含有一个强大的ms17_01 ...
- 【2】Kali之情报搜集技术
渗透测试中情报搜集需要完成两项重要任务: 1.通过信息搜集工作,确定渗透测试目标范围. 2.通过情报信息搜集,发现渗透测试目标的安全漏洞与脆弱点,为后续的渗透攻击提供基础. 通过DNS和IP地址挖掘目 ...
- 内网渗透中的反弹Shell与端口转发
from:https://www.91ri.org/9367.html Web渗透中的反弹Shell与端口转发 php需未禁用exec函数一:生成php反弹脚本msf > msfpayload ...
- [转]比较 Rational Unified Process (RUP) 和 Microsoft Solutions Framework (MSF)
文档选项 将此页作为电子邮件发送 级别: 初级 Sandra Sergi Santos, 软件工程专家, IBM 2007 年 6 月 15 日 本文来自于 Rational Edge:Micro ...
随机推荐
- ADO.NET ORM数据库增删改查封装(工具一)
约束 public abstract class BaseModel { public int Id { get; set; } } 连接字符串 public static readonly stri ...
- 清新水彩追梦在路上述职报告通用PPT模板
清新漫画风,轻松可爱模版来源: http://ppt.dede58.com/gongzuohuibao/26566.html
- JavaScript中的this绑定丢失及解决方法
经常犯的错误:混淆了this绑定规则. 代码如下: var obj = { id: 'vexekefo', cool() { console.log(this.id); } }; var id = ' ...
- Android框架式编程之EventBus
一.EventBus 简介 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus. 它简化了应用程序内各个组件之间进行通信的复杂 ...
- [JavaScript]父子窗口间参数传递
概述 当页面嵌入一个iframe,或者打开一个子窗口.这个时候如果父窗口需要与子窗口之间通讯,如果直接用DOM访问对方窗口window,会受到跨于安全机制影响. javascript提供一个方法,可以 ...
- MongoDB学习笔记(二、MongoDB查询)
目录: MongoDB数据类型 MongoDB新增语法 MongoDB查询语法 MongoDB查询选择器 MongoDB关联查询 MongoDB数据类型: MongoDB新增语法: 语法:db.col ...
- 房屋布局分析《Physics Inspired Optimization on Semantic Transfer Features: An Alternative Method for Room Layout Estimation》
视觉算法在智能审核系统上的演进与实践 刘天悦 贝壳找房 / 资深工程师 https://static001.geekbang.org/con/56/pdf/1088777747/file/%E8%A7 ...
- 微信小程序图像增强img.superresolution接口
整体流程: 获得access_token 调用img.superresolution得到media_id 根据media_id下载图片 注:虽然以下的几个接口都是服务端API,但是我都是在客户端调用的 ...
- #undef常用法
Copy from C语言中#undef的语法是: #undef 标识符 用来将前面定义的宏标识符取消定义. 整理了如下几种常见用法,如果以后发现其他的再添加进来. 1.在一个程序块中用完宏定义后,为 ...
- Luogu P5298 [PKUWC2018]Minimax
好劲的题目啊,根本没往线段树合并方面去想啊 首先每种权值都有可能出现,因此我们先排个序然后一个一个求概率 由于此时数的值域变成\([1,m]\)(离散以后),我们可以设一个DP:\(f_{x,i}\) ...