文件类型识别
文件类型识别
命令使用场景:不知文件名后缀名
File命令
格式:file xxx(文件名)
常见文件头类型 | 文件头 | 文件尾 |
---|---|---|
JPEG(jpg) | FFD8FFE1 | FF D9 |
PNG(Png) | 89 50 4E 47 0D 0A 1A 0A | 00 00 00 00 49 45 4E 44 AE 42 60 82 |
7IFF(tif) | 49492A00 | |
Windows Bitmap(bmp) | 424DC001 | |
ZIP | 504B0304 | 50 4B |
(psd) | 38425053 | |
rtf | 7B5C727466 | |
XmL | 3C3F786D6C | |
(html) | 68746D6C3E | |
255044462D312E | ||
wav | 57415645 | |
pcap | 4D3C2B1A | |
gif | 47 49 46 38 | 00 3B |
rar | 52 61 72 21 1A 07 00 | C4 3D 7B 00 40 07 00 |
7z | 37 7A BC AF 27 1C |
文件头残缺/错误
使用场景:文件头部残缺或文件名头部
字段错误无法正常打开文件
格式:file文件名 XXX=data
文件分离操作
1.Binwalk工具(会自动解压)
先切换到普通用户
用法:
分析文件:binwalk·filmname
分离文件:binwalk-e file name
2.foremost(目录中会按文件类型分离文件)
用法:
foremost文件名-o输出文件名
3、dd(自动分离出错或者因为其他原因无法分离)
格式:
dd if=源文件of=目标文件名bus/skip
if=five输入文件名,缺省为标
of=file输出文件名,缺省为标准输出
bs=bytes同时设置该写块的下小为bytes可代替its和obs
skip=blocks从输入文件开头跳过blocks个块后开始复制
例子:
1.txt : 1234567890 abcclefg
dd if=1.txt of=2.txt bs=5 count=1
2. txt: 12345
dd if=1. txt of=3. txt bs=5 count=2
3.txt: 1234567890
dd if=ixt of=4. txt bs=5 count=3 ski p=1
4.txt: 67890abcdefg 跳过了前面那个
DECIMAL(十进制) | HEXADECIMAL(十六进制) | |
---|---|---|
0 | 0X0 | JPEG |
22895 | 0X596F | Zip |
23046 | 0X5A06 | End of Zip |
dd if=sim.png of=1111. zip bs=1 count 23064 skip=22895
dd if =flag.jpg of=flag1.jpg bs 1 count 37475 skip =0 文件分离操作
4.010 Editor
1、010 Editor打开文件→选中右键→Selection →Save Selection
将16进制字符文件保存在一个文件
打开oloEditor import Hex
文件合并操作
1. Linux下的文件合并
格式:cat合并的文件>输出的文件
完整性检测:mod 5 sum文件名
2. Windows下的文件合并
格式:copy/B合并的文件输出的文件命令
完整性检测:certutil-hashlie文件名md5
MP3内容隐写
音频波形隐写
音频波形隐写典例:
参考我自己写的博客:ctf misc之MP3隐写_墨言ink的博客-CSDN博客_mp3隐写
用Audacity打开这个mp3
可以选择波谱图
直接点看不到什么东西
结合我之前说的音乐末尾有很违和的音乐,我们拉到末尾放大发现了密码
Stego隐写
1.打开cmd
2.进入工具的目录
cd Desktop\CTF工具包\MP3Stego\MP3Stego
3.使用Stego的命令
Decode -X -P 密码 文件名
Decode -X -P tb89fd9crw2ds 1.mp3
音频隐写莫尔斯密码
例题:buuctf-来首歌吧
用Audacity(mp3隐写)打开
放大后手动打出莫尔斯电码
..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.
解码得到
flag{5BC92H649CB0188FH2EBJ7D70929191C}
文件内容隐写
1.查找隐写
1、Winhex/010 Editor
2、Notepad++ (图片) 查找
2、Exif
图片右键属性查看exir或查看详细信息
3、Google Earth
查看经纬度
图片文件隐写
1. XOR(Stegoolve(两张jpg图片外观、大小、像意相同))
即将两个文件的像景RGB值进行XOR(异或)ADD(叠加)SUB(相减注意谁减谁)
使用方法:打开图片→analyse→Image combiner→选择另外一张图片 →save
2.LSB(最低有效位)
LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的7个高位平面与替代秘密信息的最低位平面组合成隐藏信息的新图形
1、像素三原色(RGB)
2、通过修改像景中最低位的1 bit来达到隐藏效果
3、工具:stegsolve、zsteg、wbstego4(pdf,bmp). Python脚本
Stegsolve (LSB)
1.打开文件>Analvse>Data Extract 2.调整Bit Planes,BitOrder,
Bit Plane Order 3. preview
Bit Planes=000
Zsteg (png,jpg)
检测LSB隐写 : zsteg ×××. png
wbstego 4工具
解密(bmp/pdf的LSB加密)
3.提取图中的盲水印 (需要原图)
BlindWaterMark(盲水印 by python)
python bwm.py decode hui.png hui_with_wm.png wm_from_hui.png
4.图片逆向
例题:GUETCTF-Findme
是一个png文件,寻找他的结尾
发现结尾82后还有D9 FF,拉到最底下还发现了jpg文件头(FFD8FFE1)倒过来的形式
写一个py脚本反转过来试试:
f1 = open('fl4g.png','rb+')
f2 = open('flag_true.jpg','wb+')
f2.write(f1.read()[::-1])
f1.close()
f2.close()
打开flag_true.jpg得到flag
flag{reverse_jpg}
5.图片长宽不够
我们使用winhex进行分析,修改宽度即可得到完整的图片
小知识:前面是固定的文件头。从第二行开始,前四位是宽,后四位是高。
无法正常打开文件
TweakPNG(文件头正常却无法打开文件、利用Tweak PNG修改CRC)
Incorrect crc for IHDR chunk lt is felasabb, should be b0a7a9f1
这显显示CRC是fe1a5ab6正确的是b0a7a9f1打开winhex搜索fe1a5ab6将其改为b0a7a9f1有时CRC无错误,但是图片的高度或宽度发生了错误.需要通过(CRC计算出正确高度或宽度)
用xiugaigao.py计算出原有的长宽和它们的十六进制在Winhex中修改
Bftools(使用场景:在windows的cmd下,对加密过的图片文件进行解密)
格式:Bftool. exe decode braincopter 要解密的图片名称-output输出文件名
Bftools.exe run上一步输出的文件
①D:进入D盘②cd bftools
JPG图像加密
Stegdetect 探测加密方式
stegdetect 程序主要用于分析JPEG文件。因此用Stegdetect可以检测到通过JStep JPHide OutGuess. invisible Secrets. F5, oppopend,和 Camouflage 等
命令:
stegdetect xxx jpgstegdetect-s敏感度(10.0)xxx、jpegxi
Jphide.(解密有密码的jpg)
Jphide是基于最低有效位LSB的JPEG格式图片隐写算法
例:Stegetect提示jphide加密时可以用JPhS工具进行解密,打开jphswin. exe.使用open. jpg打开图片、点击seek输入密码和确认密码在弹出文件框中选择要保存的解密文件位置即可结果保存成txt文件
Outguess(Stedict识别出来或者题目提示是outguess加密文件)
1.可以使用
apt-get install outguess
2.在github上下载
git clone https://github.com/crorvick/outguess
并cd进入该文件夹,用./configure && make && make install 进行安装
outguess
要提取文件,只需执行以下操作:
outguess -k '密码' -r output.jpg(机密数据文件的文件) secret.txt(输出的文件名称)
kali下面输入
outguess -k 'abc' -r mmm.jpg 3.txt
F5
F5用于一般解密文件信息( Stegdetect 识别出来或题目提示为F5)
进入F5- steganography -F5目录,将图片文件拷贝互该目录下,从CMD进入该目录
格式:Java Exrtact要解密的文件名-p 密码
运行结束后我们可以直接在目录下的outout. txt中看到结果
反向
画图
如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色回来再扫描即可
steghide
命令:
steghide info good-已合并.jpg
使用steghide extract -sf good.jpg,空密码即可
steghide extract -sf good.jpg
打开ko.txt得到压缩包密码
bV1g6t5wZDJif^J7
压缩文件分析
伪加密(伪加密文件)
winhex
操作方法:使用winhex打开压缩文件,找到文件头 第九第十个字符,将其修改为0000
1、使用win hex打开文件搜索16进制504B0102 1400后2个字节改为0000
504B0304,1400后两个字节改为0000
360压缩
强大的360可以直接破解伪加密
暴力破解
ARCHPR(暴力破解软件)
使用ARCHPR
1.掩码攻击 若已知密码前3位为abc.后三位未知,则在攻击类型中选择掩码.在掩码处输入 abc???
2.明文攻击(已知加密的zip部分文件明文内容)
明文攻击指知道加密ZIP中部分文件的明文内部容、利用这些内容推测出密钥并解密ZiP文件的攻击方法
过程:一个加密的压缩包有reading. txt和flag.txt其中我们想知道flag.txt中内容,而我们有reading.txt这个明文
操作:
1.将reading. txt的明文文件进行压缩变成readme.zip
2、打开ARCHPR.攻击类型选择明文,明文文件路径选择readmel.zip(即将明文文件不加密压缩后的文件),加密的文件选择要破解的文件点击开始,破解成功后会获得密码
zip2john工具爆破zip文件
1.通过 zip2john 工具输出 zip 文件 hash
命令:
python3 /usr/share/john/zip2john名称>> 转化文本名称
python3 /usr/share/john/zip2john aaabbb.zip >> passwd.txt
2.通过 john 工具进行 zip 文件爆破
john 转化文本名称
john passwd.txt
3.查看爆破的密码
john 转化文本名称 –show
john passwd.txt --show
RAR 压缩密码
首先获取 rar 文件的 hash 值,我们可以使用另一款哈希破解工具 John 提供的 rar2john 工具将 rar 文件里的 hash 提取出来。
1.进入cmd
cd E:\john\john1\John2\run
2.获取 rar 文件 hash
rar2john.exe 1.rar
hashcat 支持 RAR3-hp 和 RAR5
对于 RAR5,示例如下:
hashcat -a 3 -m 13000 --force '$rar5$16$b06f5f2d4c973d6235e1a88b8d5dd594$15$a520dddcc53dd4e3930b8489b013f273$8$733969e5bda903e4' ?d?d?d?d?d?d
对于 RAR3-hp
hashcat -a 3 -m 12500 --force '$RAR3$*0*5ba3dd697a8706fa*919ad1d7a1c42bae4a8d462c8537c9cb' ?d?d?d?d
RAR3-hp 哈希头为 R A R 3 RAR3RAR3*0*,而不是 R A R 3 RAR3RAR3*1*,中间的数值是0(-hp)而不是1(-p),-p 尚未得到支持,只支持 -hp关于 RAR 参数 -p 和 -hp 的区别:
-p:只对 RAR 文件加密,里面的目录和文件名没加密;
-hp:对目录中的文件名和子目录都进行加密处理
office 密码(docx)
和 rar 与 zip 破解过程一样,我们需要先提取 office 文件的哈希值,这里可以使用office2john.py 进行获取, office2john.py在上面下载的 rar2john.exe和zip2john.exe 的同级目录下。
获取 office 文件 hash
python3 /usr/share/john/office2john.py 文件名称 >保存文件位置和名称
python3 /usr/share/john/office2john.py test.doc > /root/hash.txt
测试中发现 python 会出现告警信息,不过这个告警信息不会影响程序执行
hashcat -a 3 -m 9600 '$office$*2013*100000*256*16*cd8856416b1e14305a0e8aa8eba6ce5c*18cada7070f1410f3a836c0dfc4b9643*befcde69afeafb3e652719533c824413b00ce4a499589e5ac5bd7a7a0d3c4f3d' --force ?d?d?d?d?d?d
这里哈希头为 2013 所以使用 9600 破解模式,如果是 2010 则要使用 9500 破解模式,2007 则使用 9400 破解模式。
123456是密码
zip2john工具爆破zip文件
1.通过 zip2john 工具输出 zip 文件 hash命令:
python3 /usr/share/john/zip2john名称>> 转化文本名称
python3 /usr/share/john/zip2john aaabbb.zip >> passwd.txt
2.通过 john 工具进行 zip 文件爆破
john 转化文本名称
john passwd.txt
3.查看爆破的密码
john 转化文本名称 –show
john passwd.txt --show
crc爆破(得到一堆很小的zip压缩包)
利用crack.py这个脚本进行爆破
命令:
python3 crack.py 压缩包名称
得到
流量包文件分析
一句话找到flag
strings /root/xxxx.pcapng |grep flag
Wire Shark过滤器
常用的过滤命令:
1、过滤IP,如源IP或者目标x.x.x.x
ip.src eq x.x.x.x为or ip.dst eq x.x.x.x或者 ip.addr eqx.x.x.x
2、过滤端口
top. port eq 80 or udp. port eq 80
top. dstport==80只显tcp协议的目标端口为80
tcp. srcport==80只显tcp协议的源端口为80
tcp. port>=1 and tcp. port<=80
http横式过滤
http.request.method =="GET"
http.request.method=="POST"
http.request.uri=="/img/logo-edu.gift " http contains "GET"
http contains "HTTP/1."
http.request.method=="GET" &&http contains "User-Agent:"
http contains"flag"
http contains"key" tcp contains"flag"
tcp contains"command"
协议分级
中文版: 统计→协议分级 选中,作为过滤应用>选中
根据数据包特征进行筛选
比如查看数据包时,有的数据包有某种特征比如有http(80)就可以筛选出这种特征出来 右键→作为过滤器应用→选中
WireShark流汇聚
右关注的http数据包或tcp数据包中选择流江县可以将HTTP流或TCP流汇聚或还原成数据在弹出的柜中可以看到数据内容
常见的HTTP流关键内容:
1.HTML中直接包含重要信息。
2.上传或下载文件内容,通常包含文件名、hash值等 关键信息, 常用POST请求上传。
3.一句话木马,POST请求, 内容包含eval, 内容使用base64加密
WireShark数据提取
使用wireshark可以自动提取通过http传输的文件内容。 文件>导出对象> HTTP
在打开的对 象列表中找到有价值的文件,如压缩文件、文本文件、音频文件、图片等,点击saveas进行保存,或者saveall保存所有对 象再进入文件夹进行分析。
例题:buuctf-菜刀666(流量分析)
首先是很常规的套路,用winshark打开,搜索flag,发现有个txt文件藏在里面
1.根据提示,打开直接过滤POST请求,发现可疑点。
2.右键跟踪流
发现两个疑点。 3.可能是base64,先将z1转换
出来图片字样,并且z2开头是jpg文件的文件头FFD8DDE猜测下面z2应该是十六进制转图片。 用py脚本转换出来后,一张图片。
python脚本代码:
a="十六进制"
import binascii
out=open('2.jpg','wb')
out.write(binascii.unhexlify(a))
out.close()
得到一个密码:
Th1s_1s_p4sswd_!!!
无限流量包跑密码
无线wif流量包
aircrack-ng工具进行wifi密码破解
1.用aircrack ng检查cap包: aircrack-ng xxx.cap
2.用aircrack-ng跑字典进行握手包破解: aircrack-ng xxx.cap -w pass.txt
例题:bugkuctf-想蹭网先解开密码
flag格式:flag{你破解的WiFi密码} tips:密码为手机号,为了不为难你,大佬特地让我悄悄地把前七位告诉你 1391040** Goodluck!! 作者@NewBee
这个应该是破解WiFi过程中,抓取的流量包
用Wireshark打开了这个文件包
2、打开kali,开始破解咯
①、第一步:使用crunch生成密码字典,注意是手机号,所以是11位,前8位已知,后四位用%%%%替代,把生成的字典导入到wifipassword.txt文本里面,如下图所示:
crunch 11 11 -t 1391040%%%%>>wifipassword.txt
②、第二步:使用aircrack-ng破解wifi密码 //前提把wifi.cap放到当前目录下,也就是与wifipassword.txt字典在同一个目录下(毕竟用的相对路径嘛)
aircrack-ng -w wifipassword.txt wifi.cap
注意,根据提示还要再键入3,如下图所示:
执行命令,开始破解
USB键盘流量抓取分析
USB数据包,直接使用UsbKeyboardDataHacker脚本提取内容
命令:
python3 UsbKeyboardDataHacker.py 数据包名称
例题:buuctf-USB
使用010 Editor打开key.ftm,搜索关键词key,有很多key的关键词,但在其中发现zip数据
将zip数据另存出来,里面是一个key.pcap,直接可以解压,或者使用WinRAR直接打开key.ftm,直接可以得到key.pcap
USB数据包,直接使用UsbKeyboardDataHacker脚本提取内容
命令:
python3 UsbKeyboardDataHacker.py 数据包名称
python3 UsbKeyboardDataHacker.py key.pcap
后续略~~~~