主机扫描一般在信息搜集阶段进行,用于了解目标主机上运行的服务以便进一步进行渗透。
用的工具主要是nmap,详细用法自行百度,我就说一下常用的几种组合
1. nmap -sn ip地址(可以是单个ip地址,也可以是一个范围192.168.1.1-192.168.1.20,也可以是用逗号隔开的几个ip, 192.168.1.1,192.168.1.2,也可以是一个网段192.168.1.0/24),用于判断主机是否是在线的
2. nmap -Ss -A -Pn ip地址(规则同上),-Ss表示使用syn扫描,想知道原理的自行百度tcp的三次握手,-A表示要得到详细信息,比如服务的版本号,主机版本号等,-Pn表示不使用ping命令来判断主机是否在线,有些服务器为了安全是不响应ping请求的,有兴趣的可以试试ping一些学校的网站,如果已经知道主机是在线的也可以使用-P0命令来完全跳过主机发现阶段。这个命令是为了找出主机上的服务及其版本。
如果目标不确定的话,比如要扫描一整个网段,一般是先用-sn找出存活的主机,再用第二个找出服务及其版本号,这样可以节省时间,目标确定直接用第二种就好,可以使用-oX把扫描结果以xml格式导出,导出的xml文件可以被metasploit导入使用
漏洞扫描使用专业的漏洞扫描软件进行扫描,kali上建议安装openvas,因为支持性好,是免费的,安装方便(本来想用Nessus的,安了半天没安好,看教程还要破解什么的,好麻烦就放弃了)
这两种扫描严格来说都是要结合数据库来使用的,因为一般情况下扫描出来的数据会很多,除非是自己扫的玩一下,要不然都是要使用数据库的
数据库就使用kali自带的postgresql,首先启动service postgresql start,或者按照上面的方法把它调成自启动。在/usr/share/metasploit-framework/config/database.yml里可以看到数据库的用户名和密码。
不过我建议自己创建一个用户和数据库,方法如下:
su postgres(进入postgresql命令行)
createuser username -P(创建一个带密码的用户)
createdb –owner=msf msf(创建一个数据库msf,数据库的所有者为用户msf)
连接数据库
输入 msfconsole,进入msf命令行,输入db_status查看数据库的状态,正常情况下是未连接的,如果数据库连接密码或者数据库选择错误,状态就会变为已选择未连接,此时就需要先db_disconnect断开连接,然后再进行连接,连接命令为 db_connect db_connect user:password@host:5432/数据库名,连接后db_status就会显示连接成功。(msfdb start/stop可以控制msfconsole数据库服务的开关)
数据库的使用
载入数据库之后可以使用db_import,导入两类扫描的xml文件,或nbe文件,也可以直接在msf里使用db_nmap,这样扫描完之后的数据会直接导入到数据库中,导入之后可以使用hosts查看扫描的主机,使用services查看出来的服务,使用vulns查看扫描发现的漏洞。使用db_autopwn可以根据这些扫描结果自动进行攻击,但是新版的kali里这个工具被移除了,需要自己添加具体操作如下
1. 在msf里随便输入load一个不存在的文件,比如load aaa,由于这个文件不存在,系统会报错,错误信息里有存放被load文件的目录,进入这个目录输入wget https://raw.githubusercontent.com/hahwul/metasploit-db_autopwn/master/db_autopwn.rb
将db_autopwn下载下来,然后进入msf,load db_autopwn即可,输入db_autopwn -h,可查看相关参数,一般使用db_autopwn -e(对所有目标攻击) -t(显示所有匹配的模块) -r(反弹shell) -x(根据漏洞选择攻击模块) -p(根据开发端口选择攻击模块)。
msf里使用openvas
我觉得在web界面使用openvas不直观而且看起来比较low,我更喜欢在msf里使用openvas,首先load openvas,然后连接openvas,openvas_connect admin 123456 127.0.0.1 9390 ok,之后就是openvas_target_create,openvas_task_create,openvas_report_list/download,创建后面就跟create,显示后面就跟list。提示比较详细,更多操作输入openvas后一直按tab就可以了