前言
上周在安恒萌新粉丝群:928102972
分享介绍了binwalk
,今天分享一款同样可以用来文件还原分离的神器。foremost
是一个控制台程序
,用于根据页眉,页脚和内部数据结构恢复文件
。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
)增加新的支持类型。
安装
foremost
在kali linux
已经预装, 网上大部分是linux版本,不过有好心的网友编译出win版本并上传到了GitHub
仓库里,你可以根据README
的提示利用MinGW gcc
去使用源码自行编译也可以直接使用作者编译好的exe文件
。
具体下载地址可以看安恒萌新粉丝群公告:【安恒萌新粉丝の周一福利1.28】
。linux
和macOS
的安装方法看开源仓库README
,已经很详细了。
- 解压缩存档
- 编译
- 安装
1 | LINUX: |
命令详解
1
2
3
4
5
6
7
8
9
10
11
12
13
14c:\> foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d] [-t <type>] [-s <blocks>] [-k <size>]
[-b <size>] [-c <file>] [-o <dir>] [-i <file]
-V - 显示版权信息并退出
-t - 指定文件类型. (-t jpeg,pdf ...)
-d - 打开间接块检测 (针对UNIX文件系统)
-i - 指定输入文件 (默认为标准输入)
-a - 写入所有的文件头部, 不执行错误检测(损坏文件)
-w - 向磁盘写入审计文件,不写入任何检测到的文件
-o - 设置输出目录 (默认为./output)
-c - 设置配置文件 (默认为foremost.conf)
-q - 启用快速模式. 在512字节边界执行搜索.
-Q - 启用安静模式. 禁用输出消息.
-v - 详细模式. 向屏幕上记录所有消息。
注: 未指定输出目录,结果放在foremost
所在目录的output
文件夹内,配置文件为所在目录的foremost.conf
。
简单使用
ctf这类文件分离的题目,大多时候可以使用binwalk
或者winhex
也可以使用dd
命令,这些在前几周也都介绍过,具体可以看公众号往期文章和群文件和公告。可以使用foremost
,相对来说binwalk
更加强大,速度也快,但是有时候如果不能分离出来,就可以试试看foremost
。
这里使用1月新春贺岁赛题目演示,大家可以去周周练下载题目,练习使用喔。
题目给的一张zhu.jpg
的图片:
将图片放在foremost
所在目录下,并输入命令1
λ foremost -i zhu.jpg
在目录下会出现一个output
文件夹,分离出两张图片,相比原图多了一个二维码图片
这里还需要一个隐写,通过使用stogslove
进行色差分析即可拿到flag。
除了文件分离的功能,它还有一个特色功能就是文件恢复,如果误删了一个文件,可以使用1
formost -t 需要恢复文件类型后缀(如jpg) -i 扫描的分区 -o 指定存放文件的目录
注意: 指定存放文件的目录必须为空,不然会报错。
-T 选项让foremost自动根据当前时间戳来生成output目录,这时生成的目录是类似这样的 output_Wed Jan 30 16_01_56 2019
。
foremost
需要扫描整个磁盘或镜像文件来查找可能的文件,这个扫描速度令人堪忧。
不过可以使用-q
来加快扫描速度,但是这个也是有个副作用:foremost
只在每个扇区的开始位置与文件头进行对比,但可能会丢失一些嵌套在其他文件内的文件。
与-q
常连用的是-b number
, 它可以指定磁盘每个扇区的大小,默认是512个字节
。但对于ext4
文件系统来说,这个值一般是4096
。
1
formost -q -b numbe(4096) -t 需要恢复文件类型后缀(如jpg) -i 扫描的分区 -o 指定存放文件的目录
除此之外还有些其他用法,可以和其他工具结合起来,通过脚本完成一些自动化的工作。