honeypots

qeeqboxAGPL-3.0更新放缓

一个 Python 包集成 30 种协议蜜罐,覆盖 SSH、MySQL、Redis、SMB 等常见服务,用来诱捕攻击、记录凭据并辅助恶意软件与网络流量分析。

30 different honeypots in one package! (dhcp, dns, elastic, ftp, http proxy, https proxy, http, https, imap, ipp, irc, ldap, memcache, mssql, mysql, ntp, oracle, pjl, pop3, postgres, rdp, redis, sip, smb, smtp, snmp, socks5, ssh, telnet, vnc)

暂无版本988star143fork同步于 2026-11-07 07:34 UTC

怎么上手

由 README 提炼,执行前请确认
pip3 install honeypots
sudo -E python3 -m honeypots --setup ssh --options capture_commands
硬件要求按 README 说明

README 未说明显存或 GPU 要求;部分端口绑定需较高权限,用 --auto 随机端口则无需高权限

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

一个 PyPI 包集成 30 种蜜罐,用于监控网络流量、机器人活动和账号密码凭据

一个 Python 包集成 30 种协议蜜罐,覆盖 SSH、MySQL、Redis、SMB 等常见服务,用来诱捕攻击、记录凭据并辅助恶意软件与网络流量分析。

核心能力

  • 单包集成 30 种协议蜜罐,含 SSH、MySQL、Redis、RDP 等
  • 支持对象调用或命令行直接启动,1-2 秒即可拉起一个蜜罐
  • 日志可输出到文件、终端、Syslog、Postgres 或 SQLite
  • 可同时启动多个同类型蜜罐实例,支持随机端口免高权限
  • 用 capture_commands 选项捕获攻击者完整命令与数据

容易踩的坑

绑定 22、80 等默认端口需 sudo 或高权限,否则改用 --auto 随机端口;--port 不能用于多蜜罐同时启动;依赖 twisted、impacket、paramiko 等多个包,需一并接受其许可条款

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    30 low-high level honeypots in a single PyPI package for monitoring network traffic, bots activities, and username \ password credentials.

    Why honeypots package is very powerful?

    The honeypots respond back, non-blocking, can be used as objects, or called directly with the in-built auto-configure scripts! Also, they are easy to set up and customize; it takes 1-2 seconds to spin a honeypot up. You can spin up multiple instances with the same type. For easy integration, the output can be logged to a Postgres database, file[s], terminal, or Syslog.

    This honeypots package is the only package that contains all the following: dhcp, dns, elastic, ftp, http proxy, https proxy, http, https, imap, ipp, irc, ldap, memcache, mssql, mysql, ntp, oracle, pjl, pop3, postgres, rdp, redis, sip, smb, smtp, snmp, socks5, ssh, telnet, vnc.

    Honeypots is in the awesome telekom security T-Pot project!

    New

    • Add capture_commands to options for capturing more information about the threat source (Look at the table if it's supported or not)

    Easy!

    Install

    pip3 install honeypots
    

    honeypots -h

    Qeeqbox/honeypots customizable honeypots for monitoring network traffic, bots activities, and username\password credentials
    
    Arguments:
      --setup               target honeypot E.g. ssh or you can have multiple E.g ssh,http,https
      --list                list all available honeypots
      --kill                kill all honeypots
      --verbose             Print error msgs
    
    Honeypots options:
      --ip                  Override the IP
      --port                Override the Port (Do not use on multiple!)
      --username            Override the username
      --password            Override the password
      --config              Use a config file for honeypots settings
      --options             Extra options (capture_commands for capturing all threat actor data)
    
    General options:
      --termination-strategy {input,signal} Determines the strategy to terminate by
      --test                Test a honeypot
      --auto                Setup the honeypot with random port
    

    Usage Example - Auto configuration with default ports

    honeypot, or multiple honeypots separated by comma or word all

    sudo -E python3 -m honeypots --setup ssh --options capture_commands
    

    Usage Example - Auto configuration with random port (No need for higher privileges)

    honeypot, or multiple honeypots separated by comma or word all

    python3 -m honeypots --setup ssh --auto
    

    Usage Example - Auto configure with specific ports (You might need for higher privileges)

    Use as honeypot:port or multiple honeypots as honeypot:port,honeypot:port

    sudo -E python3 -m honeypots --setup imap:143,mysql:3306,redis:6379
    

    Usage Example - Custom configure with logs location

    honeypot, or multiple honeypots in a dict

    sudo -E python3 -m honeypots --setup ftp --config config.json
    
    config.json (Output to folder and terminal)
    {
      "logs": "file,terminal,json",
      "logs_location": "/var/log/honeypots/",
      "syslog_address": "",
      "syslog_facility": 0,
      "postgres": "",
      "sqlite_file":"",
      "db_options": [],
      "sniffer_filter": "",
      "sniffer_interface": "",
      "honeypots": {
        "ftp": {
          "port": 21,
          "ip": "0.0.0.0",
          "username": "ftp",
          "password": "anonymous",
          "log_file_name": "ftp.log",
          "max_bytes": 10000,
          "backup_count": 10,
          "options":["capture_commands"]
        }
      }
    }
    
    config.json (Output to syslog)
    {
      "logs": "syslog",
      "logs_location": "",
      "syslog_address": "udp://localhost:514",
      "syslog_facility": 3,
      "postgres": "",
      "sqlite_file":"",
      "db_options": [],
      "sniffer_filter": "",
      "sniffer_interface": "",
      "honeypots": {
        "ftp": {
          "port": 21,
          "ip": "0.0.0.0",
          "username": "test",
          "password": "test",
          "options":["capture_commands"]
        }
      }
    }
    
    
    config.json (Output to Postgres db)
    {
        "logs": "db_postgres",
        "logs_location": "",
        "syslog_address":"",
        "syslog_facility":0,
        "postgres":{
            "username":"postgres",
            "password":"test",
            "hostname":"192.168.2.20",
            "port":"5432",
            "db":"honeypots"
        },
        "sqlite_file":"",
        "db_options":["drop"],
        "sniffer_filter": "",
        "sniffer_interface": "",
        "honeypots": {
            "ftp": {
                "port": 21,
                "username": "test",
                "password": "test"
            }
        }
    }
    
    config.json (Output to sqlite db)
    {
        "logs": "db_sqlite",
        "logs_location": "",
        "syslog_address":"",
        "syslog_facility":0,
        "postgres":"",
        "sqlite_file":"/home/test.db",
        "db_options":["drop"],
        "sniffer_sniffer_filter": "",
        "sniffer_interface": "",
        "honeypots": {
            "ftp": {
                "port": 21,
                "username": "test",
                "password": "test",
                "options":["capture_commands"]
            }
        }
    }
    

    db structure

    [
      {
        "id": 1,
        "date": "2021-11-18 06:06:42.304338+00",
        "data": {
          "server": "ftp_server",
          "action": "process",
          "status": "success",
          "ip": "0.0.0.0",
          "port": "21",
          "username": "test",
          "password": "test"
        }
      }
    ]
    

    Usage Example - Import as object and auto test

    from honeypots import QSSHServer
    qsshserver = QSSHServer(port=9999)
    qsshserver.run_server(process=True)
    qsshserver.test_server(port=9999)
    INFO:chameleonlogger:['servers', {'status': 'success', 'username': 'test', 'src_ip': '127.0.0.1', 'server': 'ssh_server', 'action': 'login', 'password': 'test', 'src_port': 38696}]
    qsshserver.kill_server()
    

    Usage Example - Import as object and test with external ssh command

    #you need higher user permissions for binding\closing some ports
    
    from honeypots import QSSHServer
    qsshserver = QSSHServer(port=9999)
    qsshserver.run_server(process=True)
    
    ssh [email protected]
    
    INFO:chameleonlogger:['servers', {'status': 'success', 'username': 'test', 'src_ip': '127.0.0.1', 'server': 'ssh_server', 'action': 'login', 'password': 'test', 'src_port': 38696}]
    qsshserver.kill_server()
    

    All output values

    'error'     :'Information about current error' 
    'server'    :'Server name'
    'timestamp' :'Time in ISO'
    'action'    :'Query, login, etc..'
    'data'      :'More info about the action'
    'status'    :'The return status of the action (success or fail)'
    'dest_ip'   :'Server address'
    'dest_port' :'Server port'
    'src_ip'    :'Attacker address'
    'src_port'  :'Attacker port'
    'username'  :'Attacker username'
    'password'  :'Attacker password'
    

    Current Servers/Emulators

    • QDNSServer
      • Server: DNS
      • Port: 53/udp
      • Lib: Twisted.dns
      • Logs: ip, port
    • QFTPServer
      • Server: FTP
      • Port: 21/tcp
      • Lib: Twisted.ftp
      • Logs: ip, port, username and password (default)
      • Options: Capture all threat actor commands and data (available)
    • QHTTPProxyServer
      • Server: HTTP Proxy
      • Port: 8080/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port and data
      • Options: Capture all threat actor commands and data (available)
      • Returns a dummy template by default
        • A custom template can be provided by setting "template" for this server in config.json (should be an absolute path)
    • QHTTPServer
      • Server: HTTP
      • Port: 80/tcp
      • Lib: Twisted.http
      • Logs: ip, port, username and password
      • Options: Capture all threat actor commands and data (available)
    • QHTTPSServer
      • Server: HTTPS
      • Port: 443/tcp
      • Lib: Twisted.https
      • Logs: ip, port, username and password
    • QIMAPServer
      • Server: IMAP
      • Port: 143/tcp
      • Lib: Twisted.imap
      • Logs: ip, port, username and password (default)
      • Options: Capture all threat actor commands and data (available)
    • QMysqlServer
      • Emulator: Mysql
      • Port: 3306/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port, username and password
    • QPOP3Server
      • Server: POP3
      • Port: 110/tcp
      • Lib: Twisted.pop3
      • Logs: ip, port, username and password (default)
      • Options: Capture all threat actor commands and data (available)
    • QPostgresServer
      • Emulator: Postgres
      • Port: 5432/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port, username and password
    • QRedisServer
      • Emulator: Redis
      • Port: 6379/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port, username and password
    • QSMBServer
      • Server: Redis
      • Port: 445/tcp
      • Lib: impacket
      • Logs: ip, port and username
    • QSMTPServer
      • Server: SMTP
      • Port: 25/tcp
      • Lib: Twisted
      • Logs: ip, port, username and password (default)
      • Options: Capture all threat actor commands and data (available)
    • QSOCKS5Server
      • Server: SOCK5
      • Port: 1080/tcp
      • Lib: socketserver
      • Logs: ip, port, username and password
    • QSSHServer
      • Server: SSH
      • Port: 22/tcp
      • Lib: paramiko
      • Logs: ip, port, username and password
      • Options: Capture all threat actor commands and data (available)
    • QTelnetServer
      • Server: Telnet
      • Port: 23/tcp
      • Lib: Twisted
      • Logs: ip, port, username and password
    • QVNCServer
      • Emulator: VNC
      • Port: 5900/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port, username and password
    • QMSSQLServer
      • Emulator: MSSQL
      • Port: 1433/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port, username and password or hash
    • QElasticServer
      • Emulator: Elastic
      • Port: 9200/tcp
      • Lib: http.server
      • Logs: ip, port and data
    • QLDAPServer
      • Emulator: LDAP
      • Port: 389/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port, username and password
    • QNTPServer
      • Emulator: NTP
      • Port: 123/udp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port and data
    • QMemcacheServer
      • Emulator: Memcache
      • Port: 11211/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port and data
    • QOracleServer
      • Emulator: Oracle
      • Port: 1521/tcp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port and connect data
    • QSNMPServer
      • Emulator: SNMP
      • Port: 161/udp
      • Lib: Twisted (low level emulation)
      • Logs: ip, port and data
    • QSIPServer
      • Emulator: SIP
      • Port: 5060/udp
      • Lib: Twisted.sip
      • Logs: ip, port and data
      • Options: Capture all threat actor commands and data (available)
    • QIRCServer
      • Emulator: IRC
      • Port: 6667/tcp
      • Lib: Twisted.irc
      • Logs: ip, port, username and password
      • Options: Capture all threat actor commands and data (available)
    • QPJLServer
      • Emulator: PJL
      • Port: 9100/tcp
      • Lib: Twisted
      • Logs: ip, port
      • Options: Capture all threat actor commands and data (available)
    • QIPPServer
      • Emulator: IPP
      • Port: 631/tcp
      • Lib: Twisted
      • Logs: ip, port
      • Options: Capture all threat actor commands and data (available)
    • QRDPServer
      • Emulator: RDP
      • Port: 3389/tcp
      • Lib: Sockets
      • Logs: ip, port, username and password
      • Options: Capture all threat actor commands and data (available)
    • QDHCPServer
      • Emulator: DHCP
      • Port: 67/udp
      • Lib: Sockets
      • Logs: ip, port

    acknowledgment

    • By using this framework, you are accepting the license terms of all these packages: pipenv twisted psutil dnspython requests impacket paramiko redis mysql-connector pycryptodome vncdotool service_identity requests[socks] pygments http.server
    • Let me know if I missed a reference or resource!

    Notes

    • Almost all servers and emulators are stripped-down - You can adjust that as needed

    Other Projects