2020年5月

Csharp代码混淆/反编译/静态免杀

最近在学习C#的shellcode loader,偶然间发现火绒的特征定的有点狠,如下图:
-w767
火绒真的是,每个特征码定位都是那么独特,可以说360是md5杀毒软件,火绒是关键字杀毒软件(逃。。。。
这么弄真的不会影响到正常开发者吗?
尝试了下,在代码中修改createthread名称就行了,但是程序用不了了,毕竟用的是kernel32.dll的api,都是固定的又不能改api名,正好周五的时候同事也说了下C#
反编译出来就是明文,基本上没什么难度,于是就想办法混淆下pe文件,既能防止一些非二进制人员查看代码,还能绕过火绒。
找到了这个开源.net混淆器:
https://github.com/yck1509/ConfuserEx
首先选择本地输出文件夹和exe文件。
-w840

设置混淆规则。Protections选择anti ildasm,应该是防止IL反编译。因为Ildasm.exe是微软提供的.NET的IL反编译器。
-w1195


点击protect
-w783

-w1866

生成的马使用也没有问题。
-w1019

从落地-执行-复制,都没有被拦截。

这里我在用dnspy反编译下exe查看下原文件和混淆后文件的对比
-w2041

redteam:ssh建立反射建立加密socks

ssh -d 0.0.0.0:1080 root@111.111.111.111 //在本地创建一个socks代理,端口1080
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host 
ssh -C -f -N -g -D listen_port user@Tunnel_Host //将内网ssh机器 

相关参数的解释:
-f Fork into background after authentication.
后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-D port
指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

-C Enable compression.
压缩数据传输。

-N Do not execute a shell or command.
不执行脚本或命令,通常与-f连用。

-g Allow remote hosts to connect to forwarded ports.
在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

ssh -N -f -L vps_port:source_ip:source_port vps_port //端口转发

//建立一个通过123.123.123.123的SOCKS服务器。
ssh -N -f -D 1080 vpsip // 将端口绑定在127.0.0.1上
ssh -N -f -D 0.0.0.0:1080 vpsip // 将端口绑定在0.0.0.0上