CTF学习-MISC杂项解题思路
CTF学习-MISC杂项解题思路
⽂件操作与隐写
⽂件类型识别
1.File命令
当⽂件没有后缀名或者有后缀名⽽⽆法正常打开时,根据识别出的⽂件类型来修改后缀名即可正常打开⽂件。
使⽤场景:不知道后缀名,⽆法打开⽂件。格式: file myheart
2.winhex
通过winhex.程序中可以查看⽂件头类型,根据⽂件头类型判断出⽂件类型
使⽤场景: windows 下通过⽂件头信息判断⽂件类型
3.⽂件头残缺/错误
通常⽂件⽆法正常打开有两种情况,⼀种是⽂件头部残缺, 另⼀种是⽂件头部字段错误。针对⽂件头部残缺的情况,使⽤winhex或者010 Editor程序添加相应的⽂件头,针对头部字段错误,可以⼀个相同类型的⽂件进⾏替换。
使⽤场景:⽂件头部残缺或⽂件头部字段错误⽆法打开正常⽂件。
格式: file ⽂件名
⽂件分离操作
1.Binwalk⼯具
Binwalk是Linux下⽤来分析和分离⽂件的⼯具,可以快速分辨⽂件是否由多个⽂件合并⽽成,并将⽂件进⾏分离。如果分离成功会在⽬标⽂件的⽬录。
同⽬录下⽣成⼀个形如_ ⽂件名_ extracted的⽂件⽬录,⽬录中有分离后的⽂件。
⽤法:
分析⽂件: binwalk filename
分离⽂件: binwalk -e filename
2.foremost
如果binwalk⽆法正确分离出⽂件,可以使⽤foremost,将⽬标⽂件复制到kali中,成功执⾏后,会在⽬标⽂件的⽂件⽬录下⽣成我们设置的⽬录,⽬录中会按⽂件类型分离出⽂件。
⽤法:
foremost ⽂件名 -o 输出⽬录名
3.dd
当⽂件⾃动分离出错或者因为其他原因⽆法⾃动分离时,可以使⽤dd实现⽂件⼿动分离。
格式:
dd if=源⽂件 of=⽬标⽂件名名bs=1 skip=开始分离的字节数
参数说明:
if=file #输⼊⽂件名,缺省为标准输⼊。
of=file #输出⽂件名,缺省为标准输出。
bs=bytes #同时设置读写块的⼤⼩为bytes,可代替ibs和obs。
skip=blocks #从输⼊⽂件开头跳过blocks个块后再开始复制。
4.Winhex
除了使⽤dd外,还可以使⽤winhex实现⽂件⼿动分离,将⽬标⽂件拖⼊winhex中,到要分离的部分,点击复制即可。
使⽤场景: windows 下利⽤winhex程序对⽂件进⾏⼿动分离
例:新建⼀个⽂件,⽂件⼤⼩1byte, 在⽂件开头位置点击粘贴,弹出提⽰框选否、确定,将⽂件保存为想要的后缀即可。
5.010Editor
将某块区域⽂件保存的⽅式如下:
记事本⾥存放的⼆进制⽂件转成⼆进制⽂件
⽂件合并操作
1.Linux下的⽂件合并
使⽤场景: linux 下,通常对⽂件名相似的⽂件要进⾏批量合并
格式: cat 合并的⽂件>输出的⽂件
完整性检测: linux下计算⽂件md5:
md5sum ⽂件名
2.Windows下的⽂件合并
使⽤场景:windows下,通常要对⽂件名相似的⽂件进⾏批量合并
格式: copy/B合并的⽂件输出的⽂件命令
完整性检测: windows 下计算⽂件md5:
certutil -hashfile ⽂件名 md5
⽂件内容隐写
⽂件内容隐写,就是直接将KEY以⼗六进制的形式写在⽂件中,通常在⽂件的开头或结尾部分,分析时通常重点观察⽂件开头和结尾部分。如果在⽂件中间部分,通常搜索关键字KEY或者flag来查隐藏内容。
使⽤场景: windows下, 搜索隐写的⽂件内容
1.Winhex/010Editor
通常将要识别的⽂件拖⼊winhex中,查具有关键字或明显与⽂件内容不和谐的部分,通常优先观察⽂件⾸部和尾部,搜索flag或key等关键字,最后拖动滚轮寻。
2.Notepad++
使⽤notepad++打开⽂件,查看⽂件头尾是否有含有关键字的字符串,搜索flag或key等关键字,最后拖动滚轮寻。
另外通过安装插件HEX-Editor可以实现winhex的功能。
图⽚隐写术
图⽚隐写的常见隐写⽅法
1.细微的颜⾊差别
2.GIF图多帧隐藏
1.颜⾊通道隐藏
2.不同帧图信息隐藏
3.不同帧对⽐隐写
3.Exif信息隐藏
4.图⽚修复
1.图⽚头修
2.图⽚尾修复
3.CRC校验修复
4.长、宽、⾼度修复
5.最低有效位LSB隐写
6.图⽚加密
1.Stegdetect
2.outguess
3.Jphide
4.F5
图⽚⽂件隐写
1.Firework
使⽤winhex打开⽂件时会看到⽂件头部中包含firework的标识,通过firework可以到隐藏图⽚。
使⽤场景:查看隐写的图⽚⽂件
2.Exif
Exijf按照PEG的规格在PEG中插⼊⼀些图像/数字相机的信息数据以及缩略图像可以通过与PEG兼容的互联⽹浏览器/图⽚浏览器/图像处理等⼀些软件来查看Exift格式的图像⽂件就跟浏览通常的PEG图像⽂件⼀样,图⽚右键属性,查看exif或 查看详细信息,在相关选项卡中查flag信息。
3.Stegsolve
当两张jpg图⽚外观、⼤⼩、像素都基本相同时,可以考虑进⾏结合分析,即将两个⽂件的像素RGB值进⾏XOR、ADD、SUB等操作,看能否得到有⽤的信息,StegSolve可以⽅便的进⾏这些操作。
使⽤场景:两张图⽚信息基本相同
4.LSB(最低有效位Least Significant Bit)
LSB替换隐写基本思想是⽤嵌⼊的秘密信息取代载体图像的最低⽐特位,原来的的7个⾼位平⾯与替代秘密信息的最低位平⾯组合成含隐藏信息的新图形。
1.像素三原⾊(RGB)
2.通过修改像素中最低位的1bit来达到隐藏的效果
3.⼯具: stegsolve、 zsteg、 wbstego4、 python脚本
zsteg⼯具
detect stegano-hidden data in PNG & BMР
Installation
root@kali:/# gem install zsteg
检测LSB隐写
zsteg xxx.png
wbstego4⼯具
解密通过1sb加密的图⽚
python脚本来处理
exif信息将以下脚本放在kali中运⾏,将⽬标⽂件放在脚本同⽬录下,将脚本中的⽂件名修改为⽂件名,运⾏python即可
5.TweakPNG
TweakPNG是⼀款简单易⽤的PNG图像浏览⼯具,它允许查看和修改⼀些PNG图像⽂件的元信息存储。使⽤场景:⽂件头正常却⽆法打开⽂件,利⽤TweakPNG修改CRC
例:
1.当PNG⽂件头正常但⽆法打开⽂件,可能是CRC校验出错,可以尝试通过TweakPNG打开PNG,会弹出校验错误的提⽰,这⾥显⽰CRC 是fe1a5ab6,正确的是b0a7a9f1。打开winhex搜索fe1a5ab6将其改为b0a7a9f1。
1. ⽂件头正常却⽆法打开⽂件,利⽤TweakPNG 修改
2. 有时CRC没有错误,但是图⽚的⾼度或者宽度发⽣了错误,需要通过CRC计算出正确的⾼度或者宽度。可以⽤下⾯的py脚本,需要改
⽂件位置和TweakPNG得到的CRC实际值,⽤计算出⾼度,利⽤01Editor修改宽⾼
6. Bftools
bftools⽤于解密图⽚信息。
使⽤场景:在windows的cmd下,对加密过的图⽚⽂件进⾏解密格式:
Bftools .exe decode braincopter要解密的图⽚名称-output输出⽂件名
< run.上⼀步输出的⽂件
silenteye是⼀款可以将 ⽂字或者⽂件隐藏到图⽚的解密⼯具。
使⽤场景: windows' 下打开silentEye⼯具,对加密的图⽚进⾏解密
例:
1.使⽤silentEye程序打开⽬标图⽚,点击image⼀>decode,点击decode,可以查看隐藏⽂件,点击保存即可
2.如果需要密码,勾选encrypteddata,输⼊密码和确认密码,点击decode再解密
8.JPG图像加密
1)Stegdetect⼯具探测加密⽅式
Stegdetect.程序主要⽤于分析PEG⽂件。因此⽤stegdetect 可以检测到通过Steg、JPHide. OutGuess、 Invisible Secrets、F5、appendX和Camouflage等这些隐写⼯具隐藏的信息。
stegdetect xxx.jpg
stegdetect -s 敏感度xx.jpgexi
2)Jphide
Jphide是基于最低有效位LSB的JPEG格式图像隐写算法.例:
Stegdetect提⽰jphide加密时,可以⽤Jphs.⼯具进⾏解密,打开, 使⽤open jpeg打开图⽚,点击seek,输⼊密码和确认密码,在弹出⽂件框中选择要保存的解密⽂件位置即可,结果保存成txt⽂件。
3.Outguess
outguess ⼀般⽤于解密⽂件信息。
使⽤场景:Stegdetect识别出来或者题⽬提⽰是outguess加密的图⽚该⼯具需编译使⽤: ./configure && make && make install
格式: outguess -r 要解密的⽂件名输出结果⽂件名
4.F5
F5⼀般⽤于解密⽂件信息。
使⽤场景: Stegdetect识 别出来是F5加密的图⽚或题⽬提⽰是F5加密的图⽚
进⼊F5-steganography_F5⽬录,将图⽚⽂件拷贝⾄该⽬录下,从CMD进⼊该⽬录
格式: Java Exrtact 要解密的⽂件名 -p 密码
9.⼆维码处理
1.使⽤⼆维码扫描⼯具打开图⽚, 到内容字段
2.如果⼆维码某个定位⾓被覆盖了,该⼯具有时候也可以⾃动识别,如果识别失败,需要使⽤PS或画图⼯具将另外⼏个⾓的定位符移动到相应的位置,补全⼆维码 。
3.如果某个⼆维码的定位点中间是⽩⾊,可能被反⾊了,使⽤画图⼯具把颜⾊反⾊回来再扫描即可。
压缩⽂件处理、分析
分析
压缩⽂件处理、
1.伪加密
如果压缩⽂件是加密的,或⽂件头正常但解压缩错误,⾸先尝试⽂件是否为伪加密。zip⽂件是否加密是通过标识符来显⽰的,在每个⽂件的⽂件⽬录字段有⼀位专门标识了⽂件是否加密,将其设置为00表⽰该⽂件未加密,如果成功解压则表⽰⽂件为伪加密,如果解压出错说明⽂件为真加密。
使⽤场景:伪加密⽂件
操作⽅法:使⽤winhex打开压缩⽂件, 到⽂件头第九第⼗个字符,将其修改为0000。1.使⽤winhex打开⽂件搜索16进制504B0102,可以看到每个加密⽂件的⽂件头字段。
2.从50开始计算,第九第⼗个字符为加密字段,将其设置为0000即可变成⽆加密状态。
3.RAR⽂件由于有头部校验,使⽤伪加密时打开⽂件会出现报错,使⽤winhex修改标志位后如报错消失且正常解压缩,说明是伪加密。使⽤winhex打开RAR⽂件,到第24个字节,该字节尾数为4表⽰加密,0表⽰⽆加密,将尾数改为0即可破解伪加密。
通常我们可以使⽤⼯具来破解zip⽂件
使⽤场景: windows下加密过的zip⽂件1、攻击类型选择暴⼒破解,在范围位置根据提⽰选择暴⼒破解范围选项设置暴⼒破解包含的类型、开始于和结束于选项具体范围,如果没有定义则全范围暴⼒破解。点击打开选择要破解的⽂件,点击开始进⾏破解。建议使⽤1~9位的数字密码,以及系统⾃带的英⽂字典作为密码字典。
2、攻击类型选择掩码可以进⾏复杂的暴⼒破解,⽐如知道密码前3位是abc,后3位为数字,则在攻击类型选择掩码,在掩码处输⼊
acb,暴⼒范围选项选择所有数字,打开要破解的点击,点击破解。此时的部分会被我们选择的暴⼒破解范围中的字符代替。
3.明⽂攻击
明⽂攻击指知道加密的ZIP中部分⽂件的明⽂内容,利⽤这些内容推测出密钥并解密ZIP⽂件的攻击⽅法,相⽐于暴⼒破解,这种⽅法在破解密码较为复杂的压缩包时效率更⾼。
使⽤场景:已知加密的zip部分⽂件明⽂内容
例:假设⼀个加密的压缩包中有两个⽂件和,其中flag txt的内容是我们希望知道的内容,⽽我们拥有的明⽂⽂件,使⽤上述两个⽂件即可进⾏明⽂攻击。操作:1、将的明⽂⽂件进⾏压缩,变成readme1.zip。2、打开archpr, 攻击类型选择明⽂,明⽂⽂件路径选择readme1.zip ( 即将明⽂⽂件不加密压缩后的⽂件),加密的⽂件选择要破解的⽂件,点击开始,破解成功后会获得密码。
有时不⼀定能破解出⽂件⼝令,但是能够到加密密钥等信息,可以直接将⽂件解密,点击确定保存解密后的⽂件即可。
使⽤该⽅法需要注意两个关键点:
1、有⼀个明⽂⽂件,压缩后CRC值与加密压缩包中的⽂件⼀致。
2、明⽂⽂件的压缩算法需要与加密压缩⽂件的压缩算法⼀致。
RAR⽂件格式
有时候给出的RAR⽂件的头部各个字块会故意给错导致⽆法识别。
流量取证技术
流量包⽂件分析
CTF⽐赛中,流量包的取证分析是另⼀项重要的考察⽅向。
通常⽐赛中会提供⼀个包含流量数据的PCAP⽂件,有时候也会需要选⼿们先进⾏修复或重构传输⽂件后,再进⾏分析。总体把握
·协议分级
·端点统计过滤筛选
·过滤语法
·Host,Protocol,contains,特征值发现异常
·特殊字符串
·协议某字段
·flag位于服务器中数据提取
·字符串取
·⽂件提取总的来说⽐赛中的流量分析可以概括为以下三个⽅向:
·流量包修复
·协议分析
·数据提取
WireShark⼯具的基本使⽤
wireshark的过滤器和过滤规则能够帮助我们迅速定位到要分析的报⽂。
常⽤的过滤命令:
1.过滤IP,如源IP或者⽬标
ip.src or ip.dst 或者ip.addr