• CTF取证技术实战,图片、文件、流等相关内容的取证技术


    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;
    将每张png图片的白色背景去除
    步骤三:合并图片,得到结果
    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、通过流跟踪发现,请求了图片
    通过wireshark进行流跟踪
    发现了:JFIF头,说明请求了jpg图片
    WireShark导出文件 file -> Export Objects -> http
    但是导出的jpg不正确
    步骤二:使用binwalk进行分离,命令:binwalk xxx.pcap 我们可以看到pcap中包含的文件数
    binwalk查看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信息
    原始流量包通过wireshark查看
    第二步:分离usb.capdata , Leftover Capture Data
    利用Kali中的 tshark 进行分离
    tshark -r usb xxx.pcap -T fields -e usb.capdata
    就会提取出来所有的usb信息
    在这里插入图片描述
    第三步:然后将这些键位信息赋值出来,存放到data1.txt文件中,通过脚本进行解码
    解码usb键位信息的脚本

    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等级以及对应题目的难易程度而定。

  • 相关阅读:
    从海后丢掉“海后”这个角色说起—— 论VOC对于DTC品牌的重要性
    【Java 实战】通过Redis实现购物车功能
    《Python 自动化办公应用大全》书籍推荐(包邮送书五本)
    2042. 检查句子中的数字是否递增-力扣双百代码-设置前置数据
    python多进程中常用方法用法详解
    RP-母版 流程图 发布和预览 团队项目
    [附源码]java毕业设计高校创新创业项目管理系统
    windows 定制 terminal 上手实践
    js连接mysql的使用方法
    linux安装nginx
  • 原文地址:https://blog.csdn.net/Scalzdp/article/details/133985508