免杀系列 NPS代理免杀 + 二开思路

admin 2024年7月4日12:32:59评论6 views字数 1767阅读5分53秒阅读模式
 

  工具介绍

NPS是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

这款工具大家应该也使用了很长时间,在使用过程中发现了一些小问题,刚好抽时间优化一下工具的管理端和客户端代码,与大家分享一下。

分析特征

  • 流量特征

Client端与Server建立连接时会先向服务器发送TST携带版本信息进行验证,验证通过后会发送vkey的MD5,验证完成后返回sucs,响应一个main。

免杀系列  NPS代理免杀 + 二开思路

  • 主动探测

根据客户端连接服务端流程,可通过TST加上版本号探测8024端口。在TST携带正确的版本号发送到8024端口上后会返回vkey的md5值,可判断此8024端口为nps使用的端口以及NPS版本号。
免杀系列  NPS代理免杀 + 二开思路
import socketdef send_hex_strings_to_server(host, port, hex_strings):    try:        # 创建 TCP 连接        conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        conn.connect((host, port))        print(f"[*] Connected to {host}:{port}")        for hex_string in hex_strings:            # 将十六进制字符串转换为字节数据            data = bytes.fromhex(hex_string)            conn.sendall(data)            print(f"[*] Sent: {hex_string} (hex) -> {data} (bytes)")        # 接收远程主机返回的信息        response = conn.recv(1024)        print(f"[+] Received: {response.hex()} (hex) -> {response} (bytes)")    except socket.error as e:        print(f"Socket error: {e}")    except Exception as e:        print(f"An error occurred: {e}")    finally:        conn.close()# 远程主机的 IP 地址和端口remote_host = '192.168.26.154'  # 请根据需要更改remote_port = 8024  # 请根据需要更改# 要发送的十六进制字符串hex_strings_to_send = ['545354', '06000000302e32362e30', '07000000302e32362e3130']  # 分别表示 "TST", "1", "2" 的十六进制# 调用函数send_hex_strings_to_server(remote_host, remote_port, hex_strings_to_send)
  • 管理端特征

访问管理IP端口80会返回如下信息。

免杀系列  NPS代理免杀 + 二开思路

访问管理IP端口8080自动转跳登录页面。

免杀系列  NPS代理免杀 + 二开思路

管理IP端口8080其他端口返回beego 1.12.0 Not Found页面。

免杀系列  NPS代理免杀 + 二开思路

特征去除

  • 流量特征去除

在lib/version/version.go中将版本号替换随机字符

免杀系列  NPS代理免杀 + 二开思路

在lib/common/const.go中修改认证参数中的字符串

免杀系列  NPS代理免杀 + 二开思路

  • 主动探测特征去除

消除Version信息以及CONN_TEST特征即可,当然可能会有一些其他主动探测的方法。目前比较安全的方法还是对8024端口配置防火墙策略来防止主动探测。

  • 管理端特征去除

在webstaticpageerror.html中修改title标签与body标签后,可以修改管理端80端口返回信息。

免杀系列  NPS代理免杀 + 二开思路

在webroutersrouter中修代码,添加beego.ErrorHandler()函数代理默认404返回,避免暴露框架。

免杀系列  NPS代理免杀 + 二开思路

在confnps.conf中修改配置,修改账号密码,默认端口,证书,管理端路径,加密key等信息。

免杀系列  NPS代理免杀 + 二开思路

修改后效果

访问管理端80端口,已经去除NPS标志。

免杀系列  NPS代理免杀 + 二开思路

访问修改过后的18080端口,不会自动转跳登录页面。需要输入管理路径才能访问到登录页面。

免杀系列  NPS代理免杀 + 二开思路

免杀效果

  • Defender

免杀系列  NPS代理免杀 + 二开思路

  • Kaspersky

免杀系列  NPS代理免杀 + 二开思路

 

原文始发于微信公众号(TeamSecret安全团队):免杀系列 NPS代理免杀 + 二开思路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月4日12:32:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   免杀系列 NPS代理免杀 + 二开思路https://cn-sec.com/archives/2917904.html

发表评论

匿名网友 填写信息