前言

对于操作系统的信息搜集有什么作用?提权、深入测试、域渗透、留后门······

有一位大师傅曾经说过:内网渗透的本质是信息搜集。

看了许多内网信息收集的文章,所用到的收集信息的命令大都是相同的。既然如此,写一个简单的脚本省去一些重复操作。

Windows

常用命令

whoami/echo %USERNAME%  # 当前用户
ipconfig # IP 信息
net user # 用户列表
systeminfo # 查看系统信息
wmic qfe get HotFixID # 纯补丁信息
set # 查看环境变量
netsh firewall show state # 查看防火墙状态
net localgroup # 查看用户组
net localgroup administrators # 查看本机管理员
net config workstation # 查看当前计算机名,全名,用户名,系统版本,工作 站域,登陆域


netstat -ano # 查看端口
tasklist # 查看所有进程
net start # 查看已启动的服务
net share # 查看共享列表


net user /domain # 获取域内用户信息
net view /domain # 查询域
net group /domain # 查询域内所有用户
net group "domain computers" /domain # 查询所有域成员计算机
net accounts /domain # 获取域密码信息
net group "Domain admins" /domain # 收集管理员列表
net group "Domain Controller" /domain # 查询域控制器列表
Nslookup -type=SRV _ldap._tcp # 查看域控制器的主机

可能存在敏感文件

C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml

Linux

常用命令

whoami  # 用户名
id # 用户 id
cat /etc/shadow #获取用户 hash,需要 root 权限
cat /etc/issue # 查看系统名称
cat /etc/lsb-release # 查看系统名称、版本号
uname -a # 查看所有信息
ps aux # 查看所有进程详细信息
top # 查看进程
ifconfig/ip addr # 查看 IP
cat /etc/serivices # 查看存在的服务
history # 查看历史命令
cat ~/.bash_history # 所有历史命令
dpkg -l # 查看安装的软件包
lastlog # 查看用户登录日志
cat /etc/group # 查看用户组
grep -v -E "^#" /etc/passwd | awk -F: '$3==0{print $1}' # 列出超级用户
env # 查看环境变量
last # 历史登陆用户

可能存在的敏感文件

cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/access.log
cat /etc/httpd/logs/error_log
cat /etc/httpd/logs/error.log
cat /var/log/apache2/access_log
cat /var/log/apache2/access.log
cat /var/log/apache2/error_log
cat /var/log/apache2/error.log
cat /var/log/apache/access_log
cat /var/log/apache/access.log
cat /var/log/auth.log
cat /var/log/chttp.log
cat /var/log/cups/error_log
cat /var/log/dpkg.log
cat /var/log/faillog
cat /var/log/httpd/access_log
cat /var/log/httpd/access.log
cat /var/log/httpd/error_log
cat /var/log/httpd/error.log
cat /var/log/lastlog
cat /var/log/lighttpd/access.log
cat /var/log/lighttpd/error.log
cat /var/log/lighttpd/lighttpd.access.log
cat /var/log/lighttpd/lighttpd.error.log
cat /var/log/messages
cat /var/log/secure
cat /var/log/syslog
cat /var/log/wtmp
cat /var/log/xferlog
cat /var/log/yum.log
cat /var/run/utmp
cat /var/webmin/miniserv.log
cat /var/www/logs/access_log
cat /var/www/logs/access.log
ls -alh /var/lib/dhcp3/
ls -alh /var/log/postgresql/
ls -alh /var/log/proftpd/
ls -alh /var/log/samba/

简易脚本

# -s 指定操作系统  Linux/Windos
# -d 指定是否存在域,不清楚可省略 0/1 0表示无,1表示有
import subprocess
import argparse


cmds = [{
'whoami': '当前用户',
'ipconfig': 'IP 信息',
'net user': '用户列表',
'systeminfo': '查看系统信息',
'wmic qfe get HotFixID': '补丁信息',
'set': '环境变量',
'netsh firewall show state': '防火墙状态',
'net localgroup': '所有用户组',
'net localgroup administrators': '管理员组成员',
'net config workstation': '当前计算机名、全名、用户名、系统版本、工作站域、登陆域'
}, {
'netstat -ano': '端口信息',
'tasklist': '所有进程',
'net start': '已启动服务',
'net share': '共享列表',
}, {
'net view /domain': '查询域结果',
'net user /domain': '域内用户信息',
'net group /domain': '域内所有用户组',
'net group "domain computers" /domain': '所有域成员计算机',
'net accounts /domain': '域密码信息',
'net group "Domain admins" /domain': '域管理员列表',
'net group "Domain Controller" /domain': '查询域控制器列表',
'nslookup -type=SRV _ldap._tcp': '域控制器的主机',
}]

bashs = [
{
'whoami': '用户名',
'id': '用户 id',
'cat /etc/issue': '查看系统名称',
'cat /etc/lsb-release': '系统名称、版本号',
'uname -a': '内核信息',
'ip addr': 'IP',
'cat ~/.bash_history': '历史命令',
'grep -v -E "^#" /etc/passwd | awk -F: "$3==0{print $1}"': '超级用户',
'env': '环境变量',
'lastlog': '用户登录日志',
'last': '历史登陆用户',
'cat /etc/group': '查看用户组',
},
{
'dpkg -l': '查看安装的软件包',
'cat /etc/serivices': '存在的服务',
'pa aux': '所有进程详细信息',
},
{
'cat /etc/shadow': '用户 hash',
}
]

win = '''C:\\Apache\\conf\\httpd.conf
C:\\Apache\\logs\\access.log
C:\\Apache\\logs\\error.log
C:\\Apache2\\conf\\httpd.conf
C:\\Apache2\\logs\\access.log
C:\\Apache2\\logs\\error.log
C:\\Apache22\\conf\\httpd.conf
C:\\Apache22\\logs\\access.log
C:\\Apache22\\logs\\error.log
C:\\Apache24\\conf\\httpd.conf
C:\\Apache24\\logs\\access.log
C:\\Apache24\\logs\\error.log
C:\\Documents and Settings\\Administrator\\NTUser.dat
C:\\php\\php.ini
C:\\php4\\php.ini
C:\\php5\\php.ini
C:\\php7\\php.ini
C:\\Program Files (x86)\\Apache Group\\Apache\\conf\\httpd.conf
C:\\Program Files (x86)\\Apache Group\\Apache\\logs\\access.log
C:\\Program Files (x86)\\Apache Group\\Apache\\logs\\error.log
C:\\Program Files (x86)\\Apache Group\\Apache2\\conf\\httpd.conf
C:\\Program Files (x86)\\Apache Group\\Apache2\\logs\\access.log
C:\\Program Files (x86)\\Apache Group\\Apache2\\logs\\error.log
c:\\Program Files (x86)\\php\\php.ini
C:\\Program Files\\Apache Group\\Apache\\conf\\httpd.conf
C:\\Program Files\\Apache Group\\Apache\\conf\\logs\\access.log
C:\\Program Files\\Apache Group\\Apache\\conf\\logs\\error.log
C:\\Program Files\\Apache Group\\Apache2\\conf\\httpd.conf
C:\\Program Files\\Apache Group\\Apache2\\conf\\logs\\access.log
C:\\Program Files\\Apache Group\\Apache2\\conf\\logs\\error.log
C:\\Program Files\\FileZilla Server\\FileZilla Server.xml
C:\\Program Files\\MySQL\\my.cnf
C:\\Program Files\\MySQL\\my.ini
C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.cnf
C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini
C:\\Program Files\\MySQL\\MySQL Server 5.1\\my.cnf
C:\\Program Files\\MySQL\\MySQL Server 5.1\\my.ini
C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.cnf
C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini
C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.cnf
C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini
C:\\Program Files\\MySQL\\MySQL Server 5.7\\my.cnf
C:\\Program Files\\MySQL\\MySQL Server 5.7\\my.ini
C:\\Program Files\\php\\php.ini
C:\\Users\\Administrator\\NTUser.dat
C:\\Windows\\debug\\NetSetup.LOG
C:\\Windows\\Panther\\Unattend\\Unattended.xml
C:\\Windows\\Panther\\Unattended.xml
C:\\Windows\\php.ini
C:\\Windows\\repair\\SAM
C:\\Windows\\repair\\system
C:\\Windows\\System32\\config\\AppEvent.evt
C:\\Windows\\System32\\config\\RegBack\\SAM
C:\\Windows\\System32\\config\\RegBack\\system
C:\\Windows\\System32\\config\\SAM
C:\\Windows\\System32\\config\\SecEvent.evt
C:\\Windows\\System32\\config\\SysEvent.evt
C:\\Windows\\System32\\config\\SYSTEM
C:\\Windows\\System32\\drivers\\etc\\hosts
C:\\Windows\\System32\\winevt\\Logs\\Application.evtx
C:\\Windows\\System32\\winevt\\Logs\\Security.evtx
C:\\Windows\\System32\\winevt\\Logs\\System.evtx
C:\\Windows\\win.ini
C:\\xampp\\apache\\conf\\extra\\httpd-xampp.conf
C:\\xampp\\apache\\conf\\httpd.conf
C:\\xampp\\apache\\logs\\access.log
C:\\xampp\\apache\\logs\\error.log
C:\\xampp\\FileZillaFTP\\FileZilla Server.xml
C:\\xampp\\MercuryMail\\MERCURY.INI
C:\\xampp\\mysql\\bin\\my.ini
C:\\xampp\\php\\php.ini
C:\\xampp\\security\\webdav.htpasswd
C:\\xampp\\sendmail\\sendmail.ini
C:\\xampp\\tomcat\\conf\\server.xml'''

lin = """/etc/httpd/logs/access_log
/etc/httpd/logs/access.log
/etc/httpd/logs/error_log
/etc/httpd/logs/error.log
/var/log/apache2/access_log
/var/log/apache2/access.log
/var/log/apache2/error_log
/var/log/apache2/error.log
/var/log/apache/access_log
/var/log/apache/access.log
/var/log/auth.log
/var/log/chttp.log
/var/log/cups/error_log
/var/log/dpkg.log
/var/log/faillog
/var/log/httpd/access_log
/var/log/httpd/access.log
/var/log/httpd/error_log
/var/log/httpd/error.log
/var/log/lastlog
/var/log/lighttpd/access.log
/var/log/lighttpd/error.log
/var/log/lighttpd/lighttpd.access.log
/var/log/lighttpd/lighttpd.error.log
/var/log/messages
/var/log/secure
/var/log/syslog
/var/log/wtmp
/var/log/xferlog
/var/log/yum.log
/var/run/utmp
/var/webmin/miniserv.log
/var/www/logs/access_log
/var/www/logs/access.log"""

Win_files = win.split('\n')
Lin_files = lin.split('\n')


def getInfo(system, key):
if system == "Windows":
exes = cmds
if key == '0':
exes.pop()
print(exes)
files = Win_files
else:
exes = bashs
files = Lin_files
all = ''
for commands in exes:
for k, v in commands.items():
try:
res = subprocess.Popen(k, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8")
res = v + ":\n" + res.stdout.read() + "-------******-------\n"
print(res)
all += res
except:
res = subprocess.Popen(k, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="gbk")
res = v + ":\n" + res.stdout.read() + "-------******-------\n"
print(res)
all += res

all += '存在的敏感文件有:\n'
print('存在的敏感文件有:(Linux 下由于权限问题扫描可能会不准确!请复测!!)\n')
for file in files:
try:
with open(file, 'r'):
all += (file + '\n')
print(file + '\n')
except:
pass
with open('result.txt', 'a+') as f:
f.write(all)
print("\n\nEverything is Done!")
print('执行的命令有:')
for command in exes:
for k, v in command.items():
print(k)


def main():
parser = argparse.ArgumentParser(description='InfoScan')
parser.add_argument("-s", "--system", help="指定操作系统", default='Windows')
parser.add_argument("-d", "--domain", help="是否存在域,不确定可以不用加", default=0)
args = parser.parse_args()
system = args.system
key = args.domain
getInfo(system, key)


if __name__ == '__main__':
main()