CTF之misc
文件操作与隐写
-
文件类型识别
-
File命令
- 使用场景,不知道后缀名,无法打开文件,修改后缀名即可正常打开
- 格式: file filename
- winhex
- notepad++的一个插件,可以查看文件16进制代码
-
文件头残缺或错误
-
用编辑器补充文件头
-
-
-
文件分离
- Binwalk
- 分析文件:binwalk filename
- 分离文件:binwalk -e filename
- 遇到压缩包自动解压
- foremost
- 用法:foremost 文件名 -o 输出目录名
- 类型会帮你分类
- dd
- 当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离
- 格式: dd if=源文件 of=目标文件名 bs=1 count=3 skip=开始分离的字节数
- bs=bytes #设置读写快的大小为bytes,可代替ibs和obs
- skip=blocks #从输入文件开头跳过blocks个块后再开始复制
- Winhex/010editor直接编辑或复制
- Binwalk
-
文件合并操作
- linux下的文件合并
- 使用场景:linux下,通常对文件名相似的文件要进行批量合并
- 格式: cat 合并的文件 > 输出的文件
- 完整性检测:linux下计算文件md5: md5sum 文件名
- windows下的文件合并
- 使用场景:windows下,通常对文件名相似的文件要进行批量合并
- 格式: copy /B 合并的文件+合并的文件 输出的文件
- 完整性检测:linux下计算文件md5:certutil -hashfile 文件名 md5
- linux下的文件合并
-
文件内容隐写
-
文件内容隐写,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重
点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键字KEY或者flag来查找隐藏内容。
-
图片隐写术
-
考点
- 细微的颜色差别
- GIF多帧隐藏
- 颜色通道隐藏
- 不同帧图信息隐藏
- 不同帧比对隐写
- Exif信息隐藏
- 图片修复
- 图片头修复
- 图片尾修复
- CRC校验修复
- 长、宽、高度修复
- 最低有效位LSB隐写
- 图片加密
- stegdetect
- outguess
- jphide
- F5
-
图片文件隐写工具
- 利用ps,ai,firework,查看gif每一帧
- exif
- 图片右键属性,查看exif或查看详细信息,在相关选项卡中查找flag信息。
- linuxexiftool 图片
- stegsolve
- 当两张jpg图片外观、大小、像素都基本相同时,可以考虑进行结合分析,即将两个文件的像素RGB值进行XOR、ADD、SUB等操作,看能否得到有用的信息,StegSolve 可以方便的进行这些操作。
- 使用场景:两张图片信息基本相同
- LSB工具
- LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低比特位,原来的的7个高位平面与替代秘密信息的最低位平面组合成含隐藏信息的新图形。
- 像素三原色(RGB)
- 通过修改像素中最低位的1bit来达到隐藏的效果
- 工具: stegsolve、 zsteg、 wbstego4、 python脚本
-
stegsolve工具
-
zsteg工具
- 安装 kali# gem install zsteg
- 检测 zsteg xxx.png
- wbstego4工具
- bmp,rle,pdf格式图片,txt,asc,html,xml文件
- 自己编写的python脚本
- TweakPNG
- TweakPNG是--款简单易用的PNG图像浏览工具,它允许查看和修改--些PNG图像文件的元信息存储。
- 使用场景:文件头正常却无法打开文件,利用TweakPNG修改CRC
- 例:1.当PNG文件头正常但无法打开文件,可能是CRC校验出错,可以尝试通过TweakPNG打开PNG,会弹出校验错误的提示,这里显示CRC是fe1a5ab6,正确的 是b0a7a9f1。打开winhex搜索fe1a5ab6将 其改为b0a7a9f1。
- 有时CRC没有错误,但是图片的高度或者宽度发生了错误,需要通过CRC计算出正确的高度或者宽度。
- Bftools
- bftools用于解密图片信息。
- 使用场景:在windows的cmd下,对加密过的图片文件进行解密
- 格式: Bftools.exe decode braincopter要解密的图片名称-output输出文件名
- Bftools.exe run.上-步输出的文件
- SilentEye
- silenteye是一款可以将文字或者文件隐藏到图片的解密工具。
- 使用场景: windows 下打开silentEye.工具,对加密的图片进行解密
- 例:1.使用silentEye程序打开目标图片,点击image- >decode, 点击decode, 可以查看隐藏文件,点击保存即可
- JPG图像加密
- Stegdetect工具探测加密方式
- Stegdetect程序主要用于分析PEG文件。因此用stegdetect 可以检测到通过JSteg、JPHide. OutGuess. Invisible Secrets. F5. appendX和Camouflage等这些隐写工具隐藏的信息。
- stegdetect xxx.jpg
- stegdetect -s 敏感度 xxx.jpgexi
- Jphide
- Jphide是基于最低有效位LSB的JPEG格式图像隐写算法.
- 例:Stegdetect提示jphide加密时,可以用Jphs_工具进行解密,打开jphswin.exe, 使用open jpeg打开图片,点击seek,输入密码和确认密码,在弹出文件框中选择要保存的解密文件位置即可,结果保存成txt文件。
-
Outguess
- outguess-般用于解密文件信息。
- 使用场景: Stegdetect识别 出来或者题目提示是outguess加密的图片
- 该工具需编译使用: ./configure && make && make install
- 格式: outguess-r 要解密的文件名输出结果文件名
-
F5
- F5一般用于解密文件信息。
- 使用场景: Stegdetect识 别出来是F5加密的图片或题目提示是F5加密的图片
- 进入F5-steganography_ _F5目录,将图片文件拷贝至该目录下,从CMD进入该目录
- 格式:Java Exrtact要解密的文件名-p密码
- 运行结束后我们可以直接在目录下的output.txt中看至结果。
- Stegdetect工具探测加密方式
- 二维码处理
- 3.如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色回来再扫描即可。
压缩文件处理
-
伪加密
- 如果压缩文件是加密的,或文件头正常但解压缩错误,首先尝试文件是否为伪加密。zip文件是否加密,是通过标识符来显示的,在每个文件的文件目录字段有一位专门标识了文件是否加密,将其设置为00表示该文件未加密,如果成功解压则表示文件为伪加密,如果解压出错说明文件为真加密。
- 使用场景:伪加密文件
- 操作方法:使用winhex打开压缩文件, 找到文件头第九第十个字符,将其修改为0000。
- 1.使用winhex打开文件搜索16进制504B0102,可以看到每个加密文件的文件头字段。
- 2.从50开始计算,第九第十个字符为加密字段,将其设置为0000即可变成无加密状态。
- 3.RAR文件由于有头部校验,使用伪加密时打开文件会出现报错,使用winhex修改标志位后如报错消失且正常解压缩,说明是伪加密。使用winhex打开RAR文件,找到第24个字节,该字节尾数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密。
-
暴力破解
- 通常我们可以使用ARCHPR.exe工具来破解zip文件
- 使用场景: windows下加密过的zip文件
- 1、攻击类型选择暴力破解,在范围位置根据提示,选择暴力破解范围选项设置暴力破解包含的类型、开始于和结束于选项具体范围,如果没有定义则全范围暴力破解。点击打开选择要破解的文件,点击开始进行破解。建议使用1~9位的数字密码,以及系统自带的英文字典作为密码字典。
- 2、攻击类型选择掩码可以进行复杂的暴力破解,比如知道密码前3位是abc,后3位为数字,则在攻击类型选择掩码,在掩码处输入acb??,暴力范围选项选择所有数字,打开要破解的点击,点击破解。此时? ? ?的部分会被我们选择的暴力破解范围中的字符代替
-
明文攻击
- 明文攻击指知道加密的ZIP中部分文件的明文内容,利用这些内容推测出密钥并解密ZIP文件的攻击方法,相比于暴力破解,这种方法在破解密码较为复杂的压缩包时效率更高。
- 使用场景: 已知加密的zip部分文件明文内容
- 例:假设一个加密的压缩包中有两个文件readme.txt和flag:txt,其中flag txt的内容是我们希望知道的内容,而我们拥有readme.txt的明文文件,使用上述两个文件即可进行明文攻击。
- 操作:
- 1、将readme.txt的明文文件进行压缩,变成readme1.zip。
- 2、打开archpr, 攻击类型选择明文,明文文件路径选择readme1.zip ( 即将明文文件不加密压缩后的文件),加密的文件
- 3、选择要破解的文件,点击开始,破解成功后会获得密码。
- 有时不一 -定能破解出文件口令,但是能够找到加密密钥等信息,可以直接将文件解密,点击确定保存解密后的文件即可
-
RAR文件格式
- RAR文件的头部各个字段会故意给错,导致无法识别文件
流量取证技术
-
介绍
- CTF比赛中,流量包的取证分析是另一项重要的考察方向。通常比赛中会提供一 个包含流量数据的PCAP文件,有时候也会需要选手们先进行修复或重构传输文件后,再进行分析。
- 总体把握
- 协议分级
- 端点统计
- 过滤筛选
- 过滤语法
- Host, Protocol, contains, 特征值
- 发现异常
- 特殊字符串
- 协议某字段
- flag位于服务器中
- 数据提取
- 字符串取
- 文件提取
- 总的来说比赛中的流量分析可以概括为以下三个方向:
- 流量包修复
- 协议分析
- 数据提取
-
WireShark
- 常用的过滤命令:
- 过滤IP, 如源IP或者目标x.x.x.x
- ip.src eq x.x.x.x or ip.dst eq x.x.x.x或者ip.addr eq x.x.x.x
- 过滤端口
- tcp.port eq 80 or udp.port eq 80
- tcp.dstport == 80只 显tcp协议的目标端口为80
- tcp.srcport == 80只 显tcp协议的源端口为80
- tcp.port >= 1 and tcp.port <= 80
- 过滤协议
- tcp/udp/arp/icmp/http/ftp/dns/ip·
- 过滤MAC
- eth.dst == A0:00:00:04:C5:84 过滤目标mac
- 包长度过滤
- udp. length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和。
- tcp.len >= 7指的是ip数据包(tcp下面那块数据),不包括tcp本身
- ip.len == 94 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后
- frame. len == 119整个数据包长度,从eth开始到最后
- http模式过滤
- http.request.method == "GET"
- http.request.method == "POST"
- http.request.url == "/img/1.gif"
- http contains "GET"
- http contains "HTTP/1."
- http.request.method == "GET" && http contains "User-Agent:"
- http contains "flag"
- http contains "key"
- tcp contains "flag'
- 过滤IP, 如源IP或者目标x.x.x.x
- 各种过滤技巧
- 协议分析
- 根据数据包特征筛选
- 流汇聚
- 常见的HTTP流关键内容:
- HTML中直接包含重要信息。
- 上传或下载文件内容,通常包含文件名、hash值等关键信息,常用POST请求上传。
- 一句话木马,POST请求, 内容包含eval, 内容使用base64加密
- 常见的HTTP流关键内容:
- 协议分析
- 数据提取
- 使用vireshark可以自动提取通过http传输的文件内容。
- 手动提取文件内容
- 使用vireshark可以自动提取通过http传输的文件内容。
- 无限流量包跑密码
- aircrack-ng工具进行wif密码破解
- 用aircrack-ng检查cap包:aircrack-ng xxx.cap
- 用aircrack-ng跑字典进行握手包破解:aircrack-ng xxx.cap -w pass.txt
- 用aircrack-ng检查cap包:aircrack-ng xxx.cap
- aircrack-ng工具进行wif密码破解
- USB流量包分析
- usb对应键官网:http://www.usb.org/developers/hidpage/Hut1_12v2.pdf
- Leftover Capture Data 数据提取方式1
- Leftover Capture Data 数据提取方式1
- usb鼠标流量抓取分析
- 通过python脚本提取抓取的数据坐标,再通过gnuplot等工具根据坐标画出来
- 通过python脚本提取抓取的数据坐标,再通过gnuplot等工具根据坐标画出来
- HTTPS流量包文件分析
-
- 常用的过滤命令:
磁盘/内存