Linux导出进程和系统内存

### 1、通过GDB导出进程内存

1.查看SSH进程(示例)

通过PS查看进程ID,获取到SSH的进程ID

ps -aux | grep sshd
[root@localhost ~]# ps aux | grep sshd
root        1067  0.0  0.0  16088  9472 ?        Ss   Jul12   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root       56337  0.0  0.0  19616 12604 ?        Ss   Jul18   0:00 sshd: root [priv]
root       56351  0.0  0.0  19964  7568 ?        S    Jul18   0:00 sshd: root@pts/1
root       56353  0.0  0.0  19612 12656 ?        Ss   Jul18   0:00 sshd: root [priv]
root       56431  0.0  0.0  19612  7404 ?        S    Jul18   0:00 sshd: root@notty

2.GDB指定进程ID

通过generate-core-file导出进程信息,会生成以core.进程ID的文件

gdb -p 1067
(gdb) generate-core-file #输入这个命令回车

#ls -lah

3.通过strings查看dump文件

strings core.19861 | more

4.查看进程输出

more /proc/19861/cmdline

5.查看进程关联

file /proc/19861/exe

2、通过ProcDump导出进程内存

1.下载工具

https://github.com/Sysinternals/ProcDump-for-Linux/releases
sudo dpkg -i procdump_1.5-16239_amd64.deb

2.dump进程

指定dump的进程ID,并dump出以dump.进程ID的文件

procdump 19861 dump

image-20230720092548894

3.创建10秒内3个核心存储

在10秒内创建3个核心存储,并存储在/tmp路径下

procdump -n 3  19861 /tmp

image-20230720092612057

image-20230720092624719

3、通过avlm导出系统内存

avlm是微软基于 Rust 编写的X86_64用户空间易失性内存获取工具,可用于在不知道目标操作系统分布的情况下获取内存,并且直接提供二进制工具,不需要在操作系统进行编译。

https://github.com/microsoft/avml
# 文件下载后赋予可执行权限chmod +x avml# 根据系统内存大小生成相同大小的文件
./avml memory.dump

image-20230720092903240

使用volatility可直接进行分析,该示例为在本机的kali中生成的系统内存镜像

python3 vol.py -f /opt/test/memory.dump banners.Banners

image-20230720092930582

posted @ 2023-07-20 09:30  寻梦99  阅读(960)  评论(0)    收藏  举报