1.前尘——流量中的源码无法捕捉的蝎子
2.webshell检测与清除
3.WEBshell与文件上传漏洞
4.蚁剑的安装与使用+例题实战CTFwebshell
5.攻防演练的 Webshell 利器冰蝎 V4 是什么原理?
6.一文看懂内存马
前尘——流量中的无法捕捉的蝎子
前言
某日,朋友询问关于冰蝎魔改版本的分析信息,其在执行命令时遭遇拦截。源码借机分析冰蝎源码,分析探寻其特征。源码
冰蝎源码解析
冰蝎采用两端开式设计,分析移动审批app源码其JSP代码引入Java核心库,源码包含加密算法。分析定义一个类U继承自ClassLoader,源码负责加载类文件至JVM环境。分析此设计简化了类加载过程,源码减少代码冗余。分析
获取request对象并判断请求方法是源码否为POST。如果是分析,获取密钥k(默认为连接密码的源码前位MD5值),存入session,使用AES加密算法解密请求内容。
实现AES加密,初始化解密模式,将密钥作为参数传递,解密请求内容。之后,实例化当前类,通过类加载器动态解析解密后内容为class文件。
使用defineClass方法将解密内容动态解析为类文件。此设计使冰蝎在命令执行上具有高度可扩展性,不受传统Runtime类限制。
优势讨论
冰蝎开发者独到之处在于通过类加载机制实现webshell控制,赋予其强大可扩展性。这一设计超越了传统命令执行框架,允许开发者实现更多功能。
客户端分析
客户端采用分层架构设计,包括dao、entity、ui、util和payload模块。sqllite数据库作为核心数据存储层,支持shell管理与记录。
功能实现涵盖创建、删除文件等基本操作。分层架构简化了代码管理与功能扩展。
特征识别
针对冰蝎源码特征分析,强调内容传输类型、user-Agent和接受头的通用性。提及的流传输类型与默认ua头设定为通用配置,不具独特识别价值。
总结
冰蝎源码展示了开发者的tcsh源码深厚功底与设计模式运用,体现出良好的代码组织与模块化设计。然而,数据库设计中存在冗余字段,影响效率与简洁性。此外,session中的特定key作为内存马检测的依据,具有一定识别价值。
webshell检测与清除
要检测和清除webshell,首先需要对网站源代码进行细致的检查。打开浏览器并右键点击网站页面,选择“查看源代码”,在源代码中搜索"iframe",如果发现非网站内的页面被插入,这可能是木马代码的标记。同样地,搜索"script",检查是否有非自己域名下的脚本被注入。如果发现可疑脚本并确认并非自己上传,需要采取行动进行清除。 进行手工删除时,首先通过任务管理器查找运行的未知程序。如果发现陌生程序,使用Windows的文件查找功能定位到该程序所在位置。调出asp网站源码,查看该可执行文件的摘要属性,如无任何信息且自己对此程序不了解,可以怀疑为木马。此时,使用网络搜索引擎查询该文件的相关信息,判断是否为病毒。如果是木马病毒,可将其重命名以阻止其运行。 接着,打开注册表编辑器,检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下的启动项,如果存在可疑项,直接删除。在本地机器的Windows控制面板中,查看“任务计划”是否存在非自己定义的任务。发现此类任务后,查看其执行的可执行文件,重复前面的步骤进行查杀。 通过以上步骤,可以有效地检测并清除webshell。重要的是在日常维护中保持警惕,定期检查网站代码和系统设置,upload源码以防止木马的侵入。同时,加强网站的安全策略,如使用强密码、更新补丁、限制不必要的端口访问等,可以更有效地抵御恶意攻击。扩展资料
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为匿名用户(入侵者)通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。WEBshell与文件上传漏洞
文件上传漏洞的讲解与利用方法
首先,文件上传漏洞的产生通常源自代码中对文件上传功能的过滤不严格,或服务器解析漏洞未得到修复。攻击者可以利用这一漏洞上传任意文件,包括webshell等后门文件,从而控制整个网站。
接着,我们尝试利用无任何防护规则的文件上传漏洞。在DVWA的File Upload页面中,直接上传成功,并得到了上传路径提示。随后,通过蚁剑进行测试连接,验证了漏洞的存在。
面对前端JavaScript校验的文件上传漏洞,我们需绕过其检查。修改马儿的后缀,选择与弹出框中相同的任意一个,以绕过前端的校验。借助Burp Suite拦截修改JPG后缀为PHP,最终实现上传。
对于检测文件MIME类型的文件上传漏洞,通过File Upload2尝试上传。利用Burp Suite修改Content-Type,将其设置为“application/octet-stream”,上传失败。进一步修改为“image/jpeg”或“image/png”,尽管不修改后缀,仍能成功上传。通过欺骗服务器认为文件为JPEG或PNG类型,绕过校验。
服务端黑名单检测文件扩展名的文件上传漏洞,我们来到File Upload3。profisafe 源码尝试直接上传马儿,收到错误提示。尝试上述绕过方法无效。通过查看源码发现,这里使用了黑名单机制,并通过foreach迭代判断是否命中。利用Windows系统搭建服务器,成功绕过大小写敏感问题,上传成功。在Windows环境下,大写或大小写混合后缀皆可通过。
最终,我们通过蚁剑测试连接,成功进入靶机的文件管理界面,验证了漏洞利用的有效性。
蚁剑的安装与使用+例题实战CTFwebshell
蚁剑(AntSword)是一款针对合法授权的安全人员和网站管理员设计的开源跨平台网站管理工具。它的主要功能是进行渗透测试和常规网站管理操作。
获取蚁剑:如果你使用的是Windows 环境,你需要下载蚁剑的加载器和源码。首先,访问github.com/AntSwordProj...下载对应的安装包,加载器和源码文件都是必需的。将它们解压至同一文件夹内。
安装步骤如下:打开加载器,找到AntSword.exe文件并运行。初始化时,选择文件路径为包含源码的antSword-master文件夹,避免选择空目录,因为它会自动下载源码,可能引发错误。初始化完成后,重新启动加载器,即可看到蚁剑的主界面。
在使用过程中,可能会遇到下载或解压问题,这时需要手动设置路径,例如app.js文件所在的目录。另外,Kali Linux用户可能会遇到Segmentation fault问题,可以参考AntSword-Loader #3的解决方案。
在CTF挑战中,小宁将一个PHP一句话木马放入index.php中。webshell是一种黑客利用的后门工具,通常混杂在网站文件中,允许远程控制服务器。webshell可以执行各种操作,-52源码包括在线编辑脚本、上传文件等,但也可能被用于非法入侵。
为避免大马式webshell被检测,一句话木马通过提交简短代码执行服务器上的指令。在蚁剑中,你可以通过右键菜单添加数据,输入URL和连接密码(如"shell"),然后找到flag.txt获取flag。
本文由Zhihu On VSCode创作并发布。
攻防演练的 Webshell 利器冰蝎 V4 是什么原理?
揭示攻防演练中的加密利器:冰蝎V4的神秘原理 在网络安全的攻防演练中,Webshell犹如一把双刃剑,既可能是防御者的演练工具,也可能是攻击者的侵入手段。其中,冰蝎V4作为一款备受关注的新型Webshell管理工具,其独特的动态加密通信机制让其在对抗检测方面表现出色。让我们深入探讨这款工具的工作原理以及它如何在复杂的安全环境中游刃有余。 Webshell,这个术语在黑客术语中就像一个“网马”,是黑客通过利用服务器漏洞植入的恶意脚本,赋予他们对目标服务器的控制权。攻击者通常会利用文件上传、命令执行或反序列化漏洞,巧妙地将Webshell植入服务器,然后通过管理工具进行远程操控,执行诸如权限获取、数据窃取或系统控制等操作。 在众多Webshell管理工具中,冰蝎V4以其Java开发的动态加密通信技术脱颖而出。相较于传统的工具,冰蝎4.0版本的通信加密更为复杂,采用随机数函数生成的动态密钥,使得通信流量难以被传统的流量检测设备识别。它摒弃了传统的连接密码,取而代之的是自定义的传输协议算法,这无疑增加了攻击者在流量伪装上的挑战,使其在威胁狩猎中更具隐蔽性。 哥斯拉和天蝎同样以Java技术为基础,哥斯拉支持多脚本环境并提供多种加密和编码功能,而天蝎则采用JavaFX技术和预共享密钥加密,为隐蔽性和安全性提供了额外保障。AntSword作为开源工具,通过自定义编码器和请求头修改来对抗流量检测,进一步增加了攻击者的灵活性。 然而,Webshell工具不会坐以待毙,它们会利用加密、自定义编码、TLS协议、云函数伪装、正常业务模拟、魔改和源码定制等手段,巧妙地隐藏其恶意活动。这些技术的运用,使得传统的基于字符串匹配和行为分析的检测方法显得力不从心,特别是在加密通信的场景下。 观成瞰云(ENS)-加密威胁智能检测系统正是针对这些挑战而生,它通过深度解析加密和编码特征、多流行为检测、AI模型以及文件上传行为识别,实现了对各类Webshell,无论是否加密,的精准识别。这款系统对于攻防演练中的Webshell管理工具,如冰蝎V4,有着强大的检测能力,帮助防御者在实战环境中保持警惕。 总的来说,理解Webshell的复杂性,尤其是其加密通信技术,是网络安全防御的关键。观成科技安全研究团队持续关注此类工具的动态,以提供更有效的防护策略,确保在攻防演练的舞台上,既能模拟真实威胁,又能抵御真实的攻击挑战。一文看懂内存马
webshell的变迁过程大致如下:
web服务器管理页面——> 大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马
内存马是无文件攻击的一种常用手段,随着攻防演练热度越来越高:攻防双方的博弈,流量分析、EDR等专业安全设备被蓝方广泛使用,传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。
Webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的Webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于Webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。
目标:访问任意url或者指定url,带上命令执行参数,即可让服务器返回命令执行结果
实现:以java为例,客户端发起的web请求会依次经过Listener、Filter、Servlet三个组件,我们只要在这个请求的过程中做手脚,在内存中修改已有的组件或者动态注册一个新的组件,插入恶意的shellcode,就可以达到我们的目的。
根据内存马注入的方式,大致可以将内存马划分为如下两类
1.servlet-api型 通过命令执行等方式动态注册一个新的listener、filter或者servlet,从而实现命令执行等功能。特定框架、容器的内存马原理与此类似,如spring的controller内存马,tomcat的valve内存马 2.字节码增强型 通过java的instrumentation动态修改已有代码,进而实现命令执行等功能。
2.1 Servlet
Servlet 是运行在 Web 服务器或应用服务器上的程序,是作为来自 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。它负责处理用户的请求,并根据请求生成相应的返回信息提供给用户。
2.1.1 Filter
简介
filter也称之为过滤器,是对Servlet技术的一个强补充,其主要功能是在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest ,根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据;在HttpServletResponse到达客户端之前,拦截HttpServletResponse ,根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
基本工作原理
实现
filter的生命周期
filter链 当多个filter同时存在的时候,组成了filter链。web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter。当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法,通过判断FilterChain中是否还有filter决定后面是否还调用filter。
2.1.3 Listener
简介
JavaWeb开发中的监听器(Listener)就是Application、Session和Request三大对象创建、销毁或者往其中添加、修改、删除属性时自动执行代码的功能组件。
用途
可以使用监听器监听客户端的请求、服务端的操作等。通过监听器,可以自动出发一些动作,比如监听在线的用户数量,统计网站访问量、网站访问监控等。
2.2 Tomcat
Tomcat 作为Servlet容器,将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,传递给servlet;同时会将响应的信息封装为HttpServletResponse类型的response对象,然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器。
2.3 其他java背景知识
2.3.1 java反射
2.3.2 java instrumentation
3 内存马实现
使用新增servlet的方式就需要绑定指定的URL。如果我们想要更加隐蔽,做到内存马与URL无关,无论这个url是原生servlet还是某个struts action,甚至无论这个url是否真的存在,只要我们的请求传递给tomcat,tomcat就能相应我们的指令,那就得通过注入新的或修改已有的filter或者listener的方式来实现了。比如早期rebeyond师傅开发的memshell,就是通过修改org.apache.catalina.core.ApplicationFilterChain类的internalDoFilter方法来实现的,后期冰蝎最新版本的内存马为了实现更好的兼容性,选择hook javax.servlet.http.HttpServlet#service 函数,在weblogic选择hook weblogic.servlet.internal.ServletStubImpl#execute 函数。
4 内存马检测与排查
在java中,只有被JVM加载后的类才能被调用,或者在需要时通过反射通知JVM加载。所以特征都在内存中,表现形式为被加载的class。需要通过某种方法获取到JVM的运行时内存中已加载的类, Java本身提供了Instrumentation类来实现运行时注入代码并执行,因此产生一个检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测。
从零开始学CTF8、Webshell与文件上传
大家好,我是H1TerHub的Rman,对网络安全有浓厚兴趣,我们在学校成立了专注于CTF竞赛的战队。鉴于许多同学初涉此领域,我打算分享一些入门课程,每周更新一次,帮助大家理解和参与这个比赛,也欢迎大家一起交流学习。
关于Webshell,它是个术语,意味着通过Web服务获取服务器操作权限,通常以动态脚本形式存在,有时被视为网站管理工具。一方面,站长会用它进行网站和服务器管理,如编辑脚本、上传文件等;另一方面,恶意用户利用它控制服务器,常见的有asp、php或.NET脚本木马。
Webshell利用的核心原理在于利用PHP的某些内置函数,如`eval()`,通过POST请求传入自定义指令,如`c=phpinfo()`,执行服务器上的命令。常见方法包括火狐的hackbar工具手动构造指令,或者借助工具如中国菜刀进行文件上传,通过修改文件后缀、禁用JS验证、绕过黑名单等手段上传Webshell。
中国菜刀是一个图形化的工具,通过设置参数上传Webshell,如设置文件类型为PHP。然而,上传前需要学会如何绕过服务器的文件上传限制,如通过禁用JS、字符编码转换、MIME类型欺骗或隐藏在中等方式。
在代码审计环节,理解上传验证逻辑至关重要,如通过操纵提交数据来找到漏洞点,如上述实验题中所示的绕过后缀检查。通过分析源码,找出并利用潜在的逻辑漏洞进行文件上传。
冰蝎,从入门到魔改
“冰蝎”是一个动态二进制加密网站管理客户端,第一代webshell管理工具“菜刀”的流量特征显著,容易被检测。基于流量加密的webshell增多,“冰蝎”应运而生。它以JAVA为基础,跨平台使用,功能强大,包括基本信息、命令执行、虚拟终端、文件管理等。
“冰蝎”客户端在服务端支持open_ssl时使用AES加密算法,密钥长度为位。加密流程从客户端发起带密码的请求开始,服务端产生随机密钥,将密钥写入Session并将密钥返回客户端。客户端获取密钥后,将payload用AES算法加密,以POST形式发送请求。服务端收到请求后,使用Session中的密钥解密请求的Body部分,执行Payload,并将结果返回给客户端。客户端获取结果并显示在UI界面上。在流量中,冰蝎在执行Payload之后的返回并未显示加密。
最新版本的“冰蝎”(v2.0.1)于年2月发布后未进行更新。各大厂商的检测系统及WAF均对其特征进行了分析并加入规则。攻防技术不断发展,需要不断更新自我以保持攻防的有效性。
要魔改“冰蝎”,首先需要反编译JAR包获得源码,使用反编译工具如JD-GUI,然后通过Eclipse安装WindowsBuilder创建SWT项目。导入反编译后的源码和JAR包,修复报错并尝试将源码跑起来。成功跑起来反编译后的代码后,可以进行特征擦除,包括密钥交换时的参数、header中的Content-Type、User-Agent、Accept、二次密钥获取、以及response中返回密钥等。
在实际检测中,单一规则检测对“冰蝎”的误报率较高。通过魔改程序可以在一定时间内绕过安全设备的检测,但真正保持攻防有效性需要不断更新和学习。安全之路漫长,共勉。