首先:学习安全技术有一段时间了,从对它的热爱开始,到不断坚持,到现在有一点腻了,感觉自己学不动了。这一路走来,太多的坎坷和辛酸,仰望大佬们,他们始终是天上的星星,渴望而不可及。他们总是我望其项背而不能及的人。这一门技术,很少有人会教你,并且就算是教,其实大佬们也不知道怎么教你,本人建议如果你对它的兴趣不强,我建议你放弃。如果你选择了,一定要坚持,坚持,再坚持。每次想到我的队长,桌子上堆满了药,我才感觉自己有多么的菜和渺小。闲话说道这里。本人需要提振精神,进入主题:
题目:手机热点(蓝牙传输协议obex,数据提取)
题目来源:第七季极客大挑战
考点:蓝牙传输协议obex,数据提取
题目信息:(Blatand_1.pcapng)
根据题目提示,手机共享,那么应该是蓝牙传输,蓝牙传输协议为OBEX,过滤后发现含有一个压缩包
方法一:foremost分离后得到压缩包,解压得到flag.gif
注意:
Foremost可以处理图像文件,例如由dd,Safeback,Encase等生成的图像文件,或直接在驱动器上。页眉和页脚可以由配置文件指定,也可以使用命令行开关指定内置文件类型。这些内置类型查看给定文件格式的数据结构,从而实现更可靠,更快速的恢复。在数字取证中和CTF中常用来恢复、分离文件。它默认支持19种类型文件(jpg, gif, png, bmp, avi, exe, mpg, mp4, wav, riff, wmv, mov, pdf, ole, doc, zip, rar, html, cpp 等文件)的扫描识别恢复,还可以通过(通过配置它的配置文件foremost.conf)增加新的支持类型。
https://github.com/raddyfiy/foremost
另外一种提取文件的工具:
Binwalk
Binwalk是一个自动提取文件系统,该工具最大的优点就是可以自动完成指定文件的扫描,智能发掘潜藏在文件中所有可疑的文件类型及文件系统。相比于之前介绍的file命令行工具来说,file只是从文件的第一个字节开始识别,且只能把一个文件识别成一个类型的文件,很难看出是否隐藏着其他的文件,Binwalk就能很好的完成这项任务。
binwalkgithub项目:https://github.com/ReFirmLabs/binwalk
binwalk的wiki:https://github.com/devttys0/binwalk/wiki
binwalk是一款python编写的工具,目前python2.x和python3.x都较好的支持,不过在Python3.x中运行速度更快。在kali里面已经预装了,在其他发行版linux中安装也很简单,不过在windows上会稍微繁琐一些。
windows下的安装和使用方法可以参考pcat的方法https://www.cnblogs.com/pcat/p/5256288.html。
参考链接:
https://blog.csdn.net/john_david_/article/details/87273698
https://bbs.ichunqiu.com/thread-50369-1-1.html(里面有介绍binwalk)
方法二:选中含secret.rar包,进行如下操作
保存为1.rar,解压后得到flag.gif
题目:想蹭网先解开密码(无线密码破解)
题目来源:bugku
考点:无线密码破解
题目信息:(wifi.cap)
Wifi密码破解原理剖析
参考网站:https://blog.csdn.net/finded/article/details/51899291
下载cap包,WIFI连接认证的重点在WPA的四次握手包,也就是eapol协议的包,过滤一下
注意:在上图中,AP对STA发起了EAPOL认证
这是因为AP选择了WPA2(RSN)-PSK的认证方式。在这种认证方式下,AP和STA把预共享密钥(PSK)当作成对主密钥(PMK),并通过EAPOL协议进行四次握手,生成了成对临时密钥(PTK),用于加密后续通讯内容。
参考网站:https://www.binss.me/blog/notes-of-802.11-protocal/
使用Crunch构建爆破字典:
0×01 使用语法和参数
crunch <min> <max> [options]
参数详解
min 设定最小字符串长度(必选)
max 设定最大字符串长度(必选)
oprions
-b 指定文件输出的大小,避免字典文件过大
-c 指定文件输出的行数,即包含密码的个数
-d 限制相同元素出现的次数
-e 定义停止字符,即到该字符串就停止生成
-f 调用库文件(/etc/share/crunch/charset.lst)
-i 改变输出格式,即aaa,aab -> aaa,baa
-I 通常与-t联合使用,表明该字符为实义字符
-m 通常与-p搭配
-o 将密码保存到指定文件
-p 指定元素以组合的方式进行
-q 读取密码文件,即读取pass.txt
-r 定义重某一字符串重新开始
-s 指定一个开始的字符,即从自己定义的密码xxxx开始
-t 指定密码输出的格式
-u 禁止打印百分比(必须为最后一个选项)
-z 压缩生成的字典文件,支持gzip,bzip2,lzma,7z
特殊字符:
% 代表数字
^ 代表特殊符号
@ 代表小写字母
, 代表大写字符
Crunch是一种创建密码字典工具,按照指定的规则生成密码字典,可以灵活的制定自己的字典文件。使用Crunch工具生成的密码可以输出到屏幕,保存到文件、或另一个程序。由其在渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
参考链接:https://www.jianshu.com/p/a3401b0f3d9a
创建密码字典:
crunch 11 11 -t 1391040%%%% >> wifipass.txt
Linux下的字典生成工具Crunch
利用aircrack-ng 进行爆破
aircrack-ng -w wifipass.txt wifi.cap
得到flag
flag{13910407686}
参考链接: https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/
(*)Wireless Security(无线网络的安全性)
这里主要涉及WEP、WPA、WPA2和RC4、TKIP、AES。
IEEE 802.11 所制定的是技术性标准 ,Wi-Fi 联盟所制定的是商业化标准 , 而 Wi-Fi 所制定的商业化标准基本上也都符合 IEEE 所制定的技术性标准。WEP 是1999年9月通过的 IEEE 802.11 标准的一部分;WPA(Wi-Fi Protected Access) 事实上就是由 Wi-Fi 联盟所制定的安全性标准 , 这个商业化标准存在的目的就是为了要支持 IEEE 802.11i 这个以技术为导向的安全性标准;而 WPA2 其实就是 WPA 的第二个版本。直观点说,WEP是较老的认证方法它有好几个弱点,因此在2003年被WPA淘汰,WPA又在2004年由完整的 IEEE 802.11i 标准(又称为 WPA2)所取代。
WEP(Wired Equivalent Privacy),采用名为RC4的RSA加密技术;WPA(Wi-Fi Protected Access) ,采用新的TKIP算法,TKIP算法保留了RC4所以也有其弱点,但是这个时候更好的CCMP还没完成,所以先在WPA上用TKIP技术;WPA2是WPA的第2个版本,采用CCMP加密协定(在有些路由器等设备上设定加密协定或者加密算法的时候,可能会用类似AES之类的字眼替代CCMP)。所以WPA2+AES是安全性最强的。
另外,在有些无线网路设备的参数中会看到像 WPA-Enterprise / WPA2-Enterprise 以及 WPA-Personal / WPA2-Personal 的字眼 , 其实 WPA-Enterprise / WPA2-Enterprise 就是 WPA / WPA2 ; WPA-Personal / WPA2-Personal 其实就是 WPA-PSK / WPA2-PSK, 也就是以 ”pre-share key” 或 ” passphrase” 的验证 (authentication) 模式来代替 IEEE 802.1X/EAP 的验证模式 ,PSK 模式下不须使用验证服务器 ( 例如 RADIUS Server), 所以特别适合家用或 SOHO 的使用者。
还有,wep是旧的加密方式,工作于802.11B/G模式下而802.11N草案并不支持此加密方式,所以如果802.11N的设备采用wep加密方式后,它也只会工作在802.11b/g模式下,N的性能发挥不出来。
实际中,在有些路由器上面,设置的时候,可能不是严格按照这个规定来设置的(例如设定了采用WPA方式,还可以选择AES),但是大体一样。
参考网站:http://www.dnsdizhi.com/post-177.html
进阶阶段:
题目来源:bugku
考点:数据包筛选,数据提取
题目信息:(misc_fly.pcapng)
首先打开数据包,题目提示了抓到一只苍蝇,试一试搜索苍蝇:
http contains "苍蝇"
发现一些可疑信息,仔细分析一下发现是在发qq邮件,并且还上传了文件
协议过滤
直接在过滤框输入协议名即可。如 http, tcp, udp, ftp 等
http 模式过滤
http.host=="www.baidu.com"
http.uri=="/img/logo-edu.gif"
http.request.method=="GET"
http.request.method=="POST"
http contains "baidu"
过滤规则参考网站:
https://blog.csdn.net/cumirror/article/details/7054496 (这篇让我有种薄云见日的感觉)
https://www.cnblogs.com/imwtr/articles/4356016.html (介绍了较详细的过滤规则,可以当查找工具书)
https://www.zhihu.com/question/36125941 (知乎)
http://www.csna.cn/viewthread.php?tid=14614 (wireshark过滤表达式实例介绍,这些实例可以对照这练习一下)
http://www.voidcn.com/article/p-tqxirjcy-ct.html (语法实例总结,可以当做查看工具包)
http://www.voidcn.com/article/p-bglnxorv-ep.html (有张表,一目了然)
http://www.voidcn.com/article/p-uxpodmtl-bdb.html
https://blog.csdn.net/chenzhisi/article/details/49814769 (Wireshark过滤语句中常用的操作符)
https://blog.csdn.net/wishfly/article/details/73880152 (tcp握手,seq,ack顺序)
http://www.voidcn.com/article/p-vvfcbtla-rk.html (三次握手抓包分析)
既然上传了文件,我们再过滤POST请求试试:
http.request.method==POST
可以看到13号数据包调用函数CreateFile
,然后下面几个可能就是文件内容了,具体是几个,仔细看看URL,738号数据包有个需要调用函数CheckFile
,并且前面的5个数据包url的路径一样,
所以从第一个开始,后5个数据包是flag.rar内容
我们将分组字节流中的原始数据分别保存为1、2、3、4、5,方便操作
但是由于TCP包有文件头,我们需要去掉文件头才能将原始数据合成一个文件,
从第一个数据包可以看出来:
文件大小是525701字节,我们需要的这5个数据包的大小(Media Type中可看到):
131436*4+1777=527521
527521-525701=1820
1820/5=364
tcp包的文件头就为364
然后使用linux的一些工具进行操作即可得到flag.rar
依次把五个文件去掉文件头保存到另一文件
这里使用dd:
dd if=1 bs=1 skip=364 of=1.1
dd命令语法:
if 输入文件名
bs 设置每次读写块的大小为1字节
skip 指定从输入文件开头跳过多少个块后再开始复制
of 输出文件名
然后再用linux的输入流来合并成一个文件:
cat 1.1 2.1 3.1 4.1 5.1 > fly.rar
或者
copy /B 1.1+2.1+3.1+4.1+5.1 fly.rar
#(copy/b)文件无缝拼接隐藏
#参考网站:https://blog.csdn.net/gaoshi66/article/details/83653143
https://www.jianshu.com/p/e85acb8be809
定义
dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
复制文件并对原文件的内容进行转换和格式化处理
参数
- if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
- of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
- ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。- cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
- skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
- seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。- count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
- conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
参考链接:https://jingyan.baidu.com/article/d45ad148e203f969552b800a.html
然后fly.rar又被伪加密了,所以需要将这个文件用HXD打开后,将其中的74 84改为74 80就能打开了
zip伪加密
zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。
注意:
1.对于这种未加密的情况,先查看文件格式
2.然后对其文件的加密标志位进行检查。
使用101 editor进行分析
导入RAR文件的模板。
然后根据rar文件的格式进行对比分析
参考网站:
https://blog.csdn.net/u011377996/article/details/79286958(还可以)
https://bbs.ichunqiu.com/thread-50369-1-1.html(杂项的一些介绍,包括101 editor )
https://www.cnblogs.com/javawebsoa/archive/2013/05/10/3072132.html(rar文件格式说明)
解压得到flag.txt,用HXD打开,显示在win32下运行,
因此改为exe可执行文件后,一堆苍蝇出现了。。。。
使用三种方法提取图片:
1.使用foremost提取图片:
foremost flag.txt
foremost命令
基本格式:foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d][-t] [-s <blocks>][-k] [-b <size>][-c ] [-o <dir>][-i ]
2.使用101 Editor进行手动提取
首先是八个字节的文件头标志,标识着png文件:
8950 4e47 0d0a 1a0a
最后得有个IEND数据块,这部分正如上所说,通常都应该是
00 00 00 00 49 45 4E 44 AE 42 60 82
上面为导出保存为png图片,
3. binwalk
binwalk -e flag.txt
参考网站:https://comydream.github.io/2018/10/05/infosec-img-steganography/
https://blog.mythsman.com/post/5d2d62b4a2005d74040ef7eb/(PNG文件格式详解)
https://blog.mythsman.com/post/5d301940976abc05b345469f/(利用文件头判断类型)
https://www.cnblogs.com/blacksunny/p/7214522.html(binwalk 参数注释)
https://blog.csdn.net/whatday/article/details/53693399(Binwalk固件分析利器)
http://xdxd.love/2015/08/24/%E9%80%86%E5%90%91%E8%B7%AF%E7%94%B1%E5%99%A8%E5%9B%BA%E4%BB%B6%E4%B9%8B%E8%A7%A3%E5%8C%85/(# 逆向路由器固件之解包
)
数据分析题
题目一,二,三,四
题目给了10个流量包,其中只有四个流量包能够分析出有用信息
为了方便,分为题目一二三四对四个流量包进行了分析
题目详情:
题目描述
1.黑客攻击的第一个受害主机的网卡IP地址
2.黑客对URL的哪一个参数实施了SQL注入
3.第一个受害主机网站数据库的表前缀(加上下划线 例如abc_)
4.第一个受害主机网站数据库的名字
5.Joomla后台管理员的密码是多少
6.黑客第一次获得的php木马的密码是什么
7.黑客第二次上传php木马是什么时间
8.第二次上传的木马通过HTTP协议中的哪个头传递数据
9.内网主机的mysql用户名和请求连接的密码hash是多少(用户:密码hash)
10.php代理第一次被使用时最先连接了哪个IP地址
11.黑客第一次获取到当前目录下的文件列表的漏洞利用请求发生在什么时候
12.黑客在内网主机中添加的用户名和密码是多少
13.黑客从内网服务器中下载下来的文件名
第一个数据包:
具体的分析过程,下面的网站写的比较详细:
参考网址:https://www.anquanke.com/post/id/146704#h2-2
第二个数据包:
题目二(2.pcap)
题目来源:2018信息安全铁人三项数据赛
题目要求:
1.黑客第一次获得的php木马的密码是什么
2.黑客第二次上传php木马是什么时间
3.第二次上传的木马通过HTTP协议中的哪个头传递数据
注意:
将保存的值放入HXD中得到源码
这里必须将数据复制在hdx:
不能先写入文件,而是必须打开hax, 在复制进去。
var_dump($j);
**var_dump($x);**
var_dump
var_dump() 函数用于输出变量的相关信息。
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
PHP 版本要求: PHP 4, PHP 5, PHP 7
语法
void var_dump ( mixed ... ] )
参数说明:
$expression: 你要输出的变量。
返回值
没有返回值。
实例
< ?php
>$a = array(1, 2, array("a", "b", "c"));
>var_dump($a);
? >
输出结果为:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
101 edtor
参考网站:https://www.cnblogs.com/17bdw/p/6612210.html(101 edtor破解游戏)
解题网站:
https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/#toc-heading-22
https://blog.csdn.net/Fly_hps/article/details/80217890(详解)
https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/(详看第二节)
第三个数据包
题目三(3.pcap)
题目来源:2018信息安全铁人三项数据赛
题目要求:
1.内网主机的mysql用户名和请求连接的密码hash是多少(用户:密码hash)
2.php代理第一次被使用时最先连接了哪个IP地址
mysql contains "admin"
contains: 意味包含的是info里面的字符串
注意:
根据题解:说第一次它的第一次代理是4.2.2.2。 但是前面有一个get请求,不知道是做什么的,有时间自己在了解下。
第四个包:
题目四(4.pcap)
题目来源:2018信息安全铁人三项数据赛
题目要求:
1.黑客第一次获取到当前目录下的文件列表的漏洞利用请求发生在什么时候
2.黑客在内网主机中添加的用户名和密码是多少
3.黑客从内网服务器中下载下来的文件名
解题1:
心得:
如果出现,成功,第一次触发利用等, 这些词汇,应该去找具有同样特征流量的最后一个
题解2:
1.首先要学会找蛛丝马迹,在这里添加用户,大多都会出现查找操作,如下:
2.在这流量的附近去查找更加细节的内容,这里是要找到添加操作前和操作后的流量包。
可以看出操作前和操作后有区别,多了一个kaka的账户。
接着,我们需要弄清楚它如何设置的密码:
从上面可以看出,都是相应包,我们要找它上传的请求包。
ip.addr == 192.168.2.20 && http
http请求,一般为get型,和post型,从上图中可以看出的是,都是post型,我们打开post数据包,来查找上传的参数:
发现是base64编码,需要解码:
解码后发现添加的密码和用户名是一样的。
题解3:
最后一题既然是下载,应该是利用中国菜刀进行下载了,那我们只过滤出post流量,查看命令即可
ip.dst == 192.168.2.20 && http.request.method==POST
然后我们在数据包的最后发现如下数据
解码:
继续向下查找:
解码得到:
总结:
初步的进行了学习,对一些例子进行了复现,下次进行如下网站的练习:
https://www.freebuf.com/news/166925.html