getshell后的基本信息收集
基本信息收集
系统类型判断
使用whoami能快速判断系统是Linux还是Windows。
如果是Windows,
使用命令systeminfo | findstr OS可得到WIndows版本。
使用命令echo %PROCESSOR_ARCHITECTURE%可看出系统是基于什么架构的。
如果是Linux,
判断系统是RHEL系还是Debian系,往往需要综合起来看。实际场景下,有时拿到的shell是个docker,包管理器可能还给裁掉了。
#查看内核版本信息,有时能直接看到操作系统类型。
uname -ar
cat /etc/issue
cat /proc/version
cat /etc/redhat-release
yum/rpm #RHEL系特有的包管理器
apt/dpkg #Debian系特有的包管理器
判断系统CPU指令集。是armv8/arm64/aarch64的还是x64/x86_64的。这个会影响提权以及上传二进制工具可不可用的问题。
arch
uname -m
权限与账户
如果是Linux
#查看自己身份
whoami
id
w
who
#查看用户列表
cat /etc/passwd
需额外留意一下自己有没有被分配可交互的shell
cat /etc/passwd|grep `whoami`
或,cat ~/*_history
如果是Windows
whoami
需额外留意一下自己是不是域用户。可以参考后面的域信息收集部分。
网络与端口
查看网络信息,重点关注地址是不是公网的,是不是多网卡,有没有开放一些有意思的服务端口。由于此时我们已经有个shell了,因此端口信息用处不是特别大,考虑提权的话可能用得上。
如果是Linux
#IP
ifconfig
ip addr
#端口
netstat -ntalp
#使用下面命令,获得公网IP
curl ifconfig.me
curl cip.cc
#路由及MAC表
route print
arp -a
如果是Windows
#IP
ipconfig
#端口
netstat -ano
软件与系统补丁
windows
systeminfo
wmic product get name,version
Get-wmiObject -class Win32_Product | Select-Object -Property name,version
wmic qfe get Caption,Description,HotFixID,InstalledOn
linux
#debian系
dpkg -l
#RHEL系
yum list installed
进程与服务信息
windows
#查看进程信息
tasklist | findstr 360
wmic process list brief
#查看当前服务信息
wmic service list brief
linux
#查看进程信息
ps aux
pstree
ps auxwff
top
#查看当前已启用服务
systemctl list-unit-files|grep enabled
域基本信息收集
判断是否处于域
net time /domain
如果存在域且是域用户,返回如下信息。
如果存在域但自身不是域用户,返回如下信息。
定位域控
方法一、定位DNS服务器。一般来说域控同时也是域内的DNS服务器。使用ping或nslookup查找所处域即可知道域控IP。
方法二、net命令族
net time /domain
net group "Domain Controllers" /domain
net group /domain
nltest /DCLIST:[域地址]
定位域管
net localgroup administrators /domain
虚拟化设备识别
虚拟机
有时需要判断我们拿到的设备是实体设备还是虚拟设备。
Linux
下面的命令能很明确的告诉我们设备是kvm、vmware等设备。
grep -rn "etected virtualization" /var/log
root@walrus:/share# dmesg |grep vmware
[ 0.000000] vmware: hypercall mode: 0x00
[ 0.000000] vmware: TSC freq read from hypervisor : 2592.004 MHz
[ 0.000000] vmware: Host bus clock speed read from hypervisor : 66000000 Hz
[ 0.000000] vmware: using clock offset of 19057102439 ns
[ 3.906114] systemd[1]: Detected virtualization vmware.
[root@xxx ~]# grep -rn "kvm" /var/log
/var/log/messages-20210704:2609:Jul 1 02:18:35 xxx systemd[1]: Detected virtualization kvm.
以及,
lscpu|grep "Hypervisor vendor"
systemd-detect-virt
dmidecode --string system-manufacturer
dmidecode --string system-product-name
windows
检查是否存在一些特征文件
//vmware
"C:\\Windows\\System32\\vmGuestLib.dll",
"C:\\Windows\\System32\\vmGuestLib.dll\\vsocklib.dll",
"C:\\Program Files\\VMware\\VMware Tools\\rpctool.exe",
"C:\\Windows\\System32\\drivers\\vmmouse.sys",
//vitualbox
"C:\\windows\\System32\\Drivers\\VBoxMouse.sys",
"C:\\windows\\System32\\Drivers\\VBoxGuest.sys",
"C:\\windows\\System32\\Drivers\\VBoxSF.sys",
"C:\\windows\\System32\\Drivers\\VBoxVideo.sys",
"C:\\windows\\System32\\vboxdisp.dll"
不过,不论Linux还是Windows最简单粗暴的办法就是查看MAC地址了。获得MAC地址后使用在线MAC地址厂商识别工具进行查找就能判断出网卡类型进而确认设备是实体机还是虚拟机。
以上是相对而言容易进行操作的方案,还有一些更为琐碎专业的方法:
https://www.zhihu.com/question/359121561?sort=created
https://zhuanlan.zhihu.com/p/27823437
docker
上面用于判断是否虚拟机的技巧常被用于病毒、木马等恶意文件做逃逸及躲避沙箱检测时的要用到的技术,实际场景下用的最多的是判断当前拿到的服务器是不是docker。
如果发现环境缺少很多命令如(yum/rpm/apt/dpkg/wget/curl/ifconfig)或发现系统的进程非常少就要怀疑是不是处于docker环境内了。
此外,还可以通过一些特征文件来证实我们猜测的有效性。
ls -al /.dockerenv
cat /proc/1/cgroup|grep docker
本文来自博客园,作者:ZapcoMan,转载请注明原文链接:https://www.cnblogs.com/ZapcoMan/p/18454881