现在市面上流传了N种asp的大马。就是常说的webshell。有什么全免杀版本,什么提权加强版本。但是其中很多shell都是加密的,而且存在一些后门。
很有可能同学了忙了半天入侵了一个站,是为别人忙活了。童鞋们想用这些shell,就要想办法找出其中的后门,清除掉。而清除后门的第一步,就是先解密他们。
      要学会解密asp木马,首先要了解它常用的加密方式。一般来说,asp木马的加密主要经过两个步骤:①编写自定义函数加密。②用微软的脚本加密工具来加密,这个一般来说是最后一步,经过此步骤处理以后的asp木马不能再进行加密了。我们要解密的话就要先对微软加密的部分进行解密,再对自定义函数加密的部分进行解密。
      对微软加密进行解密,我们可以直接用工具来进行,例如AspDecode就可以,一些网页在线解密也可以,不过容易解密不完全。这里大家要注意下特殊字符的处理。
      然后就是对自定义函数加密部分的解密了。因为不同的shell加密方式不同,常见的诸如十三加密方式,黑客伟移位之类,是有一些解密工具的。我们可以用刀客的工具来解密常规的十三加密方式,但是变异的加密,可能就没有特别好用的解密工具了。当然,大家都说asp无加密,就是说不论你加密函数写的多好,要让asp文件正常执行,就肯定需要在shell中写好解密函数,执行的时候要利用解密函数来还原明文,再执行。这里常见的代码是:

 1 dim ShiSan,ShiSanNewstr,ShiSanI
 2 Function ShiSanFun(ShiSanObjstr)
 3 ShiSanObjstr = Replace(ShiSanObjstr, "╁", """")
 4 For ShiSanI = 1 To Len(ShiSanObjstr)
 5 If Mid(ShiSanObjstr, ShiSanI, 1) <> "╋" Then
 6 ShiSanNewStr = Mid(ShiSanObjstr, ShiSanI, 1) & ShiSanNewStr
 7 Else
 8 ShiSanNewStr = vbCrLf & ShiSanNewStr
 9 End If
10 Next
11 ShiSanFun = ShiSanNewStr
12 End Function

这里就是典型的十三加密了。而被加密后的字符串就是类似下面这样的:

1 ShiSan="╋╁>retnec/<>a/<回返>')(kcab.yrotsih:tpircsavaj'=ferh a<>retnec<>rb<>rb<╁=lrUkcaB╋)╁emaNF╁(tseuqeR=emaNF╋)╁htaPredloF╁(tseuqeR=htaPredloF╋ssapresu=prevres╋lru&)╁tsoh_ptth╁(selbairavrevres.tseuqer=urevres╋)╁/╁(htaPpaM.revreS=tooRWWW╋)╁.╁(htaPpaM.revreS=htaPtooR╋)╁noitcA╁(tseuqeR=noitcA╋)╁RDDA_LACOL╁(selbairaVrevreS.tseuqeR=PIrevreS╋)╁LRU╁(selbairaVrevreS.tseuqeR=LRU"
2 ExeCuTe(ShiSanFun(ShiSan))

这里“ShiSan=”后面双引号里面的内容就是经过十三加密后的密文,这句是把后面的密文赋值给ShiSan变量。

ExeCuTe(ShiSanFun(ShiSan))
       这句代码的意思,就是执行ShiSan那个字符串变量里面的内容,当然直接执行是不行的,需要在解密,于是先用ShiSanFun来解密,再执行,那么ShiSanFun(ShiSan)就是解密后的内容了。那么我们用response.write ShiSanFun(ShiSan)就可以输出明文了。好,我们在ExeCuTe(ShiSanFun(ShiSan))下面加一行response.write ShiSanFun(ShiSan),然后在asp环境下访问下这个shell,就可以看到明文在shell中显示出来了。

上面的方法是需要asp环境的,如果我们没有asp环境,可以用这样一个脚本来解密:

 1 dim ShiSan,ShiSanNewstr,ShiSanI
 2 Function ShiSanFun(ShiSanObjstr)
 3 ShiSanObjstr = Replace(ShiSanObjstr, "╁", """")
 4 For ShiSanI = 1 To Len(ShiSanObjstr)
 5 If Mid(ShiSanObjstr, ShiSanI, 1) <> "╋" Then
 6 ShiSanNewStr = Mid(ShiSanObjstr, ShiSanI, 1) & ShiSanNewStr
 7 Else
 8 ShiSanNewStr = vbCrLf & ShiSanNewStr
 9 End If
10 Next
11 ShiSanFun = ShiSanNewStr
12 Wscript.echo ShiSanFun
13 End Function
14 ShiSanFun("╋╁>retnec/<>a/<回返>')(kcab.yrotsih:tpircsavaj'=ferh a<>retnec<>rb<>rb<╁=lrUkcaB╋)╁emaNF╁(tseuqeR=emaNF╋)╁htaPredloF╁(tseuqeR=htaPredloF╋ssapresu=prevres╋lru&)╁tsoh_ptth╁(selbairavrevres.tseuqer=urevres╋)╁/╁(htaPpaM.revreS=tooRWWW╋)╁.╁(htaPpaM.revreS=htaPtooR╋)╁noitcA╁(tseuqeR=noitcA╋)╁RDDA_LACOL╁(selbairaVrevreS.tseuqeR=PIrevreS╋)╁LRU╁(selbairaVrevreS.tseuqeR=LRU")

复制代码,保存为vbs格式,然后运行就可以得到明文。这里解密不同的密文,只需替换最后一句代码括号中的密文即可。有人说没法复制密文,其实可以的,我们用dos来执行这个vbs脚本,然后重定向到一个文本文件中即可。

cscript.exe jiemi.vbs>c:\jiemi.txt

使用这个命令即可。

如果要解密的shell中加密方法很多,而且加密的次数也很多,那么我们用vbs脚本来执行效率可能就会很低。这里,我重点推荐一个方法,用vb来解密。我们知道,asp中主要的语言就是Vbscript,我们可以直接把解密函数复制到vb中就可以使用了。代码我贴给大家。

 1 Function UnEncode(cc)
 2 For i = 1 To Len(cc)
 3     If Mid(cc, i, 1) <> "琳" Then
 4 temp = Mid(cc, i, 1) + temp
 5    Else
 6     temp = vbCrLf & temp
 7 End If
 8 Next
 9 UnEncode = temp
10 End Function
11
12 Private Sub Command1_Click()
13
14 Dim Enco1 As String
15    If Text1.Text <> "" Then
16       Enco1 = Text1.Text
17       Enco1 = UnEncode(Enco1)
18       Text1.Text = Enco1
19    End If
20
21 End Sub
22
23 Private Sub Command2_Click()
24
25 Clipboard.Clear
26 Clipboard.SetText Text1.Text
27
28 End Sub
29
30 Private Sub Command3_Click()
31
32 Text1.Text = Clipboard.GetText
33
34 End Sub
35
36 Private Sub Form_Load()
37
38 End Sub

第一段代码就是我们直接从shell中找到的解密函数代码。我们用的时候,就可以针对不同的加密方法来实时替换不同的解密代码,

Command1是解密按钮,Command2是复制按钮,Command3是粘贴按钮。大家自己再画个text文本框进去就行了。

搞定后,我们可以不生成exe文件,用的时候直接在vb中修改不同的解密函数代码,运行就行了。下次修改还很方便。。这样的话,自定义解密就很轻松高效了

转自:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=1619

转载于:https://www.cnblogs.com/skactor/articles/3920666.html

浅谈asp木马中自定义函数加密的解密相关推荐

  1. 浅谈ASP.NET中render方法

    2011-06-08 11:36 runyl 博客园 我要评论(1) 字号:T | T Control.Render 方法是将服务器控件内容发送到提供的HtmlTextWriter 对象,此对象编写将 ...

  2. 浅谈windows 编程中SendMessage函数的妙用!!!

    windows编程中SendMessage函数是非常重要的,而且这个对于理解windows的消息机制也很重要.本文用代码的方式实现了一些功能,借以说明此函数之妙用.说明不当之处,希望批评指正,谢谢! ...

  3. 浅谈ASP.net中的DataSet对象

    在我们对数据库进行操作的时候,总是先把数据从数据库取出来,然后放到一个"容器"中,再通过这个"容器"取出数据显示在前台,而充当这种容器的角色中当属DataSet ...

  4. asp.net mvc 压缩html代码,浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能

    今天在使用MVC4打包压缩功能@Scripts.Render("~/bundles/jquery") 的时候产生了一些疑惑,问什么在App_Start文件夹下BundleConfi ...

  5. 函数图像在图形计算机的应用,浅谈图形计算器在高中函数教学中的应用

    浅谈图形计算器在高中函数教学中的应用 陈理宏广州市花都区教研室(510800) 摘要:函数是高中一个重要内容,在这个内容的学习中应用图形计算器的函数功能和绘图功能,有利于学生加深对函数知识的理解,挖掘 ...

  6. c语言弱符号与函数指针,浅谈C语言中的强符号、弱符号、强引用和弱引用【转】...

    首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑,所以写下此篇,希望能和同样 ...

  7. 浅谈域渗透中的组策略及gpp运用

    组策略(英语:Group Policy)是微软Windows NT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境.组策略提供了操作系统.应用程序和活动目录中用户设置的集中化管理和配置 ...

  8. 浅谈ASP.NET的内部机制(一)

    浅谈ASP.NET的内部机制(一) 前言:当一个Http请求发送给一个aspx页面时,服务器进行了哪些操作?又如何来解析这个请求?ASP.NET在接收请求后是怎么运行的,如怎么编译以及怎么样用托管的代 ...

  9. 浅谈单片机程序设计中的“分层思想”!

    浅谈单片机程序设计中的"分层思想",并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用.看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种 ...

最新文章

  1. python二十二:迭代,三元表达式,列表解析
  2. Eclipse Outline图标
  3. Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)
  4. php常用功能代码,10段PHP常用功能代码(1)_PHP教程
  5. 银行离开IBM必死?国货10年内无法接盘
  6. 【转】什么是磁珠(Ferrite Bead 即 FB)
  7. hadoop视频教程下载链接汇总
  8. JAVA: 初级项目之基于Swing界面的仿QQ(一)
  9. 全志平台动态mac地址解决办法记录
  10. keil和protues仿真点亮一个LED灯
  11. java动态规划凑硬币问题_动态规划 凑硬币问题
  12. pgsql数据替换替换换行符
  13. oracle中的递归查询
  14. MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)
  15. Excel编号相同数字
  16. poi 操作 导出excel 合并列
  17. java jni c 指针_通过JNI传递C和Java之间的指针
  18. Python 考试练习题 1
  19. html上传文件的实例
  20. mysql rds 迁移_数据库迁移:如何将数据库从本地MySQL迁移到服务器RDS上?

热门文章

  1. 心田花开|三年级作文补习|小学三年级作文补习方法与技巧
  2. 结构型模式——组合模式(Composite)
  3. 网上搜集的取名大全(部分)
  4. Fortain下载fortain
  5. 【案例4】总账明细表的分区方案
  6. Python3:简单的服务器(socketserver + MySQL)
  7. Android调用系统拨打电话
  8. Web Storage本地存儲
  9. 小项目:生成随机的测验试卷文件_python
  10. 关于CPU C-States 省电模式