冰蝎的通信过程可以分为两个阶段:
密钥协商
加密传输
1.
第一阶段
-
密钥协商
1
)攻击者通过
GET
或者
POST
方法,形如
http://xxxxx/shell.php?pass=645
的请求服务
器密钥;
2
)服务器使用随机数
MD5
的高
16
位作为密钥,存储到会话的
$_SESSION
变量中,并返回密钥给
攻击者。
2.
第二阶段
-
加密传输
1
)客户端把待执行命令作为输入,利用
AES
算法或
XOR
运算进行加密,并发送至服务端;
2
)服务端接受密文后进行
AES
或
XOR
运算解密,执行相应的命令;
3
)执行结果通过
AES
加密后返回给攻击者。
冰蝎重要的一点是流量特征(如果是做网络安全会问到):
Accept
字段
Content-Type
User-agent
端口
PHP webshell
中存在固定代码
长连接
固定的请求头和响应头
连接密码