使用Linux进程环境变量进行取证
发表于
|
注:下面来自半翻译,半实践
对Linux进程进行取证,可以通过/proc/<PID>/environ
来查看某个进程的环境变量,来获取一些信息。
所以说,遇到可疑的进程不要立即杀掉,不然取证都可能无从下手。
当在Linux上启动一个进程时,该进程的许多环境变量将在其运行期间保持不变。那么虽然启动该进程的原始shell已经消失很久,但在有一些shell变量仍然继承下来了。
在进程的环境变量中可以获得什么呢?
history anti-forensics的证据
二进制文件的命令行和路径
启动进程的用户
启动时二进制文件使用的自定义变量,可能包含密钥和其他内容
SSH连接信息:哪个ip启动的
……
对于第5点,即使攻击者从日志中清除了他们的IP地址,如果他们通过SSH进入,很有可能他们使用的IP地址仍然留在他们启动的进程中,等待被获取。
模拟攻击
假如我们是攻击者,连上一台机子的ssh
注: HISTSIZE是一个环境变量,用于控制命令历史记录的大小。通过将HISTSIZE设置为0,即export HISTSIZE=0,实际上是告诉操作系统不保存任何命令历史记录。这意味着你运行的每个命令都不会被记录下来,无法通过上下箭头键或history命令访问之前执行的命令。
ssh连上后我们在机子上执行
1 2 3 4
| export HISTSIZE=0 export PATH=.:$PATH cp /bin/nc x x -lp 6666 &
|
取证
通过列出正在监听的端口,可以查看到一个x的可疑进程。
1 2 3 4 5 6 7 8 9 10
| $ netstat -antp | grep LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 391/rpcbind tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 392/systemd-resolve tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 874/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 32334/cupsd tcp 0 0 0.0.0.0:6666 0.0.0.0:* LISTEN 16343/x tcp6 0 0 :::111 :::* LISTEN 391/rpcbind tcp6 0 0 :::80 :::* LISTEN 1050/apache2 tcp6 0 0 :::22 :::* LISTEN 874/sshd tcp6 0 0 ::1:631 :::* LISTEN 32334/cupsd
|
查看进程环境变量(我手动将ip用X打码了)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| $ strings /proc/16343/environ LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: LC_MEASUREMENT=zh_CN.UTF-8 SSH_CONNECTION=10.82.X.X 5561 172.16.2.3 22 LESSCLOSE=/usr/bin/lesspipe %s %s LC_PAPER=zh_CN.UTF-8 LC_MONETARY=zh_CN.UTF-8 LANG=en_US.UTF-8 OLDPWD=/root S_COLORS=auto LC_NAME=zh_CN.UTF-8 XDG_SESSION_ID=2246 USER=root GOPATH=/root/go QT_QPA_PLATFORMTHEME=appmenu-qt5 PWD=/tmp HOME=/root GOROOT=/usr/local/go SSH_CLIENT=10.82.X.X 5561 22 LC_ADDRESS=zh_CN.UTF-8 LC_NUMERIC=zh_CN.UTF-8 SSH_TTY=/dev/pts/0 MAIL=/var/mail/root TERM=xterm SHELL=/bin/bash SHLVL=1 LC_TELEPHONE=zh_CN.UTF-8 LOGNAME=root DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus XDG_RUNTIME_DIR=/run/user/0 PATH=.:.:/usr/lib/llvm-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/root/go/bin LC_IDENTIFICATION=zh_CN.UTF-8 PS1=\[\e]0;\u@\h: \w\a\]\[\e[34m\]#\[\e[m\] \[\e[37m\]\u\[\e[m\] @ \[\e[36m\]\h\[\e[m\] in \[\e[34m\]\w\[\e[m\] [\t]\n$ HISTSIZE=0 LESSOPEN=| /usr/bin/lesspipe %s LC_TIME=zh_CN.UTF-8 _=./x
|
从上面我们可以提取出下面有用的信息
HISTSIZE=0,这个说过了,属于反取证的方式
SSH_CONNECTION=10.82.X.X 5561 172.16.2.3 22 这个比下面的多了本机的网卡的ip
SSH_CLIENT=10.82.X.X 5561 22 这两个就是ssh的信息,10.82.X.X就是攻击者所使用的ip,该ip或许只是攻击者的跳板
SHELL=/bin/bash 启动所使用的shell
PWD=/tmp 启动时的路径
OLDPWD=/root 进入/tmp目录之前的路径
USER=root 启动进程的用户
可以看到,在调查进程活动之前,不要草率地终止可疑的进程。在弄清楚进程活动之前就终止进程,会立即丢失许多有用的信息,比如进程环境变量。
https://sandflysecurity.com/blog/using-linux-process-environment-variables-for-live-forensics/
假如你看不到评论,可能是你访问Disqus被墙了,请使用代理访问
文章来源: https://www.giantbranch.cn/2023/07/20/%E4%BD%BF%E7%94%A8Linux%E8%BF%9B%E7%A8%8B%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E8%BF%9B%E8%A1%8C%E5%8F%96%E8%AF%81/
如有侵权请联系:admin#unsafe.sh