哥斯拉Godzilla使用中基于PHP的加密流量分析

转载于:https://blog.csdn.net/zlloveyouforever/article/details/129189396
哥斯拉Godzilla简介

据说是护网期间,各大厂商的waf不断在静态查杀、流量通信等方面对webshell进行拦截,众红队急需一款优秀的权限管理工具 , 虽说冰蝎3.0也不错 , 但是还是多多少少有一点bug的。于是@BeichenDream决定公开他所开发的一款shell权限管理工具,名为"哥斯拉"Godzilla。

相较于其他同类型工具的特点

  • 哥斯拉全部类型的shell均过市面所有静态查杀
  • 哥斯拉流量加密过市面全部流量waf
  • 哥斯拉的自带的插件是冰蝎、蚁剑不能比拟的

下载

http 复制代码
github地址:https://github.com/BeichenDream/Godzilla/releases
     
     
     

实验过程

首先使用哥斯拉生成一个马

内容如下简单粗暴

设置好代理尝试添加连接

点击测试连接后会发起三个POST请求

第一个请求没有携带cookie,但是设置了session,在之后的数据包中都会携带该session

第一个请求中需要关注的key值如下:

将其利用解密脚本进行解密

解密原理:从pass=编码数据中提取数据,依次URL解码和base64解码,再与shell密钥(如上生成马时key的md5值前16位字符为3c6e0b8a9c15224a)按位异或即可得到原始请求数据。

见上,哥斯拉第一次连接shell时,将这些函数定义发送给服务器并存储在session中,后续的shell操作只需要发送函数名称以及对应的函数参数即可。包含run,bypass_open_basedir,formatParameter,evalFunc等二十多个功能函数,具备代码执行、文件操作、数据库操作等诸多功能。

如上是第二个请求,将其进行解密:

plaintext 复制代码
     
     
     
      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           methodName\x02\x04\x00\x00\x00test  //请求内容
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           Ok   //返回内容
          
          
          
         
         
         

     

     
     
     

第2个POST请求实际上是向服务器提交了原始数据为methodName=test的加密数据,如果服务器返回值(解密后)为ok,则说明shell测试连接成功。

如上是第三个请求,和第二个请求略微不同。将其进行解密:

plaintext 复制代码
     
     
     
      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           methodName\x02\x07\x00\x00\x00g_close
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           ok
          
          
          
         
         
         

     

     
     
     

第三个请求和第二个请求类似,是测试连接时弹出success点击确认才会发起的请求.


进入连接

进入连接时会发起三个POST请求,前两个类似与上述前两个请求

如上是进入连接时发起的第三个请求.将其进行解密:

http 复制代码
     
     
     
      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           methodName\x02\r\x00\x00\x00getBasicsInfo
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           OsInfo : Windows NT LAPTOP-V7JUK7HN 10.0 uild 19044 (Windows 10) AMD64\nCurrentUser : \xe5\xa5\xa5\xe7\x89\x9\xe6\x9\xc\xe7\x9a\x84\xe5\x0\x8f\xe6\x80\xaa\xe5\x85\xd\nREMOTE_ADDR : 127
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           .0.0.1\nREMOTE_PORT : 13365\nHTTP_X_FORWARDED_FOR : \nHTTP_CLIENT_IP : \nSERVER_ADDR : 127.0.0.1\nSERVER_NAME : 127.0.0.1\nSERVER_PORT : 80\ndisale_functions : \nOpen_asedir : \ntimezo
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           ne : Asia/Shanghai\nencode : \nextension_dir : D:\\phpstudy\\phpstudy_pro\\Extensions\\php\\php7.3.4nts\\ext\nsystempdir : C:\\WINDOWS/\ninclude_path : .;C:\\php\\pear\nDOCUMENT_ROOT :
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
            D:/phpstudy/phpstudy_pro/WWW\nPHP_SAPI : cgi-fcgi\nPHP_VERSION : 7.3.4\nPHP_INT_SIZE : 8\nProcessArch : x64\nPHP_OS : WINNT\ncanCallGzipDecode : 1\ncanCallGzipEncode : 1\nsession_name
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
            : PHPSESSID\nsession_save_path : D:\\phpstudy\\phpstudy_pro\\Extensions\\tmp\\tmp\nsession_save_handler : files\nsession_serialize_handler : php\nuser_ini_filename : .user.ini\nmemory
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           _limit : 256M\nupload_max_filesize : 100M\npost_max_size : 100M\nmax_execution_time : 0\nmax_input_time : 60\ndefault_socket_timeout : 60\nmygid : 0\nmypid : 19680\nSERVER_SOFTWAREypid
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
            : Apache/2.4.39 (Win64) OpenSSL/1.1.1 mod_fcgid/2.3.9a mod_log_rotate/1.02\nloaded_extensions : Core,cmath,calendar,ctype,date,filter,hash,iconv,json,SPL,pcre,readline,Reflection,sess
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           ion,standard,mysqlnd,tokenizer,zip,zli,lixml,dom,PDO,openssl,SimpleXML,xml,wddx,xmlreader,xmlwriter,cgi-fcgi,curl,fileinfo,gd,mstring,mysqli,Phar,pdo_mysql,pdo_sqlite\nshort_open_tag :
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
            true\nasp_tags : false\nsafe_mode : false\nCurrentDir : D:/phpstudy/phpstudy_pro/WWW/p/vul/unsafeupload/uploads\nFileRoot : C:/;D:/;F:/;\n
          
          
          
         
         
         

     

     
     
     

即请求报文为获取服务器基础信息的命令getBasicsInfo,返回包中是服务器的基础信息.


命令执行

如下在终端输入命令whoami

发起了单个请求如下:

将其解密:

稍微改进一下脚本:

plaintext 复制代码
     
     
     
      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           cmdLineUcmd /c "cd /d "D:/phpstudy/phpstudy_pro/WWW/p/vul/unsafeupload/uploads/"&whoami"2>&1methodName
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           execCommand
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           laptop-v7juk7hn\\\x0\xc2\xcc\xd8\xc2\xfc\x5\xc4\xd0\xa1\x9\xd6\xca\xde\r\n
          
          
          
         
         
         

     

     
     
     

即在该路径下执行命令whoami。Cmdline创建一个命令行解析器,值是路径和具体命令,methodName参数的值为execCommand,即执行命令。返回内容即执行命令的回显,如上是存在webshell的服务器当前用户名laptop-v7juk7hn。


点击刷新

进行解密:

http 复制代码
     
     
     
      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           methodNamegetFiledirName8D:/phpstudy/phpstudy_pro/WWW/p/vul/unsafeupload/uploads/
          
          
          
         
         
         

      
* 
         
         
         
          
          
          
         
         
         

         
         
         

          
          
          
           
           ok\nD:/phpstudy/phpstudy_pro/WWW/p/vul/unsafeupload/uploads//\nshell.php\t1\t2022-11-07 21:37:56\t30\tRW\n
          
          
          
         
         
         

     

     
     
     

methodName是参数,getFiledirName是一个方法,获取指定路径下的所有文件名,返回内容即ok,后接该路径下存在的文件以及当前时间。


上传文件

如下上传一个fscan工具:

发起单个请求如下:

由于数据过于庞大,所以请求数据没有进行解密。猜测key的内容就是这个工具的加密数据,返回包解密即为ok.

总结

哥斯拉的大部分操作都是单请求命令,例如文件管理中的文件浏览功能,命令执行功能,刷新功能等等。部分命令是多请求命令,例如通过插件实现的功能大部分都是多请求命令。


哥斯拉的流量特征
  • Cookie (强特征)

在请求包的Cookie中有一个非常致命的特征,最后的分号。标准的HTTP请求中最后一个Cookie的值是不应该出现;的,这个可以作为现阶段的一个辅助识别特征。

  • 响应体特征 (强特征)

从代码可以看到会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。整个响应包的结构体征为:md5前十六位+base64+md5后十六位。

  • 连接特征(强特征)

请求1:发送一段固定代码(payload),返回内容为空;

请求2:发送一段固定代码(test),返回内容为固定字符串,如下

http 复制代码
72a9c691ccdaab98fL1tMGI4YTljO/79NDQm7r9PZzBiOA==b4c4e1f6ddd2a488
     
     
     

解密后即为ok。如果连接失败返回内容为空,且不发起请求3;

请求3:发送一段固定代码(getBacisInfo),返回内容为固定字符串;

补充:使用哥斯拉时点击测试连接会立即发起请求1和2,如果弹出success并点击确认会立即发起请求3,同理,测试结果失败则不会发起请求3并且请求2的返回内容为空。直接添加连接而不测试连接则不会发起任何请求,当进入连接或其他操作时会优先发起请求1和请求2,连接失败会提示初始化失败,不会发起请求3且请求2的返回内容为空。

  • 请求中Accept和响应中Cache-Control字段(弱特征)

所有请求中Accept:

http 复制代码
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
     
     
     

所有响应中Cache-Control:

http 复制代码
no-store, no-cache, must-revalidate
     
     
     

以上两个字段都可以修改,所以作为弱特征参考。

相关推荐
一个通信老学姐8 小时前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
力姆泰克9 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克9 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬10 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
转世成为计算机大神10 小时前
网关 Spring Cloud Gateway
java·网络·spring boot·1024程序员节
paopaokaka_luck10 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节
幼儿园园霸柒柒11 小时前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节
好想有猫猫11 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
2403_8757368711 小时前
道品科技的水肥一体化智能灌溉:开启现代农业的创新征程
大数据·人工智能·1024程序员节
小言从不摸鱼13 小时前
【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
人工智能·深度学习·神经网络·机器学习·自然语言处理·transformer·1024程序员节