Hướng dẫn sử dụng Canarytokens để phát hiện xâm nhập sớm: Đặt bẫy trong file, URL và email

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Khi audit mới thấy: không ai biết mình đang bị theo dõi

Sau khi audit security cho hơn 10 server trong năm qua, mình nhận ra hầu hết đều dính những lỗ hổng quen mặt — SSH mở port 22 ra internet, credential mặc định chưa đổi, file permission lộn xộn. Nhưng điều đáng lo hơn là không ai biết mình đã bị xâm nhập từ bao giờ. Server log chứa đầy connection lạ từ IP Singapore hay Hà Lan, file config bị đọc lúc 3 giờ sáng, mà không có gì lên tiếng. Đến khi phát hiện thì thiệt hại đã xong rồi.

Đây là lý do mình bắt đầu dùng Canarytokens — bẫy thông tin nhúng trong file, URL và email, cảnh báo ngay khi hacker chạm vào trong vòng vài giây, thay vì mấy tuần sau mới hay.

Canarytokens là gì và tại sao nó hoạt động?

Tên “canary” lấy từ tập tục của thợ mỏ thế kỷ 19: mang chim hoàng anh vào hầm. Khí CO tích tụ sẽ giết chim trước khi đủ nồng độ hại người — người thợ kịp rút lui. Đơn giản nhưng cứu mạng.

Canarytokens hoạt động theo cùng nguyên tắc: bạn đặt “bẫy” vào trong file, URL hay email. Khi hacker mở file đó, truy cập URL đó, hay dùng thông tin đó — bạn nhận cảnh báo ngay qua email, kèm IP và thời gian chính xác.

So với IDS/IPS truyền thống, Canarytokens khác ở mấy điểm:

  • Không cần cài phần mềm — tạo token trực tuyến trong 2 phút, paste vào file là xong
  • Zero false positive: chỉ cảnh báo khi có người thực sự truy cập, không bao giờ báo nhầm
  • Hoạt động ngay cả khi attacker đã vượt qua firewall và đang ở bên trong mạng
  • Miễn phí hoàn toàn qua canarytokens.org — không cần credit card, không giới hạn số token

Các loại Canarytoken phổ biến

  • HTTP URL — URL mồi, cảnh báo khi bị truy cập
  • DNS Token — domain giả, cảnh báo khi bị resolve
  • Word/Excel Document — file Office có tracking pixel ẩn, cảnh báo khi bị mở
  • PDF Document — tương tự Word
  • AWS API Key — key giả, cảnh báo khi bị thử với AWS CLI
  • Custom Image — ảnh nhúng vào email hoặc trang web, cảnh báo khi load

Thực hành: Tạo và triển khai Canarytoken từng bước

Bước 1: Tạo token tại canarytokens.org

Truy cập https://canarytokens.org/generate. Không cần tài khoản, không cần email xác nhận. Giao diện thẳng vào việc:

  1. Chọn loại token — bắt đầu với Web bug / URL token
  2. Nhập email nhận cảnh báo
  3. Thêm reminder note — ghi rõ token này đặt ở đâu (ví dụ: “File backup /var/backups/credentials.txt”)
  4. Click Create my Canarytoken

Bạn nhận ngay một URL dạng:

https://canarytokens.org/articles/about/PFhzfmMyXXXXXX/contact.php

Bước 2: Nhúng token vào file credentials giả

Cách hiệu quả nhất là tạo file trông có vẻ quan trọng rồi nhúng URL token vào. Đặt ở những chỗ hacker lùng sục đầu tiên:

# Tạo file bẫy trong thư mục backup
cat > /var/backups/credentials_backup.txt << 'EOF'
# Database Credentials Backup — DO NOT SHARE
# Last updated: 2024-01-15

[Production DB]
host: prod-db.internal
user: admin_backup
password: [REDACTED - see internal wiki]

[Verification URL - internal only]
https://canarytokens.org/articles/about/PFhzfmMyXXXXXX/contact.php

[Notes]
- Rotate password every 90 days
- Contact: [email protected]
EOF

chmod 600 /var/backups/credentials_backup.txt

Khi hacker thấy file này và thử truy cập URL “xác minh”, email cảnh báo về ngay — kèm IP, User-Agent và timestamp chính xác.

Bước 3: Đặt bẫy trong file .env hoặc config

Đây là kỹ thuật mình thấy đánh trúng nhất trong thực tế. Vào server xong, attacker gần như luôn chạy ngay mấy lệnh này:

find / -name "*.env" 2>/dev/null
find / -name ".env*" 2>/dev/null
cat /home/*/.env

Tạo một file .env.backup giả với token nhúng bên trong:

# /home/deploy/.env.backup — file bẫy
DATABASE_URL=postgres://admin:supersecret@prod-db:5432/app
SECRET_KEY=sk_live_abc123xyz789...
INTERNAL_API_ENDPOINT=https://canarytokens.org/articles/about/TOKEN_HERE/contact.php
REDIS_URL=redis://cache:6379/0
STRIPE_SECRET_KEY=sk_live_51Hxxxx...

Script tự động của attacker thường curl tất cả URL tìm thấy trong file — cảnh báo về ngay, trước khi chúng kịp làm gì tiếp theo.

Bước 4: Tạo bẫy bằng Word Document

Token loại MS Word Document cho ra file .docx có tracking pixel ẩn bên trong. Khi ai mở, Word tự gọi về server của Canarytokens — cảnh báo kèm địa chỉ IP, kể cả khi máy nạn nhân chạy Windows và đang kết nối internet.

Đặt file bẫy ở những vị trí hấp dẫn:

cp server_passwords_master.docx /home/admin/Documents/
cp employee_salaries_2024.xlsx /var/www/html/private/
cp vpn_accounts_backup.docx /opt/backups/docs/

Tên file phải trông hấp dẫn: passwords_list.docx, credentials_master.xlsx, aws_keys_backup.docx. Bất kỳ hacker nào gặp cũng muốn mở ngay.

Bước 5: Sử dụng DNS Token cho tầng sâu hơn

DNS token hoạt động ở tầng thấp hơn HTTP — ngay cả tool không có browser, DNS lookup vẫn xảy ra khi thử kết nối. Đây là lý do nó khó né hơn URL token thông thường.

Sau khi tạo DNS token, bạn nhận subdomain dạng abc123xyz.canarytokens.org. Nhúng vào file config:

# /etc/app/database.conf — file bẫy
[primary]
host = prod-db.abc123xyz.canarytokens.org
port = 5432
name = production_db
user = db_admin

[replica]
host = replica.abc123xyz.canarytokens.org
port = 5432

Attacker import config này rồi ping thử hoặc chạy app — DNS lookup kích hoạt cảnh báo ngay, trước cả khi kết nối được thiết lập.

Bước 6: Tự host Canarytokens (nâng cao)

Không muốn dùng service bên ngoài vì lý do privacy hay compliance? Canarytokens có Docker image để tự deploy:

git clone https://github.com/thinkst/canarytokens
cd canarytokens

# Cấu hình
cp templates/switchboard.env.example switchboard.env
nano switchboard.env
# Điền: CANARY_DOMAINS=yourdomain.com
# Điền: CANARY_NXDOMAINS=yourdomain.com
# Điền: [email protected]

docker-compose up -d

Self-hosted phù hợp cho môi trường doanh nghiệp cần toàn quyền kiểm soát dữ liệu — không muốn thông tin trigger gửi về server bên thứ ba.

Cảnh báo thực tế trông như thế nào?

Token bị kích hoạt, email về trong vài giây:

Subject: [Canarytoken Alert] Your token has been triggered!

Token:    Web bug / URL token
Reminder: credentials_backup.txt in /var/backups/

Time:       2024-01-20 03:47:22 UTC
IP Address: 45.33.32.156
ISP:        DigitalOcean, LLC
Location:   Singapore, SG
User-Agent: curl/7.68.0

IP từ Singapore, lúc 3 giờ sáng, dùng curl thay vì browser. Không cần thêm bằng chứng nào nữa. Bạn có đủ thông tin để bắt đầu ngay: block IP, revoke credentials, kiểm tra access log quanh timestamp đó.

Kết luận: 15 phút thiết lập, cảnh báo cả năm

Canarytokens không thay thế firewall hay IDS. Nhưng nó lấp đầy khoảng trống lớn nhất mà các công cụ đó bỏ qua: cảnh báo khi attacker đã vào bên trong và đang lục lọ tài sản của bạn.

Mình khuyến nghị đặt ít nhất 4-5 token trên mỗi server quan trọng:

  • 1 file .env.backup giả trong thư mục home của các user có quyền cao
  • 1 file credentials trong /var/backups/ hoặc /opt/backups/
  • 1 Word document với tên hấp dẫn trong thư mục Documents/shared
  • 1 DNS token nhúng trong file config ít dùng nhưng dễ tìm thấy
  • 1 HTTP token trong file README hoặc NOTES của repo nội bộ

15-20 phút setup, hoàn toàn miễn phí. Một lần có người kích hoạt token lúc 3 giờ sáng và bạn nhận cảnh báo ngay — thay vì phát hiện breach 3 tuần sau — bạn sẽ hiểu tại sao đây là thứ mình luôn deploy đầu tiên khi nhận server mới.

Share: