I、背景
取证技术,尤其是计算机数据取证技术,是一种针对信息犯罪和计算机数据的专业取证技术。它旨在帮助学习者理解电子证据及其形成过程,并掌握计算机数据相关的取证技术。
具体来说,计算机取证是对计算机犯罪证据的识别获取、传输、保存、分析和提交认证的过程。犯罪人员可能将敏感信息隐藏于各种各样的计算机存储文件中,做到传输隐蔽性。所以作为网络安全的一部分,计算机取证技术也是CTF比赛中常见的题型,用于检测取证人员对信息收集,以及敏感信息提取的技术。
接下来,我们来分享一下CTF中常见的取证题型,主要包括网络、键盘输入、USB传输、无线WIFI等流量取证,也包括基本的图片、系统文件、zip文件等基本存储文件的敏感信息取证。
II、CTF取证技术的基本原理
出题人员通过网络抓包工具对网络数据包捕获得到原始文件,以及系统的元数据、文件和文件系统元数据这些原始文件的获取。解题人员在比赛中,从以上的原始文件中通过对原始文件的分析获得敏感信息,过程中可能涉及多种复杂的技术挑战,例如文件格式分析、隐写术、内存转储分析和网络数据包分析等等。
在现实生活中,计算机取证技术非常有用,除了对可疑流量的分析,也包括对系统安全的审计工作,可以保护我们的系统运行,避免关键信息被窃取。以内存取证为例,它是计算机系统的内存中进行取证分析的方法,其目标是获取关于计算机系统当前状态的信息。通过内存取证,可以分析计算机系统上运行的进程、网络连接、文件、注册表等信息,这对于检测和分析恶意软件等计算机威胁十分有用。
其实计算机取证,对人员的细心程度有一定的要求,在取证的过程中要对信息充分的分析,确保证据的真实性合法性,避免对信息的误判和漏判。
III、CTF中常见的取证技术实战
3.1、gif图片分离取证
gif图像交换格式,适合较简单的图像,动图,每一帧动态变化都是一张图片
gif图片隐藏信息原理:利用gif的某张具体图片隐藏具体信息,加快gif播放速度使得肉眼无法识别flag值。
思路:分离gif文件中的图片
方法: 在linux 中或kali中使用convert命令对gif文件进行分离
命令1:convert 文件名.gif %02d.png 解释:该命令会将gif动图,分离成原来的一张一张静态图linux中查看图片
命令2:eog *.png 解释:该命令可以查看当前目录下所有的png图片
3.2、gif图片组合取证
gif图片组合场景:flag(通常是手写)被拆分为很小的一部分,比如一横一划,这样的单个图片,通过gif播放,我们只看到出现很多无规律的无法识别的图形。
思路:现将gif分离成单独一张一张的png图片,然后再将png图片组合(注意:组合的时候需要去除没一张图片的白色背景,不然无法看见组合之后的图形)
如题:
步骤1:gif进行分离得到如下,得到大量的图片
每一张图片全是黑点,无法知道具体内容
思考:可能每个黑点是flag的某一个点,考虑尝试将这些图片进行叠加组合,看是否能够组成一些有用的数据
步骤二:图片组合,图片要能叠加组合,需要移除背景白色,图片变透明,便于组合之后看出每张图片具体内容
ls *.png | while read filename; do convert $filename -transparent white $filename; done;
步骤三:合并图片,得到结果
ls *.png | while read filename; do convert $filename 00.png - gravity center -composite 00.ong; done
3.3、系统文件取证
场景:我们获取一个文件,该文件通过file命令查看,发现是filesystem类型,说明该文件是系统文件
思路:系统文件需要进行挂载到linux才能查看
3.4、JPG的Magic header 修改
场景:通常该文件是无法打开的,强行打开是无法查看文件的,但是我们知道这个该文件是一个JPG文件,知道其是JPG文件通过010Editor查看到魔法数值(类比猜想)得知。
Magic Header: 在JPG中具有父爱解释含义的谓一致,用于识别文件格式或协议的常数值或文本值;CTF中通常是JPG文件头(JPEG (jpg) 文件头:FF D8 FF 文件尾:FF D9)
3.5、分离PCAP文件图片提取
场景:通过wireshark打开PCAP文件,我们同时也找到具体的信息(jpg图片),但是我们通过Wireshark无法正确导出jpg图片
思路:如果wireshark无法直接导出jpg图片,考虑使用binwalk命令分离
步骤1、通过流跟踪发现,请求了图片
发现了:JFIF头,说明请求了jpg图片
WireShark导出文件 file -> Export Objects -> http
但是导出的jpg不正确
步骤二:使用binwalk进行分离,命令:binwalk xxx.pcap 我们可以看到pcap中包含的文件数
通过这一步,我们可以看到pacp中的图片
第三步:分离pcap中的图片, formost xxx.pcap
就可以将pcap中的图片进行分离
3.6、从PCAP文件中提取敏感信息
场景:对于PCAP文件较大,使用wireshark分析较为复杂
思路:直接使用strings命令直接查找关键字 (flag、password、key、pwd、username)
对于较小的文件可以使用wireshark打开
或者通过Linux 的 strings 对较大的pcap文件进行关键字查找
命令: strings xx.pcap | grep -i “关键字”
3.7、提取USB键位信息
场景:我们的键盘和鼠标均是通过USB接口与主机相连,我们每按下一个按键或点击鼠标,均会产生对应的键码。如果我们采用抓包工具就会将这个键码抓取,形成USB流量包
思路:采用USB分析策略
第一步:读取pcap文件,提取USB内容。 URB_INTERRUPT in : 表示为键盘USB信息
第二步:分离usb.capdata , Leftover Capture Data
利用Kali中的 tshark 进行分离
tshark -r usb xxx.pcap -T fields -e usb.capdata
就会提取出来所有的usb信息
第三步:然后将这些键位信息赋值出来,存放到data1.txt文件中,通过脚本进行解码
3.8、使用binwalk提取敏感信息
第一步:通过file命令查看文件类型
第二步:使用binwalk 获取文件的隐藏内容
命令:binwalk -e 文件名
3.9、提取系统文件敏感信息
如果是系统文件,思路,就是将文件进行挂载 mount命令
ls -lah 这个命令可以查看linux的隐藏文件
3.10、提取损坏的zip压缩包中的敏感信息
修复zip文件提取敏感信息
第一步:file获取文件类型,如果是zip文件使用unzip进行解压,如果是gz,使用gunzip进行解压
第二步:使用010Editor对接口进行修复,zip压缩包的头(50 4B 03 04)
3.11 无线包流量分析
第一步:通过wireshark,查看pcap文件
通过protocol,我们发现该流量包的协议是802.11,说明该流量包是无线wifi协议
第二步:然后我们通过wireshark的协议分析功能,发现只有wireless LAN 协议,判断肯能是WPA或者WEP加密的无线数据包
第三步:通过aircrack-ng工具进行wifi密码破解
首先、使用aircrack-ng就可以找到WIFI的类型,命令:aircrack-ng xxx.cap
然后、用字典去跑wifi的密码,命令aircrack-ng xxx.cap -w pass.txt
注意:这个pass.txt就是破解wifi密码的常用字典
3.12、通过wireshark提取数据
第一步:通过wireshark查看文件,我们得知整个流量包是一个视频流量包,接下来我们考虑如何将视频从流量包中进行分离
如果是通过流量包做了文件上传/下载,我们只需要关注类型为HTTP流中最大的
3.13直接通过wireshark进行关键字搜索
例如:http contains “flag”
http contains “key”
tcp contains “key”
当然还有其他更加复杂的取证技术,包括但不限于如下题目
3.14 内存取证技术
内存取证技术主要用于分析恶意软件的行为。常用的内存取证技术包括内存镜像分析、进程快照分析、注册表分析等。内存取证通常用于分析计算机系统上运行的进程、网络连接、文件、注册表等信息,并可以用于检测和分析恶意软件、网络攻击和其他安全事件。
内存取证技术
3.15 数据库取证技术
据库取证技术主要用于分析数据库中存储的信息。常用的数据库取证技术包括SQL注入分析、数据库备份恢复分析、数据库日志分析等。
3.16 web日志取证
可能结合SQL注入攻击相关日志进行分析
日志流量分析
||||、总结
取证技术在我们安全工作中非常重要,我们可以通过已经产生的流量、日志、文件等信息发现安全存在的蛛丝马迹。通过取证技术的应用,安全工作者可以明确系统存在的漏洞,以及都是谁在系统中做了什么事,其价值和意义对个人、企业、国家而言都是非常重要的。
今天我们总体分析了CTF中的取证技术,以及使用CTF各种提醒对取证技术进行了演示,则写内容可以应对大部分的CTF的取证提醒,当然取证一般不会单独出现,它一般会配合其他知识点进行出题,比如配合密码学、配合隐写、配合PWN等技术出现,具体还是要参考CTF等级以及对应题目的难易程度而定。