Перейти к основному содержанию
Используйте этот гайд, чтобы развернуть легковесные deception-контроли и получать ранние алерты, когда кто-то трогает активы, к которым не должно быть доступа.
Часть информации адаптирована из virtualize.link.
Проверьте оригинальный репозиторий-источник.

Canary tokens

Canary tokens работают как датчики движения для сетей, endpoint-узлов и облачной инфраструктуры. Вы размещаете их там, где легитимного доступа быть не должно, и получаете алерт при открытии/срабатывании. Они специально выглядят привлекательно для атакующего и повышают шанс взаимодействия. Примеры:
  • QR-код с именем wallet.png
  • Microsoft Excel файл с именем passwords.xlsx
  • Microsoft Word файл с именем servers.docx
  • AWS key-файл с именем aws-keys.txt
  • Конфигурация WireGuard VPN
  • PDF-файл с именем investments.pdf

Контейнер honeypot OpenCanary

OpenCanary — это многопротокольный сетевой honeypot с низким потреблением ресурсов. Используйте его для обнаружения lateral movement после компрометации периметра.

Конфигурация

  • Сохраните конфиг как opencanary.conf.
  • Отключите или переназначьте порты, которые уже заняты.
  • Обновите webhook URL, чтобы алерты приходили в вашу систему уведомлений.
opencanary.conf
{
  "device.node_id": "opencanary-server",
  "ip.ignorelist": [],
  "logtype.ignorelist": [],
  "git.enabled": true,
  "git.port": 9418,
  "ftp.enabled": true,
  "ftp.port": 21,
  "ftp.banner": "FTP server ready",
  "ftp.log_auth_attempt_initiated": false,
  "http.banner": "Apache/2.2.22 (Ubuntu)",
  "http.enabled": true,
  "http.port": 80,
  "http.skin": "nasLogin",
  "http.skin.list": [
    {
      "desc": "Plain HTML Login",
      "name": "basicLogin"
    },
    {
      "desc": "Synology NAS Login",
      "name": "nasLogin"
    }
  ],
  "http.log_unimplemented_method_requests": false,
  "http.log_redirect_request": false,
  "https.enabled": true,
  "https.port": 443,
  "https.skin": "nasLogin",
  "https.certificate": "/etc/ssl/opencanary/opencanary.pem",
  "https.key": "/etc/ssl/opencanary/opencanary.key",
  "httpproxy.enabled": true,
  "httpproxy.port": 8080,
  "httpproxy.skin": "squid",
  "httproxy.skin.list": [
    {
      "desc": "Squid",
      "name": "squid"
    },
    {
      "desc": "Microsoft ISA Server Web Proxy",
      "name": "ms-isa"
    }
  ],
  "llmnr.enabled": false,
  "llmnr.query_interval": 60,
  "llmnr.query_splay": 5,
  "llmnr.hostname": "DC03",
  "llmnr.port": 5355,
  "logger": {
    "class": "PyLogger",
    "kwargs": {
      "formatters": {
        "plain": {
          "format": "%(message)s"
        },
        "syslog_rfc": {
          "format": "opencanaryd[%(process)-5s:%(thread)d]: %(name)s %(levelname)-5s %(message)s"
        }
      },
      "handlers": {
        "console": {
          "class": "logging.StreamHandler",
          "stream": "ext://sys.stdout"
        },
        "Webhook": {
          "class": "opencanary.logger.WebhookHandler",
          "url": "https://ntfy.domain.com/topic",
          "method": "POST",
          "data": "%(message)s",
          "status_code": 200,
          "ignore": ["Added service from class", "Canary running", "startYourEngines"],
          "headers": {
            "Title": "OpenCanary"
          }
        }
      }
    }
  },
  "portscan.enabled": true,
  "portscan.ignore_localhost": false,
  "portscan.logfile": "/var/log/kern.log",
  "portscan.synrate": 5,
  "portscan.nmaposrate": 5,
  "portscan.lorate": 3,
  "portscan.ignore_ports": [],
  "smb.auditfile": "/var/log/samba-audit.log",
  "smb.enabled": true,
  "mysql.enabled": true,
  "mysql.port": 3306,
  "mysql.banner": "5.5.43-0ubuntu0.14.04.1",
  "mysql.log_connection_made": false,
  "ssh.enabled": true,
  "ssh.port": 22,
  "ssh.version": "SSH-2.0-OpenSSH_5.1p1 Debian-4",
  "redis.enabled": true,
  "redis.port": 6379,
  "rdp.enabled": true,
  "rdp.port": 3389,
  "sip.enabled": true,
  "sip.port": 5060,
  "snmp.enabled": true,
  "snmp.port": 161,
  "ntp.enabled": true,
  "ntp.port": 123,
  "tftp.enabled": true,
  "tftp.port": 69,
  "tcpbanner.maxnum": 10,
  "tcpbanner.enabled": true,
  "tcpbanner_1.enabled": true,
  "tcpbanner_1.port": 8001,
  "tcpbanner_1.datareceivedbanner": "",
  "tcpbanner_1.initbanner": "",
  "tcpbanner_1.alertstring.enabled": false,
  "tcpbanner_1.alertstring": "",
  "tcpbanner_1.keep_alive.enabled": false,
  "tcpbanner_1.keep_alive_secret": "",
  "tcpbanner_1.keep_alive_probes": 11,
  "tcpbanner_1.keep_alive_interval": 300,
  "tcpbanner_1.keep_alive_idle": 300,
  "telnet.enabled": true,
  "telnet.port": 23,
  "telnet.banner": "",
  "telnet.honeycreds": [
    {
      "username": "admin",
      "password": "$pbkdf2-sha512$19000$bG1NaY3xvjdGyBlj7N37Xw$dGrmBqqWa1okTCpN3QEmeo9j5DuV2u1EuVFD8Di0GxNiM64To5O/Y66f7UASvnQr8.LCzqTm6awC8Kj/aGKvwA"
    },
    {
      "username": "admin",
      "password": "admin1"
    }
  ],
  "telnet.log_tcp_connection": false,
  "mssql.enabled": true,
  "mssql.version": "2012",
  "mssql.port": 1433,
  "vnc.enabled": true,
  "vnc.port": 5000
}

Docker Compose

  • Удалите или переназначьте порты, которые уже заняты.
  • Обновите путь монтирования к вашему локальному opencanary.conf.
compose.yaml
services:
  opencanary:
    image: thinkst/opencanary
    container_name: opencanary
    volumes:
      - /path/to/opencanary/opencanary.conf:/root/.opencanary.conf
    ports:
      # FTP
      - "21:21"
      # SSH
      - "22:22"
      # Telnet
      - "23:23"
      # TFTP
      - "69:69"
      # HTTP
      - "80:80"
      # NTP
      - "123:123"
      # SNMP
      - "161:161"
      # HTTPS
      - "443:443"
      # MSSQL
      - "1433:1433"
      # MYSQL
      - "3306:3306"
      # RDP
      - "3389:3389"
      # VNC
      - "5000:5000"
      # SIP
      - "5060:5060"
      # REDIS
      - "6379:6379"
      # TCP Banner
      - "8001:8001"
      # HTTP Proxy
      - "8080:8080"
      # Git
      - "9418:9418"
    restart: unless-stopped