女人下边被舔全过视频软件,美丽的姑娘免费观看在线播放,久久人人爽爽人人爽人人片av,麻豆精产国品,久久久久久夜精品精品免费啦

內(nèi)存鏡像取證分析

內(nèi)存鏡像取證分析(干貨 筆者不喜歡花里胡哨)

 

前言

網(wǎng)絡(luò)攻擊內(nèi)存化和網(wǎng)絡(luò)犯罪隱遁化,使部分關(guān)鍵數(shù)字證據(jù)只存在于物理內(nèi)存或暫存于頁面交換文件中,這使得傳統(tǒng)的基于文件系統(tǒng)的計(jì)算機(jī)取證不能有效應(yīng)對(duì).內(nèi)存取證作為傳統(tǒng)文件系統(tǒng)取證的重要補(bǔ)充,是計(jì)算機(jī)取證科學(xué)的重要組成部分,通過全面獲取內(nèi)存數(shù)據(jù)、詳盡分析內(nèi)存數(shù)據(jù),并在此基礎(chǔ)上提取與網(wǎng)絡(luò)攻擊或網(wǎng)絡(luò)犯罪相關(guān)的數(shù)字證據(jù),近年來,內(nèi)存取證已贏得安全社區(qū)的持續(xù)關(guān)注,獲得了長足的發(fā)展與廣泛應(yīng)用,在網(wǎng)絡(luò)應(yīng)急響應(yīng)和網(wǎng)絡(luò)犯罪調(diào)查中發(fā)揮著不可替代的作用.首先回顧了內(nèi)存取證研究的起源和發(fā)展演化過程;其次介紹了操作系統(tǒng)內(nèi)存管理關(guān)鍵機(jī)制;然后探討了內(nèi)存取證的數(shù)據(jù)獲取和分析方法,歸納總結(jié)目前內(nèi)存取證研究的較新技術(shù);較后討論了內(nèi)存取證存在的問題、發(fā)展趨勢和進(jìn)一步的研究方向.?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?——《內(nèi)存取證研究與進(jìn)展[J].軟件學(xué)報(bào),2015, 26(5): 1151-1172》

  1. 內(nèi)存鏡像取證分析流程
    1. 鏡像內(nèi)存數(shù)據(jù),保存至文件
      1. Windows推薦:Dumpit(這個(gè)是真的快,高效率)
      2. Linux推薦:linpmem_2.0.1(Github里google的rekall工具)
    2. 分析鏡像文件
      1. 網(wǎng)絡(luò)連接狀態(tài)
        1. 分析本地開放的端口
        2. 分析遠(yuǎn)程連接端口
      2. 用戶登錄情況
        1. 獲取系統(tǒng)當(dāng)前用戶列表
        2. 讀取用戶的Hash值
      3. 當(dāng)前系統(tǒng)進(jìn)程
        1. 分析第三方進(jìn)程(不知名程序、非系統(tǒng)程序,占高內(nèi)存、高CPU的程序)
        2. 通過網(wǎng)絡(luò)狀態(tài),分析pid的程序
        3. 惡意代碼分析(兄弟們這個(gè)就難倒我了,相關(guān)只是拋磚引玉)
      4. 當(dāng)前注冊(cè)表狀態(tài)
  2. 取證與分析工具(下載鏈接在文章結(jié)尾)
    1. 取證工具:
      1. Windows推薦:Dumpit
      2. Linux推薦:lime
      3. Mac推薦:osxpmem_2.0.1
    2. 分析工具:
      1. volatility(力鼎這個(gè)軟件,開源牛逼)
      2. redline(商業(yè),筆者窮?。?/li>
  3. 養(yǎng)兵千日用兵一時(shí)(教科書流程)
    1. 制作內(nèi)存鏡像
      1. Windows
        1. 環(huán)境win7,直接雙擊運(yùn)行,或者cmd里也一樣。(注意:管理員權(quán)限)【環(huán)境樣本已經(jīng)打包,有彩蛋】
內(nèi)存鏡像取證分析插圖

程序效率很高(筆者測試是10秒以內(nèi)),文件大小是與內(nèi)存一比一

內(nèi)存鏡像取證分析插圖1
  • win10 (因?yàn)樘摂M機(jī)還有兩個(gè)2G的內(nèi)存),計(jì)時(shí):2分18秒左右,共18GB。這個(gè)寫的速度也看硬盤和cpu的
內(nèi)存鏡像取證分析插圖2
  • Linux
    1. gunzip 解壓,完了以后加個(gè)執(zhí)行權(quán)限(chmod +x 軟件名)【環(huán)境樣本已經(jīng)打包,有彩蛋】
      1. https://tunnelix.com/linux-memory-analysis-with-lime-and-volatility/
內(nèi)存鏡像取證分析插圖3

Linux的鏡像文件還是比較小的

內(nèi)存鏡像取證分析插圖4

無法用于Volatilty分析,linpmem生成的文件是無法用于Volatility分析。因?yàn)楦F筆測試Centos時(shí)候發(fā)現(xiàn)很多問題。網(wǎng)上都是給出Ubuntu的demo比較多,大家可以試試,

  • 窮筆在這親測Lime工具非常Nice(內(nèi)存鏡像生成工具)。
    1. 環(huán)境:
      1. 系統(tǒng):CentOS release 6.5 (Final) | 內(nèi)核:Linux 2.6.32-431.el6.x86_64
        1. 【警告:這里有個(gè)嚴(yán)重錯(cuò)誤認(rèn)知提示下,當(dāng)前系統(tǒng)雖然是6.5,但是在因?yàn)镃entos6.5已經(jīng)停止維護(hù)了,所以當(dāng)centos通過yum安裝包的時(shí)候自動(dòng)會(huì)升級(jí)到6.10,也就是實(shí)戰(zhàn)環(huán)節(jié)的環(huán)境。同理此時(shí)我們安裝的內(nèi)核包是內(nèi)核升級(jí)包,而不是對(duì)應(yīng)的lib依賴包。那如何安裝6.5的依賴包呢?利用CD光驅(qū)。去下載centos6.5的鏡像,然后掛載。通過本地CD里的源安裝包即可】
        2. CentOS-6.5-x86_64-bin-DVD1.iso
        3. CentOS-6.5-x86_64-bin-DVD2.iso
      2. 實(shí)際系統(tǒng):CentOS release 6.10 (Final) | 內(nèi)核:Linux 2.6.32-754.28.1.el6.x86_64
    2. 需要依賴安裝:

yum install -y kernel kernel-headers kernel-devel kernel-firmware && yum update

  • 解壓Lime的源碼包,進(jìn)入src目錄。練習(xí)創(chuàng)建demo.ko,lime-2.6.32-754.28.1.el6.x86_64.ko,利用ko文件dump內(nèi)存to文件
[root@localhost src]# make
make -C /lib/modules/2.6.32-754.28.1.el6.x86_64/build M="/root/src" modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
  CC [M]  /root/src/tcp.o
/bin/sh: perl: command not found
make[2]: *** [/root/src/tcp.o] Error 127
make[1]: *** [_module_/root/src] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
make: *** [default] Error 2
# ls
deflate.c  hash.c  main.c    Makefile.sample  tcp.o
disk.c     lime.h  Makefile  tcp.c
# yum install perl -y
………………(省略)
Complete!
# make
make -C /lib/modules/2.6.32-754.28.1.el6.x86_64/build M="/root/src" modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
  CC [M]  /root/src/tcp.o
  CC [M]  /root/src/disk.o
  CC [M]  /root/src/main.o
  CC [M]  /root/src/hash.o
  CC [M]  /root/src/deflate.o
  LD [M]  /root/src/lime.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/src/lime.mod.o
  LD [M]  /root/src/lime.ko.unsigned
  NO SIGN [M] /root/src/lime.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
strip --strip-unneeded lime.ko
mv lime.ko lime-2.6.32-754.28.1.el6.x86_64.ko
# ls
deflate.c  hash.o                              lime.mod.o  Makefile.sample
deflate.o  lime-2.6.32-754.28.1.el6.x86_64.ko  lime.o      modules.order
disk.c     lime.h                              main.c      Module.symvers
disk.o     lime.ko.unsigned                    main.o      tcp.c
hash.c     lime.mod.c                          Makefile    tcp.o
# insmod lime-2.6.32-754.28.1.el6.x86_64.ko "path=/centos65x64.mem format=lime"
(此處省略10分鐘左右,因?yàn)樘摂M機(jī)的內(nèi)存是2G,這跟你的硬盤和內(nèi)存條性能有關(guān))

# du -hl /centos65x64.mem 2.0G /centos65x64.mem

  • profile文件生成:
    1. 環(huán)境
      1. 系統(tǒng):CentOS release 6.10 (Final) | 內(nèi)核:Linux 2.6.32-754.28.1.el6.x86_64
    2. 通過volatility源碼tools代碼,編譯profile的模塊,較后成功生成“module.dwarf”文件【提示:make命令報(bào)錯(cuò),可能是dwarfdump文件不存在。參考文章結(jié)尾,筆者花了七天搞清所有依賴關(guān)系,有問題請(qǐng)聯(lián)系筆者給你建議,少走彎路,水太深?!?/li>

[root@localhost ~]# tar xf volatility-2.6.1.tar.gz

# cd volatility-2.6.1

# cd tools/linux/

# ls kcore Makefile Makefile.enterprise module.c

# make
make -C //lib/modules/2.6.32-754.28.1.el6.x86_64/build CONFIG_DEBUG_INFO=y M="/root/volatility-2.6.1/tools/linux" modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
  CC [M]  /root/volatility-2.6.1/tools/linux/module.o
/root/volatility-2.6.1/tools/linux/module.c:193:1: warning: "RADIX_TREE_MAX_TAGS" redefined
In file included from include/linux/fs.h:421,
                 from /root/volatility-2.6.1/tools/linux/module.c:10:
include/linux/radix-tree.h:62:1: warning: this is the location of the previous definition
/bin/sh: perl: command not found
make[2]: *** [/root/volatility-2.6.1/tools/linux/module.o] Error 127
make[1]: *** [_module_/root/volatility-2.6.1/tools/linux] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
make: *** [dwarf] Error 2

# yum install perl -y

(此處省略) Complete!

# ls kcore Makefile Makefile.enterprise module.c module.o

# make
make -C //lib/modules/2.6.32-754.28.1.el6.x86_64/build CONFIG_DEBUG_INFO=y M="/root/volatility-2.6.1/tools/linux" modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
  CC [M]  /root/volatility-2.6.1/tools/linux/module.o
/root/volatility-2.6.1/tools/linux/module.c:193:1: warning: "RADIX_TREE_MAX_TAGS" redefined
In file included from include/linux/fs.h:421,
                 from /root/volatility-2.6.1/tools/linux/module.c:10:
include/linux/radix-tree.h:62:1: warning: this is the location of the previous definition
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/volatility-2.6.1/tools/linux/module.mod.o
  LD [M]  /root/volatility-2.6.1/tools/linux/module.ko.unsigned
  NO SIGN [M] /root/volatility-2.6.1/tools/linux/module.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
dwarfdump -di module.ko > module.dwarf
make -C //lib/modules/2.6.32-754.28.1.el6.x86_64/build M="/root/volatility-2.6.1/tools/linux" clean
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'
  CLEAN   /root/volatility-2.6.1/tools/linux/.tmp_versions
  CLEAN   /root/volatility-2.6.1/tools/linux/Module.symvers /root/volatility-2.6.1/tools/linux/modules.order
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.28.1.el6.x86_64'

# ls kcore Makefile Makefile.enterprise module.c module.dwarf

  • 利用module.dwarf制作profile文件
    1. 注意與解釋
      1. module.dwarf 文件:這個(gè)文件是根據(jù)內(nèi)核文件生存的,所以內(nèi)核不一樣生成的文件也是不同的。
      2. /boot/System.map-$(uname -r):System.map是一個(gè)特定內(nèi)核的內(nèi)核符號(hào)表。它是你當(dāng)前運(yùn)行的內(nèi)核的System.map的鏈接。
        1. System.map文件的作用:https://www.cnblogs.com/linhaostudy/p/10327574.html
        2. 系統(tǒng)調(diào)用劫持之(通過/boot/System.map目錄獲取sys_call_table系統(tǒng)調(diào)用表):https://blog.csdn.net/qq_41453285/article/details/103050710
    2. 命令: zip $(lsb_release -i -s)_$(uname -r)_profile.zip ./volatility/tools/linux/module.dwarf /boot/System.map-$(uname -r)

[root@localhost ~]# zip Centos65x64_$(uname -r)_profile.zip module.dwarf /boot/System.map-$(uname -r) adding: module.dwarf (deflated 90%) adding: boot/System.map-2.6.32-754.28.1.el6.x86_64 (deflated 79%)

# ls _2.6.32-754.28.1.el6.x86_64_profile.zip anaconda-ks.cfg Centos65x64_2.6.32-754.28.1.el6.x86_64_profile.zip dirty.c dwarfdump install.log install.log.syslog lime-2.6.32-754.28.1.el6.x86_64.ko module.dwarf

  • 實(shí)戰(zhàn)利用已經(jīng)編譯文件,直接取證,不對(duì)系統(tǒng)進(jìn)行任何安裝文件
    1. 已經(jīng)編譯文件列表
      1. dump內(nèi)存to鏡像文件相關(guān)
        1. lime-2.6.32-754.28.1.el6.x86_64.ko
      2. profile文件制作相關(guān)
        1. module.dwarf
    2. 測試
      1. 利用demo“l(fā)ime-2.6.32-754.28.1.el6.x86_64.ko”,免編譯直接dump內(nèi)存to文件。
內(nèi)存鏡像取證分析插圖5
  • 利用demo“module.dwarf”,生成profile文件
    1. copy system.map文件

[root@localhost ~]# cd /tmp/

# ls

# cp /boot/System.map-$(uname -r) .

# ls System.map-2.6.32-754.28.1.el6.x86_64

  • 通過自己電腦直接生成
kali@kali:~/Desktop$ mkdir profile
kali@kali:~/Desktop$ cd profile/
kali@kali:~/Desktop/profile$ ls
module.dwarf  System.map-2.6.32-754.28.1.el6.x86_64
kali@kali:~/Desktop/profile$ zip centos_65_x64_profile.zip module.dwarf System.map-2.6.32-754.28.1.el6.x86_64
  adding: module.dwarf (deflated 90%)
  adding: System.map-2.6.32-754.28.1.el6.x86_64 (deflated 79%)
kali@kali:~/Desktop/profile$ ls
centos_65_x64_profile.zip  module.dwarf  System.map-2.6.32-754.28.1.el6.x86_64
kali@kali:~/Desktop/profile$
  • 所以說高端黑客都是本地模擬一遍,而不是在服務(wù)器上瞎折騰。。。(干貨!淦)
  • Mac應(yīng)該是與Linux的方法一致的,考慮到內(nèi)核版本問題,我這里建議用“Lime+Vol的Tools生成profile”方法
  • Volatility分析
    1. 環(huán)境
      1. 工具vol(工具包里有)任何平臺(tái)都是可以運(yùn)行的
      2. 內(nèi)存鏡像文件
      3. profile文件(創(chuàng)建一個(gè)文件夾,我這里取名叫l(wèi)inux,將profile文件放入其中)
      4. 當(dāng)前系統(tǒng)環(huán)境是Windows
    2. 加載插件文件夾Linux,測試是否成功加載profile文件
Windows:
B:\Security\取證\volatility>volatility_2.6_win64_standalone.exe --plugins=linux --info|findstr Linux
Volatility Foundation Volatility Framework 2.6
Linux_2_6_32-754_28_1_el6_x86_64_profilex64 - A Profile for Linux _2.6.32-754.28.1.el6.x86_64_profile x64         #有著一條說明成功加載
LinuxAMD64PagedMemory         - Linux-specific AMD 64-bit address space.
linux_aslr_shift           - Automatically detect the Linux ASLR shift
linux_banner               - Prints the Linux banner information
linux_yarascan             - A shell in the Linux memory image

Linux:
# chmod +x volatility_2.6_lin64_standalone
# ls /root/linux/
_2.6.32-754.28.1.el6.x86_64_profile.zip  Makefile             module.c
kcore                                    Makefile.enterprise  module.dwarf
# ./volatility_2.6_lin64_standalone --plugins=/root/linux/ --info |grep Linux
Volatility Foundation Volatility Framework 2.6
Linux_2_6_32-754_28_1_el6_x86_64_profilex64 - A Profile for Linux _2.6.32-754.28.1.el6.x86_64_profile x64          #有著一條說明成功加載
LinuxAMD64PagedMemory         - Linux-specific AMD 64-bit address space.
linux_aslr_shift           - Automatically detect the Linux ASLR shift
linux_banner               - Prints the Linux banner information
linux_yarascan             - A shell in the Linux memory image
  • 加載取證文件(內(nèi)存鏡像文件),讀取鏡像當(dāng)前的進(jìn)程情況。
B:\Security\取證\volatility>volatility_2.6_win64_standalone.exe --plugins=linux -f centos65x64.mem --profile=Linux_2_6_32-754_28_1_el6_x86_64_profilex64 linux_psaux
Volatility Foundation Volatility Framework 2.6
Pid    Uid    Gid    Arguments
1      0      0      /sbin/init
2      0      0      [kthreadd]
3      0      0      [migration/0]
4      0      0      [ksoftirqd/0]
5      0      0      [stopper/0]
6      0      0      [watchdog/0]
7      0      0      [migration/1]
8      0      0      [stopper/1]
9      0      0      [ksoftirqd/1]
10     0      0      [watchdog/1]
11     0      0      [events/0]
12     0      0      [events/1]
13     0      0      [events/0]
14     0      0      [events/1]
15     0      0      [events_long/0]
16     0      0      [events_long/1]
17     0      0      [events_power_ef]
18     0      0      [events_power_ef]
19     0      0      [cgroup]
20     0      0      [khelper]
21     0      0      [netns]
22     0      0      [async/mgr]
23     0      0      [pm]
24     0      0      [sync_supers]
25     0      0      [bdi-default]
26     0      0      [kintegrityd/0]
27     0      0      [kintegrityd/1]
28     0      0      [kblockd/0]
29     0      0      [kblockd/1]
30     0      0      [kacpid]
31     0      0      [kacpi_notify]
32     0      0      [kacpi_hotplug]
33     0      0      [ata_aux]
34     0      0      [ata_sff/0]
35     0      0      [ata_sff/1]
36     0      0      [ksuspend_usbd]
37     0      0      [khubd]
38     0      0      [kseriod]
39     0      0      [md/0]
40     0      0      [md/1]
41     0      0      [md_misc/0]
42     0      0      [md_misc/1]
43     0      0      [linkwatch]
46     0      0      [khungtaskd]
47     0      0      [lru-add-drain/0]
48     0      0      [lru-add-drain/1]
49     0      0      [kswapd0]
50     0      0      [ksmd]
51     0      0      [khugepaged]
52     0      0      [aio/0]
53     0      0      [aio/1]
54     0      0      [crypto/0]
55     0      0      [crypto/1]
62     0      0      [kthrotld/0]
63     0      0      [kthrotld/1]
64     0      0      [pciehpd]
66     0      0      [kpsmoused]
67     0      0      [usbhid_resumer]
68     0      0      [deferwq]
100    0      0      [kdmremove]
101    0      0      [kstriped]
131    0      0      [ttm_swap]
214    0      0      [scsi_eh_0]
215    0      0      [scsi_eh_1]
284    0      0      [mpt_poll_0]
285    0      0      [mpt/0]
297    0      0      [scsi_eh_2]
343    0      0      [kdmflush]
345    0      0      [kdmflush]
363    0      0      [jbd2/dm-0-8]
364    0      0      [ext4-dio-unwrit]
450    0      0      /sbin/udevd -d
579    0      0      [vmmemctl]
753    0      0      [jbd2/sda1-8]
754    0      0      [ext4-dio-unwrit]
789    0      0      [kauditd]
913    0      0      [flush-253:0]
1032   0      0      /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0
1094   0      0      auditd
1116   0      0      /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
1168   0      0      /usr/sbin/sshd
1247   0      0      /usr/libexec/postfix/master
1253   89     89     pickup -l -t fifo -u
1254   89     89     qmgr -l -t fifo -u
1261   0      0      crond
1274   0      0      login -- root
1276   0      0      /sbin/mingetty /dev/tty2
1278   0      0      /sbin/mingetty /dev/tty3
1280   0      0      /sbin/mingetty /dev/tty4
1284   0      0      /sbin/udevd -d
1285   0      0      /sbin/udevd -d
1286   0      0      /sbin/mingetty /dev/tty5
1288   0      0      /sbin/mingetty /dev/tty6
1292   0      0      -bash
1306   0      0      sshd: root@pts/0,p
1310   0      0      -bash
1857   0      0      insmod lime-2.6.32-754.28.1.el6.x86_64.ko path=/centos65x64.mem format=lime
1858   0      0      -bash
  • 到這里取證已經(jīng)完成。后續(xù)的分析工作,可參考相關(guān)Vol的參數(shù)。
  • 窮筆文筆略低,大佬勿噴。因?yàn)閰⒖剂撕芏嘞嚓P(guān)內(nèi)存取證,大多數(shù)是教你如何分析Windows或者取證Windows。linux的少之又少。所以窮筆寫了該文章,希望能幫助到相關(guān)朋友。

【0x01】文章中的工具下載鏈接:https://pan.baidu.com/s/16hIlWLbcUViVGObsfxTC-Q 提取碼:5c2d

【0x02】RedLine 軟件相關(guān)文章:https://www.freebuf.com/articles/system/129463.html

【0x03】Lime:https://github.com/504ensicsLabs/LiME

【0x04】Volatility :https://github.com/volatilityfoundation/volatility/

【0x05】dwarfdump文件:筆者已經(jīng)通過源文件編譯成二進(jìn)制文件,在【0x01】百度云鏈接里打包.

dwarfdump源代碼文件下載地址:https://www.prevanders.net/libdwarf-20140413.tar.gz【友情提示需要gc-c++依賴,Centos參考:yum -y install gcc+ gcc-c++】


版權(quán)申明:本文為原創(chuàng)文章,轉(zhuǎn)載需要說明輸出。
作者:AlphaBug
時(shí)間:2020年4月18日 20:28:56 北京時(shí)間
文章鏈接:?https://www.0xc2.cn/?p=222

西數(shù)科技: 司法鑒定/產(chǎn)品質(zhì)量鑒定/檢驗(yàn)檢測/數(shù)據(jù)恢復(fù)專家. 4006184118

相關(guān)文章

聯(lián)系我們

聯(lián)系我們

025-86883952

在線咨詢: QQ交談

郵箱: wd@wdsos.com

工作時(shí)間:周一至周五,9:00-17:30,節(jié)假日休息

關(guān)注微信
微信掃一掃關(guān)注我們

微信掃一掃關(guān)注我們