metasploit 渗透测试笔记(基础篇)
0x00 背景
笔记在kali linux(32bit)环境下完成,涵盖了笔者对于metasploit 框架的认识、理解、学习。
这篇为基础篇,并没有太多技巧性的东西,但还是请大家认真看啦。
如果在阅读中有任何问题都可以与我邮件联系(contact@x0day.me)
0x01 在kali中使用metasploit
在kali中使用metasploit,需要先开启PostgreSQL数据库服务和metasploit服务,然后就可以完整的利用msf数据库查询exploit和记录了。这一点比bt5要方便很多,所以现在就放弃了bt5。
具体命令与截图
service postgresql start
service metasploit start
如果不想每次开机都这样,还可以配置随系统启动。
update-rc.d postgresql enable
update-rc.d metasploit enable
0x02 metasploit目录结构
之所以会讲到这,是因为我认为框架代码是用来学习的一个非常好的来源。并且metasploit是用ruby脚本语言编写,所以阅读起来非常方便。在渗透,exploit编写过程前理解框架的优势以及大致内容则能够快速构建出自己的工具或者找到已知可用的工具。这样不仅有利于得到结果,也提高了效率。
这里只介绍几个目录,也希望读者能把modules下auxiliary的模块大致都看一遍。这样有个印象也便于快速查找。
对于工具的使用,没有会不会的。只是有没有发现而已。目录大概看一遍,这个问题就差不多了吧!
Kali中msf的路径为/usr/share/metasploit-framework
modules
首先看modules目录:
这里
Auxiliary:辅助模块,
encoders:供msfencode编码工具使用,具体可以使用 msfencode –l
exploits:攻击模块
每个介绍msf的文章都会提到那个ms08_067_netapi,它就在这个目录下。
nops:NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90...)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。
payloads:这里面列出的是攻击载荷,也就是攻击成功后执行的代码。比如我们常设置的windows/meterpreter/reverse_tcp就在这个文件夹下。
Post:后渗透阶段模块,在获得meterpreter的shell之后可以使用的攻击代码。比如常用的hashdump、arp_scanner就在这里。
data
其次是data目录:
这里存放的是metasploit的脚本引用文件,重点介绍几个文件
第一个是data下js文件夹下的detect,这里面存放的是metasploit的探针文件。如果看过metasploit浏览器攻击脚本的代码,就会发现调用了一个js库,然后检查当前请求是否符合被攻击环境。如果符合则发送攻击代码,否则中断。Memory中主要是一些堆喷射代码。在大部分浏览器漏洞利用过程,堆喷射是一个不可或缺的过程(当然不是绝对的!)。并且不同的浏览器及版本间,堆喷射代码都有所不同。所以这里给出的探针代码和堆喷射代码是不是一个非常好的学习资源呢? script
最后是msf下script目录中的resource目录:
这里的rc脚本相当于windows下的批处理脚本,在某些情况下会有一定便捷性。比如Veil在生成免杀payload的同时也会生成一个rc脚本,此时使用msfconsole –r xx.rc便可以快速的建立一个和payload对应的handler,亦或在攻过程中需要你反复的set exploit,那么就可以使用这个批处理脚本了,而这个目录下则是一些给定的rc脚本,虽然你可能不习惯这样使用,但作为改写自己的rc脚本的资源也不错。
0x03 metasploit基本命令
列一些其他文章中不常提到的命令或者是我经常碰到或使用的方法。
Msfpayload
这是我最常用的一个命令,用来生成payload或者shellcode。
在不知道payload名称又不想开msfconsole搜索的时候可以用msfpayload –l |grep "windows"这样的命令查询。
-o 选项可以列出payload所需的参数。
msfencode
msf中的编码器,早期为了编码绕过AV,现在我常用msfpayload与它编码exploit的坏字符串。
msfconsole
开启metasploit的console,有个重要的参数 –r,加载resources脚本
数据库有关命令
hosts
这里可以使用hosts查询指定字段的内容,可用的字段下面有列出。或者也可以使用hosts –S "keyword" 进行搜索。
Creds
Creds命令可以列出成功获取到的信息,比如用户名密码,数据库密码,开放端口及服务等。
Console中有关命令
search
搜索一切可以use的模块,常用的方法是search 直接加关键词,比如search 08_067,但是我们也可以根据cve编号查找。通常用nessus扫到的漏洞都有cve信息,这里我们就可以这样搜索了。
spool
将屏幕输出重定向到某个文件中,在使用HTTP弱口令破解、,内网http目录等不会记录在creds中的内容时你怎样解决查询成功结果的?反正这个问题我快要疯了。 要不就改写exploit,不成功不打印,要不就重定向之后自己再grep吧。如果有好的方法,一定要分享啊!
show advanced
在选定一个module(exploit,payload …)之后,使用show advanced命令可以显示关于此module的高级选项,具体内容会在后面"metasploit tricks and tips"中分享。
0x04 攻击示例
同样我还是选择ms08_067这个漏洞,并且随便输入一个ip,演示下最基本的攻击过程(为了让基础篇看起来更完整点)结束基础篇的分享。说明:
从图中也可以看出一次基本的攻击过程大概是这样的:
1. 选择exploit (use exploit/windows/smb/ms08_067_netapi)
2. 选择payload
3. 设置参数 (set RHOST,set LPORT …)
4. 执行攻击
metasploit 渗透测试笔记(基础篇)的更多相关文章
- metasploit 渗透测试笔记(meterpreter篇)
0x01 背景 meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式. 需要说明的是meterpreter在漏洞利用成功后会发送第二阶段的代码和me ...
- metasploit渗透测试笔记(内网渗透篇)
x01 reverse the shell File 通常做法是使用msfpayload生成一个backdoor.exe然后上传到目标机器执行.本地监听即可获得meterpreter shell. r ...
- Metasploit渗透测试魔鬼训练营
首本中文原创Metasploit渗透测试著作,国内信息安全领域布道者和资深Metasploit渗透测试专家领衔撰写,极具权威性.以实践为导向,既详细讲解了Metasploit渗透测试的技术.流程.方法 ...
- 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...
- Metasploit渗透测试
原创博客,转载请注出处! 学习笔记 参考书籍<Metasploit渗透测试指南(修订版)> 经过多日学习,初步掌握metasploit基本参数和使用方法,现进行渗透测试实践 靶机IP:16 ...
- 小猪猪C++笔记基础篇(五)表达式、语句
小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...
- 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助
小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Metasploit渗透测试实验报告
Metasploit渗透测试实验报告
随机推荐
- 陈新宇:CKafka在人脸识别PAAS中的应用
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文首发在云+社区,未经许可,不得转载. 我叫陈新宇,在格灵深瞳负责数据流的研发,首先特别感谢如今老师,他们把Kafka一个优秀的消息中间件 ...
- 如何在CentOS7上安装桌面环境?
1.安装 GNOME-Desktop 安装GNOME桌面环境 # yum -y groups install "GNOME Desktop" 完成安装后,使用如下命令启动桌面 # ...
- 把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像
在上一个part<把AspDotNetCoreMvc程序运行在Docker上-part1>,已经将成功将aspdotnetcore程序运行在两个不同的容器中,目前两个容器的内容完全相同,只 ...
- 帧布局--FrameLayout
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android=" ...
- HTML5--(2)属性选择器+结构性伪类+伪类
一.属性选择器 [att] 匹配所有具有att属性的 [att=val] 匹配所有att属性等于“val”的 [att~=val] 匹配所有att属性包含“val”或者等于“val”的(val必须是一 ...
- 引入第三方js文件,报错
错误:Mixed Content: The page at 'https://localhost:44336/MENU' was loaded over HTTPS, but requested an ...
- Java学习--Java 中的包装类
Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能简 ...
- python(九):迭代器与生成器
一.Python的迭代协议 迭代器是访问集合内元素的一种方式.它只能依次访问集合内元素.其特点是惰性执行. collection.abc的迭代协议提供了两个概念:可迭代对象和迭代器.可迭代对象:必须具 ...
- java ThreadLocal(应用场景及使用方式及原理)
尽管ThreadLocal与并发问题相关,可是很多程序猿只将它作为一种用于"方便传參"的工具,胖哥觉得这或许并非ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的 ...
- 判断有几个checkbox被选中
//判断是否有选中的checkbox的值是否为空 var number = $("input[type='checkbox']:checked").length; if(numbe ...