用户
搜索
  • TA的每日心情
    开心
    2020-10-27 20:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋-呆萌菜鸟

    Rank: 1

    1

    主题

    1

    帖子

    58

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2020-3-15
    发表于 2020-10-27 21:02:39 28898
    本帖最后由 sibomSun 于 2020-10-29 19:33 编辑


    本文原创作者sibomSun,本文属i春秋原创奖励计划,未经许可禁止转载。


    关于内存取证:
         由于网络信息技术的加速发展以及软件漏洞不断出现,网络攻击和网络犯罪频发,造成了严重的网络安全威胁计算机取证是打击计算机与网络犯罪的关键技术,其目的是将犯罪者留在计算机中的攻击痕迹提取出来,作为有效的诉讼证据提供给法庭,以便将犯罪嫌疑人绳之以法
         然而,由于反取证技术、系统运行与内存交换机制等原因,使传统基于文件系统的取证技术难以有效提取相关数字证据,主要体现在3个方面:
         (1) 反取证技术中的数据隐藏、数据转换、数据伪造等技术,更改了原始数字证据,导致取得伪证
         (2) 操作系统内核通常会及时释放内存页面,使暂存于内存或交换页面文件中的相关证据信息在关机后消失,造成事后无证可取.比如,Jason等人的研究表明,为了确保系统的正常运行,Windows系统内核总是试图释放内存页面,多数应用程序内存页面的存留时间少于5分钟
         (3) 内存中通常存放有诸如解密密钥、应用程序口令、恶意代码、进程信息、注册表信息、网络连接、系统状态等敏感数字证据,传统取证方法难以获取,只有通过分析物理内存镜像和页面交换文件的二进制数据才能够获取
         以上事实说明:为了有效而全面地提取与网络攻击或网络犯罪相关的数字证据,需及时、规范地进行内存取证
         内存取证作为计算机取证的重要分支,是指从计算机物理内存和页面交换文件中查找、提取、分析易失性证据,是对传统基于文件系统取证的重要补充当系统处于活动状态时,物理内存中保存着关于系统运行时状态的关键信息,比如解密密钥、口令、打开文件、进程信息、网络连接、系统状态信息等进行内存取证,就是通过获取物理内存和页面交换文件的完整备份并在另一台计算机中进行内存数据分析,重构出原先系统的状态信息因此,内存取证技术研究对于完善计算机取证方法、规范取证流程、提取完整数字证据、洞悉网络攻击机理、快速进行应急响应、遏制打击网络犯罪等方面意义重大



    关于什么是Volatility:
         Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具, 可以用于windows,linux,mac osx,android等系统内存取证他是开源的python脚本。
         以下是使用方法:

    [Shell] 纯文本查看 复制代码
    Usage: Volatility - A memory forensics analysis platform.
    Options:
      -h, --help            list all available options and their default values. Default values may be set in the configuration file(/etc/volatilityrc)
      --conf-file=.volatility                       User based configuration file
      -d, --debug           Debug volatility
      --plugins=PLUGINS     Additional plugin directories to use (semi-colon separated)
      --info                Print information about all registered objects
      --cache-directory=C:\Users\SibomSun/.cache\volatility                Directory where cache files are stored
      --cache               Use caching
      --tz=TZ               Sets the (Olson) timezone for displaying timestamps using pytz (if installed) or tzset
      -f FILENAME, --filename=FILENAME                        Filename to use when opening an image
      --profile=WinXPSP2x86                        Name of the profile to Load (use --info to see a list of supported profiles)
      -l LOCATION, --location=LOCATION                        A URN location from which to load an address space
      -w, --write           Enable write support
      --dtb=DTB             DTB Address
      --output=text         Output in this format (support is module specific, see the Module Output Options below)
      --output-file=OUTPUT_FILE                        Write output in this file
      -v, --verbose         Verbose information
      --shift=SHIFT         Mac KASLR shift address
      -g KDBG, --kdbg=KDBG  Specify a KDBG virtual address (Note: for 64-bit Windows 8 and above this is the address of KdCopyDataBlock)
      --force               Force utilization of suspect profile
      -k KPCR, --kpcr=KPCR  Specify a specific KPCR address
      --cookie=COOKIE       Specify the address of nt!ObHeaderCookie (valid for Windows 10 only)
    
    


    更详细的使用方法,网上大同小异,到处都找得到,这里我放一些比较实用的
    [Shell] 纯文本查看 复制代码
    Volatility -f memory.dmp imageinfo #查询镜像基本信息
    Volatility -f memory.dmp --profile=Win8SP1x86 pstree #查运行进程进程树
    Volatility -f memory.dmp --profile=Win8SP1x86 pslist #查正在运行的进程
    Volatility -f memory.dmp --profile=Win8SP1x86 memdump -p 3144--dump dir=/home/3144.dmp #将PID=3144的进程dump出来
    Volatility -f memory.dmp --profile=Win8SP1x86 procdump -p 3144--dump-dir=/home/3144.dmp #将PID=3144进程导出为exe
    volatility -f memory.dmp --profile=Win8SP1x86 dlldump -p 3144 --dump-dir=/home/3144.dmp #将PID=3144进程所有dll导出
    volatility -f memory.dmp --profile=Win8SP1x86 getsids -p 3144 #查询指定进程的SID
    volatility -f memory.dmp --profile=Win8SP1x86 dlllist-p 3144 #查询指定进程加载过的DLL
    volatility -f memory.dmp --profile=Win8SP1x86 threads -p 3144 #列出当前进程中活跃的线程
    volatility -f memory.dmp --profile=Win8SP1x86 drivermodule #列出目标中驱动加载情况
    volatility -f memory.dmp --profile=Win8SP1x86 iehistory #检索IE浏览器历史记录
    volatility -f memory.dmp --profile=Win8SP1x86 joblinks #检索计划任务
    volatility -f memory.dmp --profile=Win8SP1x86 cmdscan #只能检索命令行历史
    volatility -f memory.dmp --profile=Win8SP1x86 consoles #抓取控制台下执行的命令以及回显数据
    volatility -f memory.dmp --profile=Win8SP1x86 cmdline #列出所有命令行下运行的程序
    volatility -f memory.dmp --profile=Win8SP1x86 connscan #检索已经建立的网络链接
    volatility -f memory.dmp --profile=Win8SP1x86 connections #检索已经建立的网络链接
    volatility -f memory.dmp --profile=Win8SP1x86 netscan #检索所有网络连接情况
    volatility -f memory.dmp --profile=Win8SP1x86 sockscan #TrueCrypt摘要TrueCrypt摘要
    volatility -f memory.dmp --profile=Win8SP1x86 timeliner #尽可能多的发现目标主机痕迹
    volatility -f memory.dmp --profile=Win8SP1x86 hivelist #检索所有注册表蜂巢
    volatility -f memory.dmp --profile=Win8SP1x86 printkey-K "SAM\Domain\Account\Users\Name" #检索注册表中的账号密码,有概率不成功
    volatility -f memory.dmp --profile=Win8SP1x86 hashdump -y system地址 -s SAM地址 #dump目标账号Hash值
    volatility -f memory.dmp --profile=Win8SP1x86 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogin" #检索最后登录的用户
    volatility -f memory.dmp--profile=Win8SP1x86 userassist #查询程序运行次数

    其实,很多针对内存取证的内容都在于注册表,比如printkey参数的-K的内容,都是从注册表搞出来的

    因为用起来很麻烦,又很不舒服(指懒得一次一次输命令),我就用封装成exe的volatility_2.6_win64_standalone为基础编写了一个简易使用的bat脚本。可以极大的提交取证效率。但是由于虽然是简单的bat脚本,我还是花了一些时间去测试和编写,所以不想开源,又想起有大佬能轻易破解,所以干脆,就放一个只加密一次的bat,(其实我梦想着哪次取证大赛的现场能看到有人用我的工具),有能力的大佬自行破解修改(版权卫士)。

    下一步将进行该bat工具的演示:
    演示环境:
    Win7专业版


    先查看当前目录结构,然后在cmd中打开
    1.JPG
    启动bat文件,可查看基本信息
    图片1.png
    此处可将镜像文件拖进黑框
    图片2.png
    file:///C:\Users\SibomSun\AppData\Local\Temp\ksohtml15088\wps3.jpg
    然后进入imageinfo模块,此处是确定该镜像的操作系统类型,若已知可输入N跳过,这里运行的时间会有一丢丢长。
    图片3.png
    结果如下,然后通常选取第一个推荐的类型输入,如果输入错误,后面的步骤会报错,需要重新运行程序来修改该值,当然,可以不重复运行imageinfo,下面是输错之后报错的情况
    图片4.png
    输入推荐的类型(当然这里第一次输错了...)
    图片5.png
    随后进入取证模块,有多种选项可以选择,当然如果直接使用官网下载的vol.py,功能更多,但是那个用起来比较麻烦,不容易上手。
    图片6.png
    经过一波艰难尝试,确定了系统,测试了一个pslist,成功!
    图片7.png
    结果会保存在当前目录下的result.txt文件中,多个结果会互相覆盖。

    用完就会发现,第一步有时会试上好久。
    所以一般就是先使用imageinfo
    [Shell] 纯文本查看 复制代码
    volatility_2.6_win64_standalone.exe -f memory.dmp imageinfo

    然后在使用
    [Shell] 纯文本查看 复制代码
    volatility_2.6_win64_standalone.exe  -f  winxp.raw  --profile=WinXPSP3x86  pslist

    这里替换 --profile=后面的值,它正常解析再使用脚本,imageinfo就可以输入N后直接输入(因为后面这个指令运行速度很快,所以用它)



    相关工具下载连接入口
    链接:https://pan.baidu.com/s/1k5ruNJtwjg3ZNZCtBi7WQw
    提取码:jpbd
    复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V4的分享
    发表于 2020-10-28 14:01:08
    学习了
    使用道具 举报 回复
    就喜欢这种实用的
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册