msldap:一款用于审计MS AD的LDAP库
2024-10-24 23:36:24 Author: www.freebuf.com(查看原文) 阅读量:2 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于msldap

msldap是一款用于审计MS AD的LDAP库,广大研究人员可以利用该工具轻松执行针对MS AD的安全审计任务。

功能介绍

1、配有内置控制台 LDAP 客户端;

2、所有参数都可以通过方便的 URL 进行控制;

3、支持与 NTLM 和 KERBEROS 集成的 Windows 身份验证 (SSPI);

4、支持通道绑定(适用于 ntlm 和 kerberos,不适用于 SSPI);

5、支持加密(针对 NTLM/KERBEROS/SSPI);

6、支持 LDAPS(TODO:实际验证证书);

7、支持SOCKS5代理,无需额外的代理程序;

8、最小占用空间;

9、大量预建查询,方便信息轮询;

10、轻松集成到您的项目中;

工具要求

asn1crypto

asysocks

aiocmd

asciitree

工具安装

由于该工具基于Python 3.6开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3.6+环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/skelsec/msldap.git

然后切换到项目目录中,使用工具安装脚本完成安装:

cd msldap

python3 setup.py install

pip安装

pip install msldap

工具使用

<protocol>+<auth>://<username>:<password>@<ip_or_host>:<port>/<tree>/?<param>=<value>

 

 

<protocol> sets the ldap protocol following values supported:

- ldap

- ldaps

- gc

- gc_ssl

 

<auth> can be omitted if plaintext authentication is to be performed (in that case it default to ntlm-password), otherwise:

- ntlm-password

- ntlm-nt

- kerberos-password (dc option param must be used)

- kerberos-rc4 / kerberos-nt (dc option param must be used)

- kerberos-aes (dc option param must be used)

- kerberos-keytab (dc option param must be used)

- kerberos-ccache (dc option param must be used)

- kerberos-pfx (dc option param must be used)

- kerberos-pem (dc option param must be used)

- kerberos-certstore (dc option param must be used, windows only)

- sspi-ntlm (windows only!)

- sspi-kerberos (windows only!)

- anonymous

- plain

- simple

- sicily (same format as ntlm-nt but using the SICILY authentication)

 

<tree>:

OPTIONAL. Specifies the root tree of all queries

 

<param> can be:

- timeout : connction timeout in seconds

- proxytype: currently only socks5 proxy is supported

- proxyhost: Ip or hostname of the proxy server

- proxyport: port of the proxy server

- proxytimeout: timeout ins ecodns for the proxy connection

- dc: the IP address of the domain controller, MUST be used for kerberos authentication

 

Examples:

ldap://10.10.10.2 (anonymous bind)

ldaps://test.corp (anonymous bind)

ldap+sspi-ntlm://test.corp

ldap+sspi-kerberos://test.corp

ldap://TEST\\victim:<password>@10.10.10.2 (defaults to SASL GSSAPI NTLM)

ldap+simple://TEST\\victim:<password>@10.10.10.2 (SASL SIMPLE auth)

ldap+plain://TEST\\victim:<password>@10.10.10.2 (SASL SIMPLE auth)

ldap+ntlm-password://TEST\\victim:<password>@10.10.10.2

ldap+ntlm-nt://TEST\\victim:<nthash>@10.10.10.2

ldap+kerberos-password://TEST\\victim:<password>@<hostname>/?dc=10.10.10.2

ldap+kerberos-rc4://TEST\\victim:<rc4key>@<hostname>/?dc=10.10.10.2

ldap+kerberos-aes://TEST\\victim:<aes>@<hostname>/?dc=10.10.10.2

ldap://TEST\\victim:[email protected]/DC=test,DC=corp/

ldap://TEST\\victim:[email protected]/DC=test,DC=corp/?timeout=99&proxytype=socks5&proxyhost=127.0.0.1&proxyport=1080&proxytimeout=44

模块使用

import asyncio

from msldap.commons.factory import LDAPConnectionFactory

 

url = 'ldap+simple://TEST\\victim:[email protected]'

 

async def client(url):

conn_url = LDAPConnectionFactory.from_url(url)

ldap_client = conn_url.get_client()

_, err = await ldap_client.connect()

if err is not None:

raise err

 

user = await ldap_client.get_user('Administrator')

print(str(user))

 

if __name__ == '__main__':

asyncio.run(client(url))

工具运行演示

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

msldap:【GitHub传送门

参考资料

https://msldap.readthedocs.io/en/latest/

https://live.octopwn.com/

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/sectool/413660.html
如有侵权请联系:admin#unsafe.sh