misc的基本解题思路(一)


misc的四大部分:

  • 文件操作与隐写
  • 图片隐写术
  • 压缩文件处理
  • 流量取证技术

文件操作与隐写

文件类型识别

  1. File命令

    当文件没有后缀名或者有后缀名而无法打开时,根据识别出的文件类型来修改后缀名即可正常打开文件。

    使用场景:不知道后缀名,无法打开文件

    Linux环境下命令格式:file+文件名

  2. winhex

    通过winhex程序中可以查看文件头类型,根据头类型判断文件类型

    使用场景:windows下通过文件头信息判断文件类型

常见的文件头类型如下:

文件类型 文件头
JPEG(jpg) FFD8FFE1
PNG(png) 89504E47
GIF(gif) 47494638
TIFF(tiff) 49492A00
Windows Bitmap(bmp) 424DC001
ZIP Archive(ZIP) 504B0304
RAR Archive(rar) 52617221
Adobe Photshop(psd) 38425053
Rich Text Format(rtf) 7B5C727466
XML(xml) 3C3F786D6C
HTML(html) 68746D6C3E
Adobe Acrobat(pdf) 255044462D312E
Wave(wav) 57415645
pacp 4D3C2B1A
  1. 文件头残缺/错误

    通常文件无法正常打开有两种情况,一种文件头部残缺,另一种头部字段错误。针对文件头部残缺的情况,使用winhex程序添加相应的文件头,针对头部字段错误,可以找一个相同类型的文件进行替换。

    使用场景:文件头部残缺或文件头部字段错误无法打开正常文件

    格式:file 文件名

文件分离操作

  1. Binwalk工具

    Binwalk工具是Linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文件的目录。

    同目录下生成一个形如_文件名_extracted的文件目录,目录中有分离后的文件。

    用法

    分析文件:binwalk filename

    分离文件:binwalk -e filename

    注:binwalk遇到压缩包会自动解压。

  2. formost

    如果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程序对文件进行手动分离

  5. 010Editor

    将某块区域文件保存的方式如下:

    1. 010Editor打开文件 -> 选中右键 -> Selection -> Save Selection

    将16进制字符文件导入保存操作方法如下:

    1. 将16进制字符文件保存在一个文件

    2. 打开010Editor import Hex

    3. 另存为一个文件,后缀名以010Editor获取到它本身文件信息而定

文件合并操作

  1. Linux下的文件合并

    使用场景:Linux下,通常对文件名相似的文件要进行批量合并

    格式:cat 合并的文件 > 输出的文件

    完整性检测:Linux下计算文件md5:

    md5sum 文件名

  2. Windows下的文件合并

    使用场景:Windows下,通常要对文件 名相似的文件进行批量合并

    格式:copy /B 合并的文件 输出的文件命令

    完整性检测:Windows下计算文件md5:

    certutil -hashfiel 文件名 md5

文件内容隐写

文件内容隐写,就是直接将KEY以十六进制的形式写在文件中,通常在文件的开头或结尾部分,分析时通常重点观察文件开头和结尾部分。如果在文件中间部分,通常搜索关键字KEY或者flag来查找隐藏内容。

使用场景:Windows下,搜索隐写的文件内容

  1. winhex/010Editor

    通常将识别的文件拖入winhex中,查找具有关键字或明显与文件不和谐的部分,通常优先观察文件首部和尾部,搜索flag或key等关键字,最后拖动滚轮寻找。

  2. Notepad++

    使用Notepad++打开文件,查看文件头尾是否有含有关键字的字符串,搜索flagkey等关键字,最后拖动滚轮寻找。

    另外通过安装插件HEX-Editor可以实现winhex的功能

图片隐写术

图片隐写的常见隐写方法

  1. 细微的颜色差别

  2. GIF图多帧隐藏

    1. 颜色通道隐藏
    2. 不同帧图信息隐藏
    3. 不同帧对比隐写
  3. Exif信息隐藏

  4. 图片修复

    1. 图片头修复
    2. 图片尾修复
    3. CRC校验修复
    4. 长、宽、高度修复
  5. 最低有效位LSB隐写

  6. 图片加密

    1. Stedetect
    2. outguess
    3. F5

图片文件隐写

  1. Firework

    使用winhex打开文件时会看到文件头部中包含firework的标识,通过firework可以找到隐藏图片。

    使用场景:查看隐写的图片文件

  2. Exif

    Exif按照JPEG的规格在JPEG中插入一些图像/数字相机的信息数据以及缩略图像,可以通过与JPEG兼容的互联浏览器/图片浏览器/图片处理等一些软件来查看Exif格式的图片文件,就跟浏览器通常JPEG图像文件一样。

    图片右键属性,查看Exif或查看详细信息,在相关选项卡中看找flag信息。

    如果是Linux环境下,可以用exiftool工具,命令:exiftool 文件名(带后缀名)

  3. Stegsolve

    当两张图片外观、大小、像素都基本相同时,可以考虑进行结合分析,即将两个文件的像素RGB值进行XOR、ADD、SUB等操作,看能否得到有用的信息,Stegsolve可以方便地进行这些操作。

    使用场景:两张图片信息基本相同

    1. 打开第一张图片,点击analyse -> Image combiner

    2. 在弹出的窗口中点击左右按钮选择处理方式,点击save保存有价值的结果

  4. LSB(最低有效位Least Significant Bit)

    LSB替换隐写基本思想是用嵌入的秘密信息取代载体图像的最低特位,原来的7个高位平面与替代秘密信息的最低位平面组合成含有隐藏信息的新图形。

    1. 像素三原色(RGB)

    2. 通过修改像素中最低位的1bit来达到隐藏的效果

    3. 工具:stegsolve、zsteg、wbstego4、python脚本

    4. Stegsolve.jar工具

      1. 打开文件 -> Analyse -> Data Extract
      2. 调整Bit Plans,Bits Order,Bit Plane Order
    5. zsteg工具

      检测LSB隐写:

      命令:zsteg xxx.png

    6. wbstego4工具

      解密通过1sb加密的图片

    7. python脚本来处理

      将目标文件放在以下脚本目录下,将脚本中的文件名修改为你的目标文件名,运行python脚本即可

      注:要在python2的环境运行。

      #coding:utf-8
      import PIL.Image
      def foo():
          im = PIL.Image.open('01.bmp')  #将'01.bmp'修改为你的目标文件名 
          im2 = im.copy()
          pix = im2.load()
          width,height = im2.size
          
          for x in xrange(0,width):
              for y in xrange(0,height):
                  if pix[x.y]&0x1 == 0:
                      pix[x,y] = 0
                  else:
                      pix[x,y] = 255
          im2.show()
          pass
      if __name__=='__main__':
          foo()
          print 'ok.'
          pass
  5. TTweakPNG

    TweakPNG是一款简单易用的PNG图像浏览工具,它允许查看和修改一些PNG图像文件的元信息存储。

    使用场景:文件头正常却无法打开文件,利用TweakPNG修CRC

    例:

    1. 当PNG文件头正常但无法打开文件,可能是CRC校验出错,可以尝试通过TweakPNG打开PNG,会弹出校验错误的提示,这里显示CRC是fe1a5ab6,正确的是b0a7a9f1。打开winhex搜索fe1a5ab6将其改为b0a7a9f1

    有时CRC没有错误,但是图片的高度或者宽度发生了错误,需要通过CRC计算出正确的高度或者宽度。

    #cooding:utf-8
    import binascii
    import struct
    crcbp = open("xxx.png","rb").read()  # 此处将'xxx.png'改成你的目标文件名
    for i in range(1024):
        for j in range(1024):
            data = crcbp[12:16]+struct.pack('>i',i)+struct.pack('>i',j)+crcbp[24:29]
            crc32 = binascii.crc32(data)&0xffffffff
            if crc32 == 0x08ec7edb:  # 此处填上CRC值
                print i,j
                print "hex".hex(i),hex(j)
  6. Bftools

    bftools用于解密图片信息

    使用场景:在Windows的cmd下,对加密过的图片文件进行解密

    格式:Bftools.exe decode braincopter 要解密的图片名称 -output 输出文件名

    Bftools.exe run 上一步输出的文件

  7. SilentEye

    silenteye是一款可以将文字或者文件隐藏到图片的解密工具。

    使用场景:Windows下打开silentEye工具,对加密的图片进行解密

    例:

    1. 使用silentEye程序打开目标图片,点击image -> decode,点击decode,可以查看隐藏文件,点击保存即可

  8. JPG图像加密

    1. Stegdetect工具探测加密方式

      Stegdetect程序主要用于分析JPEG文件。因此用Stegdetect可以检测到通过JSteg、JPHide、OutGuess、Invisble Secrets、F5、appendx和Camoutflage等这些隐写工具隐藏的信息。

      Linux环境下命令:

      stegdetect xxx,jpg

      stegdetect -s 敏感度 xxx.jpgexi

    2. Jphide

      Jphide是基于最低有效位LSB的JPEG格式图像隐写算法。

      例:

      Stegdetect提示jphide加密时,可以用Jphs工具进行解密,打开jphswin.exe,使用open jpeg打开图片,点击seek,输入密码和确认密码,在弹出文件框中选择要保存的解密文件位置即可,结果保存成txt文件。

    3. Outguess

      Outguess一般用于解密文件信息

      使用场景:Stegdetect识别出来或者题目提示时outguess加密的图片

      格式:outguess -r 要解密的文件名输出结果文件名

    4. F5

      F5一般用于解密文件信息

      使用场景:Stegdetect识别出来是F5加密的图片或题目提示是F5加密的图片

      进入F5-steganography_F5目录,将图片文件拷贝至该目录下,从CMD进入该目录

      格式:Java Exrtact 要解密的文件名 -p 密码

  9. 二维码处理

    1. 使用二维码扫描工具CQR.exe打开图片,找到内容字段
    2. 如果二维码某个定位角被覆盖了,该工具有时候也可以自动识别,如果识别失败,需要使用PS或画图工具将另外几个角的定位符移动到相应的位置,补全二维码。
    3. 如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色回来再扫描即可。

免责声明:本文章涉及的知识和技能仅用于学习研究,如有用于非法途径或未被授权的真实网络环境,所造成的后果自行承担,责任与本文作者无关,倡导把安全知识和技能用于正当、正规、正义的途径。


文章作者: 阿浩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 阿浩 !
评论
  目录