mailoney蜜罐学习记录

蜜罐介绍

Mailoney是T-pot蜜罐系统中针对SMTP协议的一个蜜罐,该蜜罐中有三种工作模式,分别为open_relay,postfix_creds,schizo_open_relay。各种模式功能如下:
open_relay-只是一个通用的open relay,将收到的邮件远程主机地址,收件方,发件方和传输的数据都存到了logs/mail.log中。
postfix_creds-此模块只记录登录尝试的用户名密码,将其存放在存放在logs/credentials.log中。
schizo_open_relay-此模块记录所有内容,将收到的邮件远程主机地址,收件方,发件方和传输的数据都存到了logs/mail.log中,同时增加了对shellcode的检测和记录,若存在shellcode,则将数据存放在shellcode.log中;增加了对命令的检测和记录,若存在命令执行,则将命令存放在commands.log中。该模式还增加了hpfeeds协议,方便在集成的 T-pot系统中进行信息传输。

工作原理

工作流程

Maioney通过命令行模式运行蜜罐,设定的参数如下:

> usage: mailoney.py [-h] [-i <ip address>] [-p <port>] [-s mailserver] -t
                   {open_relay,postfix_creds,schizo_open_relay}
                   [-logpath <logpath>] [-hpfserver <hpfeeds-server>]
                   [-hpfport <hpfeeds-port>] [-hpfident <hpfeeds-ident>]
                   [-hpfsecret <hpfeeds-secret>]
                   [-hpfchannelprefix <hpfeeds-channel-prefix>]

使用时必须指定-t参数确定工作模式
项目的ip和监听端口在不指定的情况下默认为0.0.0.0:25
蜜罐运行时会首先根据参数设定变量值,创建日志存放目录,根据指定的模式运行对应脚本。

接下来对几种模式进行介绍。

功能实现

open_relay

open_relay工作模式记录尝试发送的全文电子邮件,其中定义了一个OpenRelay类,并创建OpenRelay对象对SMTP进行搭建,监听,OpenRelay类继承了smtpd 中的SMTPServer类,并对该类的process_message方法进行了重写。重写的process_message方法将收到的邮件远程主机地址,收件方,发件方和传输的数据都存到了logs/mail.log中,代码如下图所示:

postfix_creds

postfix_creds模式会记录登录尝试的用户名和密码信息,并将捕获的信息存放在logs/credentials.log中。这种模式的意义在于记录攻击方的burp字典,借鉴提高真实的系统中用户名密码安全性。
服务器端服务由socket包实现,对指定的ip及端口进行监听。

EHLO命令ehlo是对helo的扩展,即extend helo,可以支持authorization,即用户认证。每次连接首先判断是否收到ehlo命令,收到该命令后才能进行认证登录。

然后判断是否收到AUTH请求,若收到该请求可以将请求的认证信息存储下来。

该模式下的AUTH认证是无法成功登陆的,因为没有设定用户信息

schizo_open_relay

schizo_open_relay模式对比open_relay模式略有变化,增加了对shellcode的检测和记录,若存在shellcode,则将数据存放在shellcode.log中,也增加了EHLO和AUTH命令。
功能变化在于对SMTPServer类和该类继承的SMTPChannel类进行了更改。

SMTPChannel类的变化

该模式中的SMTPChannel类在原有SMTPChannel类的基础上增加了smtp_EHLO,smtp_AUTH方法,使蜜罐可以接受EHLO和AUTH命令。

SMTPChannel类同时对collect_incoming_data和found_terminator方法进行了重写。collect_incoming_data方法是对接受到信息的一个预处理,若客户端传输的数据大小超过了1M,则会对数据进行缩减,删去前面1M内容,然后调用process_packet_for_shellcode方法对数据进行shellcode检测。

process_packet_for_shellcode方法中调用了pylibemu模块,该模块可以实现对shellcode的识别,其中test方法可以剖析shellcode字节并识别Windows系统调用,以及其参数和返回值等。若存在shellcode,则将数据存放在shellcode.log中。


found_terminator方法在识别客户端发出的命令并执行的同时将命令存储在commands.log中

SMTPServer类的更改

对SMTPServer类的更改则是去掉了部分的信息回显,增加了handle_close函数,用于关闭当今连接。
对SMTPServer类的继承
SchizoOpenRelay是SMTPServer类的子类,它对process_message方法进行了重写,将邮件ip,端口,发送方,接收方和传输的数据存在mail.log中。

Hpfeeds协议

如上图所示,schizo_openrelay模式使用了Hpfeeds协议, hpfeeds是一个轻量级的、需要认证的、支持任意的二进制载荷的公开协议。发布者/订阅者拥有着自己的发布/订阅频道,发布者可以通过发布频道发送消息,订阅者可以通过订阅频道接收消息,这很适合用于分布式的蜜罐网络传输数据。
当系统记录信息时,在将信息记录到本地log文件的同时会将信息通过发布频道上传到hpfeeds服务器。

蜜罐优化

对schizo_open_relay的AUTH功能进行优化,添加参数设置SMTP服务的用户名密码,用户信息建议使用常见弱密码,目的在于提升蜜罐的迷惑性。
首先增加参数设置,用户名密码默认为user/password


然后对smtp_AUTH函数进行修改

本文来源于: https://xz.aliyun.com/t/7780

相关推荐

某cms代码审计引发的思考

0x01、前言 在CNVD闲逛的时候看到这款CMS,发现常见的用于getshell的漏洞都有人提交过,顿时来了兴趣,下载下来经过审计发现漏洞的利用方式和常规方法稍有不同,尤其是对于文件上传的漏洞来说,在以前的测试中主要集中在图片附件之类的地

Potato家族本地提权细节

本文结合POC源码,研究Potato家族本地提权细节 Feature or vulnerability 该提权手法的前提是拥有SeImpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限,以下

一次对参数编码混淆越权的尝试

一、前言 当你进行越权测试遇到参数被混淆编码时是简单的尝试然后放弃,还是和他杠上?,本文将介绍一次对某系统某参数有混淆编码的越权尝试。 二、越权尝试 1、登录某系统,点击保存 2、使用burp抓包,发现key参数: RuYW1lPVRfW

CVE-2017-16995复现与分析

CVE-2017-16995复现与分析 前言 CVE-2017-16995是一个内核提权漏洞,最近PWN2OWN爆出了一个ebpf模块相关的提权漏洞,因此打算系统地学习一下ebpf这个内核模块,并复现和分析与之相关的内核漏洞,之前先知已经有

Bug Bounty:$20000 Facebook DOM XSS

window.postMessage()方法保证窗口对象之间的安全跨域通信;例如,在页面和它产生的弹出窗口之间,或者在页面和嵌入其中的iFrame之间。 更多关于window.postMessage()方法的知识可以查阅Mozilla Po

CVE-2020-11108: How I Stumbled into a Pi-hole RCE+LPE

原文地址:https://frichetten.com/blog/cve-2020-11108-pihole-rce/ 以下是CVE-2020-11108的writeup,Pi-hole Web应用程序的认证用户可以通过CVE-2020-1

VMPwn之温故知新

VMPwn之温故知新 前言 VMPwn泛指实现一些运算指令来模拟程序运行的Pwn题。去年十二月的时候跟着0xC4m3l师傅的文章系统学习了一下VMPwn,到今天发现VMPwn已经成了一个主流的出题方向,在去年的上海大学生网络安全大赛和红帽杯

浅析域渗透中的组策略利用

浅析域渗透中的组策略利用 0x0 前言 最近在实战过程和比赛过程都遇到了这个点,发现攻击面其实挺宽广的,这里记录下自己的分析和学习过程。 0x1 多域环境 test.local 域 DC: 10.211.55.38 win2012 Admi

Thinkphp5代码执行学习

缓存类RCE 版本 5.0.0<=ThinkPHP5<=5.0.10 Tp框架搭建 环境搭建 测试payload ?username=syst1m%0d%0a@eval($_GET[_]);// 可以看到已经写入了缓存 漏洞分析 think

XPATH注入学习

0x00、前言 转眼这学期上完就要找实习了,在网上找了一些面经来看,看到有问到xpath注入的情况。发现对自己xpath注入的了解仅局限于做了墨者学院的xpath注入靶场的常规注入,对xpath注入的权限绕过和盲注并不了解,以下为这次学习的

codeql学习——污点分析

本文主要内容有: 如何查找函数调用 如何查找属性使用 如何进行数据流分析 寻找fastjson jndi反序列化链 Workshop 学习 这部分是学习这个codeql的workshop的笔记。Struts 有个漏洞 CVE-2017-98