关于LDAPX
LDAPX是一款功能强大且灵活的LDAP代理,可以帮助广大研究人员动态检查和转换其他工具生成的所有 LDAP 数据包。
工具要求
Golang
工具安装
由于该工具基于Go开发,因此我们首先需要在本地设备上安装并配置好最新版本的Go环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone github.com/Macmod/ldapx
然后切换到项目目录中,使用下列命令完成工具代码的安装和构建:
cd ldapx go install .
发布版本
我们还可以直接访问该项目的【Releases页面】下载预编译版本的LDAPX。
工具使用
$ ldapx -t LDAPSERVER:389 [-f MIDDLEWARECHAIN] [-a MIDDLEWARECHAIN] [-b MIDDLEWARECHAIN] [-l LOCALADDR:LOCALPORT] [-o MIDDLEWAREOPTION=VALUE] [...]
参数命令
-f:将对所有适用的请求应用过滤中间件; -a:将把 AttrList 中间件应用于所有适用的请求; -b:将对所有适用的请求应用 BaseDN 中间件; -e:将把 AttrEntries 中间件应用于所有适用的请求; -o:可以多次指定,用于指定中间件的选项; -F:指定转发数据包(请求)的详细程度; -R:指定反向数据包(响应)的详细程度; -x:可用于指定用于连接目标的 SOCKS 代理;
工具使用样例
在过滤器、属性列表和 baseDN 中应用多个中间件
$ ldapx -t 192.168.117.2:389 -f OGDR -a Owp -b OX
使用 shell
我们还可以使用构建 shell 来动态更改中间件(set命令)或模拟 LDAP 查询(test命令):
输出统计数据
要查看数据包统计信息,包括每个 LDAP 操作通过代理传递的数据包数量,请使用show stats命令:
ldapx> show stats [Client -> Target] Packets Received: 14 Packets Sent: 14 Bytes Received: 1464 Bytes Sent: 1464 Counts by Type: Bind Request: 1 Search Request: 12 Modify Request: 1 [Client <- Target] Packets Received: 149 Packets Sent: 149 Bytes Received: 177045 Bytes Sent: 177045 Counts by Type: Bind Response: 1 Search Result Entry: 129 Search Result Done: 12 Search Result Reference: 6 Modify Response: 1
以代码库形式使用
package main import ( "fmt" filtermid "github.com/Macmod/ldapx/middlewares/filter" "github.com/Macmod/ldapx/parser" ) func main() { query := "(&(cn=john)(sn=doe))" fmt.Printf("Original Query: %s\n", query) myFilter, err := parser.QueryToFilter(query) if err != nil { fmt.Errorf("error parsing query") } // FilterToString can be used to show // the internal representation of the parsed filter fmt.Println(parser.FilterToString(myFilter, 0)) // Applying the OID middleware obfuscator := filtermid.OIDAttributeFilterObf(3, false) newFilter := obfuscator(myFilter) newQuery, err := parser.FilterToQuery(newFilter) if err != nil { fmt.Errorf("error converting filter to query") } fmt.Printf("Changed Query: %s\n", newQuery) } 输出结果: Original Query: (&(cn=john)(sn=doe)) Filter Type: 0 AND Filter with 2 sub-filters: Filter Type: 3 Equality Match - Attribute: cn, Value: john Filter Type: 3 Equality Match - Attribute: sn, Value: doe Changed Query: (&(2.005.4.03=john)(2.005.04.004=doe))
中间件开发
过滤器
func YourFilterMiddleware(args) func(parser.Filter) parser.Filter
BaseDN
func YourBaseDNMiddleware(args) func(string) string
属性列表
func YourAttrListMiddleware(args) func([]string) []string
属性条目
func YourAttrEntriesMiddleware(args) func(parser.AttrEntries) parser.AttrEntries
中间件代码样例
func EqExtensibleFilterObf(dn bool) func(parser.Filter) parser.Filter { // For every leaf in the filter... return LeafApplierFilterMiddleware(func(filter parser.Filter) parser.Filter { switch f := filter.(type) { // If the leaf is an EqualityMatch case *parser.FilterEqualityMatch: // Replace it with an ExtensibleMatch with an empty MatchingRule // optionally adding a DNAttributes (Active Directory ignores DNAttributes) return &parser.FilterExtensibleMatch{ MatchingRule: "", AttributeDesc: f.AttributeDesc, MatchValue: f.AssertionValue, DNAttributes: dn, } } return filter }) }
然后在以下位置注册config.go即可:
var filterMidFlags map[rune]string = map[rune]string{ ... 'x': "EqExtensible", ... } // In SetupMiddlewaresMap: filterMidMap = map[string]filtermid.FilterMiddleware{ ... "EqExtensible": filtermid.EqualityToExtensibleFilterObf(false), ... }
许可证协议
本项目的开发与发布遵循MIT开源许可协议。
项目地址
LDAPX:【GitHub传送门】
参考资料
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)