Drop koneksi ultrasurf dengan iptables
Berawal dari sebuah thread email yang panjang dengan judul Block Ultrasurf di jaringan di milis tanya-jawab@linux.or.id membuat penulis menjadi ingin tahu dan tertantang untuk memecahkan masalah yang selama ini memusingkan banyak network administrator atau admin jaringan yaitu bagaimana memblok koneksi yang tidak diinginkan dari agent anonymizer bernama ultrasurf. Mengapa admin jaringan (selanjutnya disingkat admin) ingin memblok koneksi ini ? Kebijakan kantor tempatnya bekerja kemungkinan melarang staff atau karyawan membuka atau mengakses situs-situs seperti pertemanan sosial misalnya facebook, myspace atau friendster, yang mengandung konten pornografi, game online, judi online, warez, dan lain-lain. Admin dengan bekal pengetahuan instalasi proxy seperti squid dan dns sehat dengan opendns atau dns nawala tentu tidak akan mengalami kesulitan untuk memblok koneksi tersebut apabila koneksinya menggunakan protokol yang default atau http (tcp port 80, 3128 atau 8080). Masalahnya menjadi lain apabila koneksi tersebut memakai protokol yang secure seperti ssl (secure socket layer).
Ultrasurf pada awalnya dibuat untuk menembus sensor atau firewall yang ketat yang dipasang oleh pemerintah Republik Rakyat China. Sensor ini dinamakan The Great Firewall yang ditujukan untuk membendung atau menutup akses ke situs-situs internet yang tidak diinginkan dari user internet di China. Menurut pembuatnya ultrasurf menyembunyikan ip address pemakai dan sekaligus lokasi geografisnya serta histroy akses di browser (privacy). Kedua, komunikasi data akan melalui enkripsi tingkat tinggi sehingga jauh lebih aman(security). Ketiga, bebas mengakses informasi yang dinginkan tanpa sensor (freedom). Ketiga faktor di atas yang rupanya sangat tidak disukai admin, meski tidak hidup di Republik Rakyat China :).
Pertanyaan yang sering mengganjal adalah mengapa koneksi ini susah diblok, didrop atau dicegah ?
- Ultrasurf akan membuka koneksi terlebih dahulu dengan ip server ultrasurf melalui protokol ssl. Begitu terhubung, user bisa membuka situs, misal facebook, dengan browser iexplorer atau firefox. Komunikasi antara user dengan situs tujuan akan melalui ip server ini. IP server ini acak atau random.
- Tukar menukar informasi antara user dengan situs tujuan akan melalui enkripsi tingkat tinggi yang amat susah untuk dipecahkan.
Gambar 1: Ultrasurf menembus firewall yang memungkinkan user membuka facebook.
Sebagai contoh, saat user membuka browser firefox dan mengetikkan alamat http://www.facebook.com, maka langkah-langkah yang dilakukan oleh firefox adalah:
- Firefox akan request ke dns system alamat ip http://www.facebook.com
- Setelah memperoleh ip address, firefox akan membuka komunikasi ke ip tersebut melalui protokol http
- Server http://www.facebook.com memberi tanda kepada firefox untuk segera memulai pengiriman data. Firefox kirim data dengan isi kurang lebih sebagai berikut:
GET / HTTP/1.1 Host: www.facebook.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: locale=en_US; ...
- Server facebook akan mengirimkan data yang diminta.
Jika admin ingin mencegah akses ke facebook maka salah satu alternatif di bawah ini bisa dilakukan:
- Buat spoofing di mesin dns cache agar request untuk ip address http://www.facebook.com diarahkan ke ip lain, misal local adress 127.0.0.1.
- Buat rule di mesin proxy transparent untuk mencegah akses ke situs http://www.facebook.com.
- Buat rule firewall dengan iptables atau layer7 untuk mendrop paket yang mengandung string text “Host: http://www.facebook.com“.
Namun untuk mendrop akses ke facebook jika user menggunakan ultrasurf tidak semudah itu. Di bawah ini aliran paket data ultrasurf dari ip 172.16.2.62 yang ditangkap dengan perintah tcpdump. Perintah di bawah ini akan menangkap trafik tcp port 443 dari ip client 172.16.2.62:
tcpdump -A -X -s 0 -i eth1 tcp port 443 and host 172.16.2.62
16:45:04.970813 IP 172.16.2.62.43603 > 65.49.14.19.443: S 220713247:220713247(0) win 5840 0x0000: 4500 003c 9a06 4000 4006 a323 ac10 023e E.. 0x0010: 4131 0e13 aa53 01bb 0d27 d11f 0000 0000 A1...S...'...... 0x0020: a002 16d0 5d89 0000 0204 05b4 0402 080a ....]........... 0x0030: 00a7 4b19 0000 0000 0103 0306 ..K......... 16:45:04.970928 IP 172.16.2.62.54844 > 219.84.177.187.443: S 228610802:228610802(0) win 5840 0x0000: 4500 003c 19eb 4000 4006 e572 ac10 023e E.. 0x0010: db54 b1bb d63c 01bb 0da0 52f2 0000 0000 .T... 59.115.48.151.443: S 227881447:227881447(0) win 5840 0x0000: 4500 003c 7afe 4000 4006 a565 ac10 023e E.. 0x0010: 3b73 3097 b77c 01bb 0d95 31e7 0000 0000 ;s0..|....1..... 0x0020: a002 16d0 d264 0000 0204 05b4 0402 080a .....d.......... 0x0030: 00a7 4b19 0000 0000 0103 0306 ..K......... 16:45:04.971306 IP 172.16.2.62.54003 > 65.49.14.51.443: S 218556728:218556728(0) win 5840 0x0000: 4500 003c a221 4000 4006 9ae8 ac10 023e E.. 0x0010: 4131 0e33 d2f3 01bb 0d06 e938 0000 0000 A1.3.......8.... 0x0020: a002 16d0 1cd1 0000 0204 05b4 0402 080a ................ 0x0030: 00a7 4b19 0000 0000 0103 0306 ..K......... 16:45:05.169198 IP 65.49.14.51.443 > 172.16.2.62.54003: S 2381962829:2381962829(0) ack 218556729 win 5792 0x0000: 4500 003c 0000 4000 3306 4a0a 4131 0e33 E.........M...9 0x0020: a012 16a0 8965 0000 0204 0534 0402 080a .....e.....4.... 0x0030: 2b16 fcab 00a7 4b19 0103 0307 +.....K..... 16:45:05.169247 IP 172.16.2.62.54003 > 65.49.14.51.443: . ack 1 win 92 0x0000: 4500 0034 a222 4000 4006 9aef ac10 023e E..4."@.@......> 0x0010: 4131 0e33 d2f3 01bb 0d06 e939 8df9 de4e A1.3.......9...N 0x0020: 8010 005c cdc4 0000 0101 080a 00a7 4b4a ...\..........KJ 0x0030: 2b16 fcab +... 16:45:05.172175 IP 172.16.2.62.54003 > 65.49.14.51.443: F 1:1(0) ack 1 win 92 0x0000: 4500 0034 a223 4000 4006 9aee ac10 023e E..4.#@.@......> 0x0010: 4131 0e33 d2f3 01bb 0d06 e939 8df9 de4e A1.3.......9...N 0x0020: 8011 005c cdc2 0000 0101 080a 00a7 4b4b ...\..........KK 0x0030: 2b16 fcab +... 16:45:05.174003 IP 65.49.14.19.443 > 172.16.2.62.43603: S 4161793464:4161793464(0) ack 220713248 win 5792 0x0000: 4500 003c 0000 4000 5506 282a 4131 0e13 E.....S.....'.. 0x0020: a012 16a0 8a39 0000 0204 0534 0402 080a .....9.....4.... 0x0030: cd35 20ee 00a7 4b19 0103 0308 .5....K..... ...
Tidak mudah atau mustahil untuk mendrop akses ke facebook dari user ultrasurf. Yang bisa dilakukan adalah mendrop koneksi dari agent ultrasurf itu sendiri, yaitu saat ultrasurf membuka koneksi dengan ip servernya, tepatnya saat agent ultrasurf sudah melewati TCP 3-Way Handshake dan sebuah paket baru yang berisi data “Client Hello” dikirim ke ip server. Di samping tcpdump, alat bantu yang berguna untuk analisa paket data adalah wireshark. Penjelasan lengkap mengenai tcpdump dan wireshark bisa dibaca di blog penulis tcpdump dan wireshark untuk sniffing network.
SSL Handshake Protocol Flow
The SSL Handshake Protocol has two major phases. The first phase is used to establish private communications. The second phase is used for client authentication.
Phase 1
The first phase is the initial connection phase where both parties communicate their “hello” messages. The client initiates the conversation by sending the CLIENT-HELLO message. The server receives the CLIENT-HELLO message and processes it responding with the SERVER-HELLO message.
At this point both the client and server have enough information to know whether or not a new master key is needed. When a new master key is not needed, both the client and the server proceed immediately to phase 2.
When a new master key is needed, the SERVER-HELLO message will contain enough information for the client to generate it. This includes the servers signed certificate (more about that later), a list of bulk cipher specifications (see below), and a connection-id (a connection-id is a randomly generated value generated by the server that is used by the client and server during a single connection). The client generates the master key and responds with a CLIENT-MASTER-KEY message (or an ERROR message if the server information indicates that the client and server cannot agree on a bulk cipher).
It should be noted here that each SSL endpoint uses a pair of ciphers per connection (for a total of four ciphers). At each endpoint, one cipher is used for outgoing communications, and one is used for incoming communications. When the client or server generate a session key, they actually generate two keys, the SERVER-READ-KEY (also known as the CLIENT-WRITE-KEY) and the SERVER-WRITE-KEY (also known as the CLIENT-READ-KEY). The master key is used by the client and server to generate the various session keys (more about that later).
Finally, the server sends a SERVER-VERIFY message to the client after the master key has been determined. This final step authenticates the server, because only a server which has the appropriate public key can know the master key.
Referensi: The SSL Protocol
Sekarang kita bahas lihat saja yang dilakukan client – server saat phase 1:
client-hello C -> S: challenge, cipher_specs
server-hello S -> C: connection-id,server_certificate,cipher_specs
client-master-key C -> S: {master_key}server_public_key
client-finish C -> S: {connection-id}client_write_key
server-verify S -> C: {challenge}server_write_key
server-finish S -> C: {new_session_id}server_write_key
Referensi: The SSL Protocol
Kali ini tcpdump akan menyimpan hasilnya ke file dump agar nanti dibaca wireshark, sebelumnya keluar dari program ultrasurf dahulu, dan jalankan tcpdump seperti contoh di bawah:
tcpdump -w dump -s 0 -i eth1 tcp port 443 and host 172.16.2.62
Jalankan ultrasurf, setelah terhubung dengan servernya maka akan tampil gambar seperti di bawah ini:
Gambar 2: Ultrasurf konek dengan sukses ke server
Gambar 3: Packet sumary ultrasurf
Gambar di atas pada baris 42 memperlihatkan paket tcp ssl dari ip 172.16.2.62 ke ip 114.44.124.59 yang berisi pesan Client Hello . Pada koneksi baru, paket ini belum mengandung “session_id”. Deskripsi mengenai isi paket ditunjukkan pada gambar di bawah:
Gambar 4: Deskripsi paket tcp ssl ultrasurf
Paket tcp ssl ini mengandung data dengan panjang 70 (Len: 70). Saat koneksi baru, Session ID Length berisi karakter null. Panjang handshake protocol ini sebesar 65. Isi data paket tcp ditampilkan secara tabel HEX dan ASCII pada gambar 5 di bawah:
Gambar 5: Detail paket tcp ssl ultrasurf dalam tabel HEX dan ASCII
Sampai sejauh ini kita baru mengumpulkan 1 buah paket tcp ssl yang berisi pesan Client Hello untuk koneksi baru (session_id belum ada). Apakah ada kemiripan pola bila kita kumpulkan sebanyak mungkin paket ini ? Berikut ini hasil tangkapan tcpdump yang penulis kumpulkan dari beberapa koneksi ultrasurf ke ip server yang berbeda-beda:
Gambar 6: Paket data tcp ssl “Client Hello” ke beberapa ip server ultrasurf
Beberapa kemiripan yang mencolok sekali adalah:
- Semua data mempunya panjang 70.
- Sebelas data pertama mempunyai karakter hexadecimal yang mirip: 16 03 01 00 41 01 00 00 3d 03 01.
TLSv1 Record Layer: Handshake Protocol : Client Hello Content Type: Handshake (22) : 16 Version: TLS 1.0 (0x0301) : 03 01 Length: 65 : 00 41 Handshake Protocol: Client Hello Handshake Type: Client Hello (1): 01 Length: 61 : 00 00 3D Version: TLS 1.0 (0x0301) : 03 01 Random : ... Session ID Length: 0 : 00 Cipher Suites Length: 22 : 00 16 Cipher Suites (11 suites) : ... Compression Methods Length: 1 : 01 Compression Methods (1 method) : 00
- Cipher suite yang mirip: 00040005000a00090064006200030006001300120063
Sampai di sini pola hexadecimal untuk pencarian paket tcp ssl koneksi baru ultrasurf sudah kita peroleh yaitu 16030100410100003d0301. Namun bagaimana dengan paket tcp ssl dari agent non ultrasurf seperti browser IExplorer atau Firefox ? Apakah ada kemungkinan paketnya mempunyai pola hexadecimal yang mirip ?
- Isi data paket tcp ssl “Client Hello” ke https://ibank.klikbca.com/ dari browser IExplorer.
0000 80 4c 01 03 00 00 33 00 00 00 10 00 00 04 00 00 .L....3.........
0010 05 00 00 0a 01 00 80 07 00 c0 03 00 80 00 00 09 ................
0020 06 00 40 00 00 64 00 00 62 00 00 03 00 00 06 02 ..@..d..b.......
0030 00 80 04 00 80 00 00 13 00 00 12 00 00 63 d5 3b .............c.;
0040 28 8b 4a ac 52 1a 81 f8 a5 99 89 15 be 3b (.J.R........;
- Isi data paket tcp ssl “Client Hello” ke https://help.ubuntu.com/ dari browser Opera.
0000 16 03 01 00 70 01 00 00 6c 03 01 4b cd 60 42 c3 ....p...l..K.`B.
0010 65 a2 5a 38 46 d5 b0 cf 40 a0 d7 a9 a2 58 c0 cd e.Z8F...@....X..
0020 8d 5a 5a af 9b 3a c8 dd 54 5c b6 00 00 22 00 39 .ZZ..:..T\...".9
0030 00 38 00 37 00 36 00 35 00 33 00 32 00 31 00 30 .8.7.6.5.3.2.1.0
0040 00 2f 00 05 00 04 00 13 00 0d 00 16 00 10 00 0a ./..............
0050 01 00 00 21 00 00 00 14 00 12 00 00 0f 68 65 6c ...!.........hel
0060 70 2e 75 62 75 6e 74 75 2e 63 6f 6d 00 05 00 05 p.ubuntu.com....
0070 01 00 00 00 00 .....
- Isi data paket tcp ssl “Client Hello” ke https://login.yahoo.com/ dari browser Firefox.
0000 00 25 9c 2f a6 67 00 1c bf 27 75 65 08 00 45 00 .%./.g...'ue..E.
0010 00 d8 94 28 40 00 40 06 0b 4c ac 10 02 3e 42 a3 ...(@.@..L...>B.
0020 a9 ba ac b9 01 bb 65 ad 9d af 26 a4 27 2d 80 18 ......e...&.'-..
0030 00 5c 85 a9 00 00 01 01 08 0a 00 9d 09 ba b7 45 .\.............E
0040 6e 8c 16 03 01 00 9f 01 00 00 9b 03 01 4b f3 b3 n............K..
0050 c4 15 ed 40 55 89 3d 0f 4b dc 58 83 24 de 80 3c ...@U.=.K.X.$..<
0060 62 99 57 58 11 8e 9e 11 93 f6 73 80 55 00 00 44 b.WX......s.U..D
0070 c0 0a c0 14 00 88 00 87 00 39 00 38 c0 0f c0 05 .........9.8....
0080 00 84 00 35 c0 07 c0 09 c0 11 c0 13 00 45 00 44 ...5.........E.D
0090 00 33 00 32 c0 0c c0 0e c0 02 c0 04 00 41 00 04 .3.2.........A..
00a0 00 05 00 2f c0 08 c0 12 00 16 00 13 c0 0d c0 03 .../............
00b0 fe ff 00 0a 01 00 00 2e 00 00 00 14 00 12 00 00 ................
00c0 0f 6c 6f 67 69 6e 2e 79 61 68 6f 6f 2e 63 6f 6d .login.yahoo.com
00d0 00 0a 00 08 00 06 00 17 00 18 00 19 00 0b 00 02 ................
00e0 01 00 00 23 00 00 ...#..
Diihat sekilas dari panjang datanya saja semuanya tidak ada yang sama dengan panjang paket data tcp ssl ultrasurf. Sebelum memblok atau mendrop paket data ini dengan iptables, kita tangkap dulu paketnya dan kirim hasilnya ke log. Rule iptables di bawah ini bekerja di mesin router:
iptables -I FORWARD -p tcp --dport 443 -m string --hex-string '|16 03 01 00 41 01 00 00 3D 03 01|' --algo bm -j LOG --log-prefix "ultrasurf: "
Paket yang tertangkap akan terlihat hasilnya di output dmesg atau di /var/log/messages
[15671.107102] ultrasurf: IN=eth0 FORWARD=eth1 SRC=172.16.2.62 DST=220.136.214.27 LEN=122 TOS=0x00 PREC=0x00 TTL=64 ID=25853 DF PROTO=TCP SPT=37293 DPT=443 WINDOW=92 RES=0x00 ACK PSH URGP=0 [15679.664967] ultrasurf: IN=eth0 FORWARD=eth1 SRC=172.16.2.62 DST=65.49.14.13 LEN=122 TOS=0x00 PREC=0x00 TTL=64 ID=1374 DF PROTO=TCP SPT=47758 DPT=443 WINDOW=92 RES=0x00 ACK PSH URGP=0 [15693.381204] ultrasurf: IN=eth0 FORWARD=eth1 SRC=172.16.2.62 DST=65.49.14.12 LEN=122 TOS=0x00 PREC=0x00 TTL=64 ID=54363 DF PROTO=TCP SPT=47003 DPT=443 WINDOW=92 RES=0x00 ACK PSH URGP=0
Paket yang tertangkap itu semuanya mempunyai tcp flags diset ACK,PSH. Kemudian untuk tidak membebani kerja router sebaiknya kita batasi batas pencarian datanya sampai 77 bytes (pola hexadecimal 11 bytes ditambah link layer+ip header+tcp header). Apabila sudah yakin sebaiknya didrop saja:
iptables -I FORWARD -p tcp --dport 443 --tcp-flags SYN,ACK,FIN,RST,PSH ACK,PSH -m string --to 77 --hex-string '|16030100410100003d0301|' --algo bm -j DROP
Gambar-gambar di bawah ini memperlihatkan agent ultrasurf sudah tidak berkutik atau tidak dapat menghubungi servernya lagi setelah paket “Client Hello”-nya di-DROP oleh iptables meski demikian browsing ke beberapa situs ssl tidak terpengaruh dan dapat berlangsung dengan lancar :).
Gambar 7: Koneksi ultrasurf didrop oleh iptables
Gambar 8: Aplikasi SSL BCA banking lolos meski ultrasurf didrop
Gambar 9: Login webmail yahoo via ssl lolos meski ultrasurf didrop
Gambar 10: Aplikasi ssl bank mandiri lolos meski ultrasurf didrop
Last update: 2013-02-16 14:30 +07:00
cool! 😀
andika
May 19, 2010 at 12:06 pm
Thanks Mas Teik. Jarang2 lho sesepuh mblog nulis komen di sini.
Arief Yudhawarman
May 19, 2010 at 12:09 pm
TOP BGT sangat detail penjabaran nya.. keep posting pak 🙂
milano94
May 19, 2010 at 1:45 pm
bung arief kenapa pake uSURF yg versi 9.92 bisa tembus alias bisa browsing juga, tapi klau pake uSURF 9.95 dipastikan tidak bisa Brow alias Gagal TOTAL browsingnya
Firman
May 20, 2010 at 5:37 am
Anda harus sniffer paket ultrasurf dengan tcpdump, lalu analisa dengan wireshark. Kemungkinan besar yg versi 9.92 mempunyai karakteristik 11 bytes pertama yang unik, berbeda dg yg versi 9.95.
Arief Yudhawarman
May 20, 2010 at 5:41 am
jika firefoxnya ver. 3.6.3 meski kita set use proxy localhost port 9666 and uSURF 9.95 dgn script iptables tsb pasti ke block or tanpa kita setting proxy firefoxnya tetap tidak bisa tembus Browsingnya, namun jika menggunakan uSURF 9.92 ultrasurfnya masih bisa lancar… apa polanya yg beda yachh…???
Firman
May 20, 2010 at 5:45 am
Polanya beda pasti. Emailkan file dump dr tcpdump ke saya nanti akan coba dianalisa.
Misal ip yg dicurigai 1.2.3.4
Device router ke lan eth0
tcpdump -w dump -s 0 -i eth0 tcp port 443 and host 1.2.3.4
Pastikan saja tidak ada trafik lain selain ultrasurf biar gampang analisanya.
Arief Yudhawarman
May 20, 2010 at 5:50 am
salut !!
Neris Itu Gue
May 23, 2010 at 8:04 am
Wah…solusi yang bagus nih mas…buat ngelawan si Ultrasurf….tak coba buat di kantor baru nih.. 🙂
irving
June 3, 2010 at 7:15 am
Selain ultrasurf, ada banyak lagi seperti tor/vidalia, freegate, dll. Maunya saya post di artikel baru karena khusus vidalia ini pakai teknik tersendiri. Oya selamat bekerja di lingkungan baru :).
Arief Yudhawarman
June 3, 2010 at 7:19 am
Kira2 rules iptablesnya bisa diimplementasikan pada /ip firewall filternya mikrotik ngga mas…
irving
June 3, 2010 at 7:18 am
Mas irving ndak langganan milis tanya-jawab? Ada yg tanya begitu dan saya jawab begini:
“Kalau signaturenya tidak mengandung karakter null bisa diblok Pak.
Karena ada keterbatasan di layer7 untuk ini:
“Both versions of l7-filter strip out the nulls (\x00 bytes) from network data so that they can treat it as normal C strings. So (1) you can’t match on nulls and (2) fields may appear shorter than expected. For example, if a protocol has a 4 byte field and any of those bytes can be null, it can appear to be any length from 0 to 4.”
Ref: http://l7-filter.sourceforge.net/Pattern-HOWTO
Saya sudah coba di mikrotik tidak bisa.
Arief Yudhawarman
June 3, 2010 at 7:24 am
heehe..kebetulan ngga langganan di milis mas.. 🙂 wah..berarti cuman mempan pake iptables di linux aja yah mas…karena keterbatasan regexp L7 yah… 🙂
thx pencerahannya mas.. 🙂
irving
June 4, 2010 at 4:09 am
pak arief minta tolong di analisis –hex-string untuk ultrasurf 9.96 (versi baru). kalau yang lama 9.95 kebawah sudah ok. soalnya belum bisa pakai wireshark dan tcpdump. thx banyak pak ya.
mailponus
June 20, 2010 at 7:49 am
Rupanya bisa didrop pakai pola cipher suite. Pola ini tidak berubah sejak versi 9.95:
iptables -I FORWARD -p tcp –dport 443 –tcp-flags SYN,ACK,FIN,RST,PSH ACK,PSH -m string –to 256 –hex-string ‘|00040005000a00090064006200030006001300120063|’ –algo bm -j DROP
Arief Yudhawarman
June 20, 2010 at 11:57 am
Jelasnya, pakai rule itu bisa blok ultrasurf versi 9.95 dan 9.96 :D.
Arief Yudhawarman
June 20, 2010 at 11:58 am
Di tempat saya, gateway user pake Mikrotik pak… paket ke 80 di belokan ke mesin Linux yang ada squidnya
Kalau saya mau block Ultra Surf berarti di Mikrotiknya kan ? Apa dengan di Mikrotik ada options –hex-string
Nyoman [D]
June 23, 2010 at 4:04 am
Sayang sekali, saya sudah mencoba tapi tidak bisa. Anda bisa baca threadnya di forum.mikrotik.com
http://forum.mikrotik.com/viewtopic.php?f=2&t=41223
Saya pakai mikrotik v3.28. Barangkali pakai yg versi 4.x bisa.
Arief Yudhawarman
June 23, 2010 at 4:24 am
Pak arief thx banyak ya. pak arief best of the best. Atas informasinya ultrasurf versi 9.96. 😀
mailponus
June 21, 2010 at 7:50 pm
Pak Arif, UltraSurf skr sudah versi 9.97 saya tangkap pake L7 protocol di Mikrotik v3.30 dengan hex=”^\16310\41100\3D31″ dan mangle tidak tertangkap, alias address list nya tidak terbentuk
Yang jadi pertanyaannya ada, pake tool apa untuk menganalisa file hasil tcpdump seperti di gambar di atas pak ?
Kalau bapak bisa membantu menganalisa filenya ada di http://115.69.219.11/dump-20100706
Thanks
Nyoman [D]
July 6, 2010 at 2:37 am
Pakai wireshark. File dump sudah saya analisa dengan wireshark, pola cipher suites (11 suites) sama dengan ultrasurf sebelumnya:
00040005000a00090064006200030006001300120063
Oya kalau pakai L7 tidak akan bisa menangkap karakter null (0x00).
Arief Yudhawarman
July 6, 2010 at 3:04 am
Saya juga melakukan percobaan dengan gateway linux… dan melakukan log dengan perintah:
iptables -I FORWARD -p tcp –dport 443 -m string –hex-string ‘|16 03 01 00 41 01 00 00 3D 03 01|’ –algo bm -j LOG –log-prefix “ultrasurf: ” tapi di /var/log/message kok nggak muncul ya.. sudah coba juga dengan menghilangkan spasi menjadi ‘|16030100410100003D0301|’
Jadi kesimpulannya, sampai saat ini belum berhasil block UltraSurf jika gateway menggunakan Mikrotik pak ?
Thanks
Nyoman [D]
July 6, 2010 at 4:40 am
Itu pakai ultrasurf yang versi berapa? Kalau versi 9.95 pola hexstringnya memang ‘16030100410100003d0301’ tapi kalau versi di atasnya beda lagi, anda pakai hexstring ini ‘00040005000a00090064006200030006001300120063’ itu bisa u/ versi 9.95, 9.96 dan 9.97.
Sampai saat ini belum berhasil di mikrotik. Saya sendiri sudah tanya ke forum.mikrotik.com tapi belum dapat jawaban yang memuaskan.
Arief Yudhawarman
July 6, 2010 at 4:47 am
Sekali lagi pak arief terima kasih. Dengan ultrasurf sudah bisa keblock semua. tapi ada satu lagi yang masih bandel namanya HTTP Tunnel (www.http-tunnel.com). mohon pecerahan nya tentang hex string untuk HTTP Tunnel
mailponus
July 15, 2010 at 11:31 am
Ada alasan saya mengulas panjang langkah-langkah untuk memblok anonymizer ssl ini yakni agar pembaca bisa memcoba sendiri karena sudah diberi kailnya tinggal cari ikannya :). Tetapi kebanyakan malah minta dicarikan :D. Ok ndak mengapa, kalau ada waktu luang saya coba aplikasi tunnel ini.
Arief Yudhawarman
July 15, 2010 at 2:36 pm
Sudah saya coba. Kalau ini sih cukup dengan memblok koneksi ke ip 209.8.41.80 itu yang memhosting layanan http-tunnel.com. Bisa juga ditambah ip 209.8.41.104.
$ dig +short http-tunnel.com
209.8.41.104
$ host -t ptr 209.8.41.80
80.41.8.209.in-addr.arpa domain name pointer paid104.http-tunnel.com
Untuk teknik yang lebih canggih bisa pakai layer7. Ini yang saya coba di router mikrotik:
/ip firewall layer7
add name=http-tunnel regexp=”^get./login/fetchprotocolversion2.htm.http/[-~\t-\r]*host:.cachenetwork.net
/ip firewall mangle
add chain=prerouting action=add-dst-to-address-list protocol=tcp src-address-list=imn-network address-list=http-tunnel address-list-timeout=1w layer7-protocol=http-tunnel in-interface=ether4 dst-port=80 comment=”ADD dst-add to http-tunnel (L7)”
Kemudian tinggal buat rule di ip firewall untuk blok koneksi ke dst-address-list=http-tunnel
Arief Yudhawarman
July 15, 2010 at 3:20 pm
ditempat saya harus tambah ip ini utk diblok 206.161.99.149 dan 206.161.99.65.
mailponus
July 16, 2010 at 2:38 am
yang lebih mengerikan jika di bypass pakai tor browser ( http://www.torproject.org/easy-download.html.en ). semuanya tembus. tinggal di gunakan pakai plugin pada mozilla firefox.
mailponus
July 15, 2010 at 2:09 pm
Hehehe :). Saya sudah menemukan pattern hexnya dan sudah berhasil memblok tor/vidalia. Agak sedikit tricky untuk memblok ini. Kapan-kapan saya upload tulisannya.
Arief Yudhawarman
July 15, 2010 at 2:33 pm
He he he 🙂 . Ditunggu ya pak. tq
mailponus
July 16, 2010 at 3:32 am
di saya koh pake ultrasurf997 lewat yah, meski sudah
00040005000a00090064006200030006001300120063
ada info ?
andisaputro
July 16, 2010 at 11:09 am
Dear Arief,
I read your article using Google translation (Sorry I don’t know ur language) It’s really a good article but I am not able to block UltraSurf Ver.997 My Hex is 16 03 00 00 61 01 00 00 5d 03 00 and I tried the command
“iptables -I FORWARD -p tcp –dport 443 -m string –hex-string ‘|16 03 00 00 61 01 00 00 5d 03 00|’ –algo bm -j LOG –log-prefix “ultrasurf: ”
But I am unable to block it so please give me proper guidance, where I am missing ?
Thanking you !
Sudip Mokashi
August 9, 2010 at 4:48 am
You can not use those pattern to block ultrasurf 9.97. Use cipher suite instead. The pattern is below:
00040005000a00090064006200030006001300120063
So to totally block ultrasurf the iptables must be:
iptables -I FORWARD -p tcp –dport 443 –tcp-flags SYN,ACK,FIN,RST,PSH ACK,PSH -m string –to 512 –hex-string ‘|00040005000a00090064006200030006001300120063|’ –algo bm -j DROP
Arief Yudhawarman
August 9, 2010 at 5:28 pm
Dear Arief,
I tried following command after adding my cipher value but thats not able to block the UltraSurf !!!
iptables -I FORWARD -p tcp –dport 443 –tcp-flags SYN,ACK,FIN,RST,PSH ACK,PSH -m string –to 512 –hex-string ‘|00040005000a00090064006200030006001300120063|’ –algo bm -j DROP
Sudip Mokashi
August 10, 2010 at 6:29 am
R u there Buddy ???
Sudip
August 14, 2010 at 5:37 am
Kenapa tidak di tutup saja port 9666. Atau buka saja port yang perlu tutup yang lainnya.
pilman
October 12, 2010 at 2:39 pm
Ultrasurf memakai port 443.
Arief Yudhawarman
October 15, 2010 at 1:18 am
i can’t block ultrasurf with this rule:
iptables-I FORWARD-p tcp-dport 443-tcp-flags SYN, ACK, FIN, RST, PSH ACK, PSH-m string-to 512-hex-string ‘| 00040005000a00090064006200030006001300120063 |’-algo bm-j DROP
i think the structure of ultra version 9.97 until 9.99 was changed.
Please help me Ariel !!!
ali
October 14, 2010 at 1:26 pm
You can dump the packets with tcpdump and analyze it with wireshark. Use this command at your linux router:
# this should be in 1 line
tcpdump -w dump -s 1024 -i eth0 tcp port 443 and host 1.2.3.4
Or you can use this command to dump only ‘ACK,PSH’ packets:
# this should be 1 line
tcpdump -w dump -s 1024 -i eth0 src host 1.2.3.4 and tcp port 443 and ‘(tcp[13] = 0x18)’
Where:
eth0 is LAN interface.
1.2.3.4 is the suspicous client (using ultrasurf).
Make sure when you use this command only ultrasurf is running or the packets will be mingled with non ultrasurf applications which make difficult to analyze or give wrong conclusion.
You can email me the dump file.
Arief Yudhawarman
October 15, 2010 at 3:49 am
rule diatas tidak mempan ma ultrasurf versi 9.99 pak,
ada cara lain??
hendra
October 21, 2010 at 5:25 am
Nanti kalau ada waktu saya akan coba koneksi pakai ultrasurf 9.99 dan amati paketnya dengan wireshark. Tunggu updatenya di sini.
Arief Yudhawarman
October 21, 2010 at 11:07 am
menunggu updatean pak arief Mode ON
hendra
October 25, 2010 at 2:31 am
masi menunggu dengan sabar MODE ON
hendra
October 28, 2010 at 8:48 am
saya menganalisa traffic ultrasurf di versi 10.01 dan mendapatkan hex string yang sama di 16030101670100016301
tapi settingan iptables saya ada masalah sehingga saya tidak bisa mengujinya.
bagi yang uda bisa blok versi 9.5 tapi ga bisa blok versi 10, mungkin bisa coba hex string ini
thanks
hendra
October 31, 2010 at 4:57 am
versi 10.01
iptables -I FORWARD -d 65.49.14.0/24 -j DROP
lalu drop ini juga :
STRING match “|00350005000ac013c014c009c00a0032|”
andisaputro
November 11, 2010 at 5:36 am
rule saya seperti ini ko hex string ga berfungsi yah ? apakah ada kesalahan di rulenya..mohon bantuan untuk perbaikan.. terima kasih.
*mangle
#*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:blokinet – [0:0]
:RH-Firewall-1-INPUT – [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth2 -j LOG –log-prefix “BANDWIDTH_IN:” –log-level 7
-A INPUT -j RH-Firewall-1-INPUT
-A INPUT -p tcp -m tcp –dport 3724 -j DROP
-A INPUT -p tcp -m tcp –dport 6112 -j DROP
-A INPUT -p tcp -m tcp –dport 6113 -j DROP
-A INPUT -p tcp -m tcp –dport 6114 -j DROP
-A INPUT -p tcp -m tcp –dport 6115 -j DROP
-A INPUT -p tcp -m tcp –dport 6116 -j DROP
-A INPUT -p tcp -m tcp –dport 6117 -j DROP
-A INPUT -p tcp -m tcp –dport 6118 -j DROP
-A INPUT -p tcp -m tcp –dport 4959 -j DROP
-A FORWARD -o eth2 -j LOG –log-prefix “BANDWIDTH_OUT:” –log-level 7
-A FORWARD -i eth2 -j LOG –log-prefix “BANDWIDTH_IN:” –log-level 7
-A FORWARD -j RH-Firewall-1-INPUT
-A OUTPUT -o eth2 -j LOG –log-prefix “BANDWIDTH_OUT:” –log-level 7
-A FORWARD -p tcp -m tcp -m string –dport 443 -j DROP –hex-string “|16030100410100003d0301|” –algo bm –to 65535
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp -d 224.0.0.251 –dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 10000 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 445 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 3128 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 444 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 1920 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 5050 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 5222 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 5223 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 1272 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 9443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 5900 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 143 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 995 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 5938 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 9889 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 9666 -j DROP
#-A RH-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp –dport 22 –state NEW -j ACCEPT
COMMIT
# Completed on Tue Sep 21 14:35:31 2010
# Generated by iptables-save v1.3.5 on Tue Sep 21 14:35:31 2010
*nat
:PREROUTING ACCEPT [348158:33815310]
:POSTROUTING ACCEPT [827:216308]
:OUTPUT ACCEPT [387572:25487928]
-A PREROUTING -s ! 192.168.0.1 -i eth2 -p tcp -m tcp –dport 80 -j DNAT –to-destination 192.168.0.1:3128
-A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 443 -j DNAT –to-destination 192.168.11.250:443
-A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 5900 -j DNAT –to-destination 192.168.11.250:5900
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Sep 21 14:35:31 2010
# Generated by webmin
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed
hendra
November 16, 2010 at 1:14 am
pak arif di ultrasurf yg paling baru, saya tidak melihat tls handshaking lagi ya?
hari
December 1, 2010 at 12:59 pm
Tidak ada handshaking untuk ultrasurf versi 10.x. Tapi anda bisa drop paketnya spt saran rekan di atas:
iptables -I FORWARD -d 65.49.14.0/24 -j DROP
Setelah itu ultrasurf akan membuat koneksi biasa spt handshaking dari awal. Saya belum sempat ngoprek.
Arief Yudhawarman
December 2, 2010 at 1:00 am
iya saat ini yg saya test drop dua ip ini:
65.49.14.47
65.49.2.10
hari
December 2, 2010 at 9:45 am
Wew…kini saya tahu ada tools lagi Pak Arief…”Your Freedom” namanya hehehe susah juga ya punya user2 yang kreatif,
Mbah Darmo
January 18, 2011 at 1:36 am
Admin juga harus kreatif. Karena memang itu pekerjaannya memelototi koneksi :).
BTW, asal sudah memahami konsep tcpdump dan wireshark pasti bisa lah babat koneksi yg aneh2 begitu.
Arief Yudhawarman
January 18, 2011 at 3:31 am
Wew di versi 10.05 saya coba2 untuk drop tapi kok tidak ketemu client hello atau server hello ya pak?
mbah darmo
February 9, 2011 at 10:39 am
untuk ultra surf ini, saya cenderung memblok total koneksi ssl port 443, lalu open hanya ke IP tertentu saja semuai keperluan seperti google, yahoo dll.
jadi semua jenis tool yang mengakses ke 443 akan terblok total.
muntaza
February 11, 2011 at 1:45 am
Kl di mikrotik gmn?
Neo
April 17, 2011 at 4:03 am
Tidak bisa. Silahkan lihat reply saya di atas.
Arief Yudhawarman
April 17, 2011 at 12:08 pm
[…] –algo bm -j DROP Y aca el BLog del Compadre donde explica lo de ultrasurf Drop koneksi ultrasurf dengan iptables Arief Yudhawarman […]
Bloquear UltraSurf - Foros de CHW
February 22, 2011 at 12:10 pm
Is there any way to block ultra version 9.99 or 10.
All of above way was not worked with me.
Ali
May 15, 2011 at 3:41 am
KLO pake mikrotik gmna suhu?? Mohon bantuannya??? punya saya pake mikrotik 4.
Yasir Haris
June 18, 2011 at 10:17 am
mas arief punya update baru tentang utrasufr ini ?? saya tes ultrasurf ver 10.08 lolos,, thx
yoetama
July 25, 2011 at 7:44 am
Salam Pak Arif. Bagaimana untuk block ultrasyrf versi 10.08 dan 10.17 (latest)?
Karena saya udah mencubanya pada versi 10.05 dengan rule berikut ———> iptables -I FORWARD -p tcp –dport 443 –tcp-flags SYN,ACK,FIN,RST,PSH ACK,PSH -m string –to 512 –hex-string ‘|00040005000a00090064006200030006001300120063|’ –algo bm -j DROP
hasilnya didapati ia success dapat memblock. Namun begitu bagi versi 10.8 dan keatas ia masih lagi tidak berjaya. Pohon pertolongan dari pak arif .Trima kasih
azrim
October 18, 2011 at 9:22 am
tidak ada yg benar-benar secure, meskipun anda telah memblok ultrasurf, masih banyak applikasi-applikasi lain yg sejenis..
exalute
October 21, 2011 at 1:27 am
kenapa gak diblock aja port yg dipake sama ultrasurf?
sorry kalo ngaco 🙂
~newbie
kang didin
December 21, 2011 at 1:42 pm
Ultrasurf pakai protocol tcp port 443, sama seperti port kalo kita buka halaman web secure (https).
awarmanf
December 22, 2011 at 1:40 am
+nanya gan (newbie) kalo cara ini dilakukan di komputer klien kan? kalo misalnya saya menguasai router, apa bisa dengan cara ini.? klo tidak bisa, gimana enaknya neh, biar ultrasurf tetepa terblok.
+saya pakai openDNS, ternyata klien juga bisa menjebol dnegan mengganti DNS addres, apa yang bsia saa lakukan untuk tetap blok alamat website tertentu?
chemed
May 17, 2012 at 7:54 am
sekarang ada program Freegate..yang parah nya program ini smpe membuat koneksi lainnya ngedrop..apakah bisa diblok dengan cara diatas? apa mesti dengan iptables dan tidak bisa di blok dengan mikrotik?
Maaf saya newbie di mikrotik dan iptables..mohon pencerahan suhu2 sekalian. Warnet saya jadi sepi gara2 banyak yang pake software ini 😦
daemon
August 13, 2012 at 10:05 pm
lumayan agak rumit sih. tapi nanti dicoba. makasih untuk tutorialnya gan. sangat bermanfaat sekali buat newbie macam saya ini.
Berita teknologi
January 6, 2013 at 9:21 am
Sekarang ultrasurf sudah versi baru dan mempunyai pola yang berbeda dengan apa yang saya tulis di sini. Namun intinya jika anda menguasai teknik sniffing dan cara menganalisa pola tentunya tidak akan kesulitan untuk menangkap paket ultrasurf terbaru.
Arief Yudhawarman
January 6, 2013 at 9:32 am
klu di mikrotik
add list=ultrasurf address=”195.39.222.145″
add list=ultrasurf address=”165.12.241.35″
add list=ultrasurf address=”210.242.23.5″
add list=ultrasurf address=”114.47.116.156″
add list=ultrasurf address=”118.168.1.188″
add list=ultrasurf address=”122.120.37.86″
add list=ultrasurf address=”218.166.99.221″
add list=ultrasurf address=”118.161.210.63″
add list=ultrasurf address=”59.115.198.99″
add list=ultrasurf address=”125.230.35.18″
add list=ultrasurf address=”218.169.180.75″
add list=ultrasurf address=”220.141.118.201″
add list=ultrasurf address=”114.47.120.116″
add list=ultrasurf address=”118.160.233.90″
add list=ultrasurf address=”114.42.11.146″
add list=ultrasurf address=”65.49.2.122″
add list=ultrasurf address=”65.49.2.123″
add list=ultrasurf address=”65.49.2.118″
add list=ultrasurf address=”128.231.210.98″
add list=ultrasurf address=”195.33.153.5″
add list=ultrasurf address=”64.235.47.65″
add list=ultrasurf address=”207.105.75.196″
add list=ultrasurf address=”38.144.194.3″
add list=ultrasurf address=”61.144.235.3″
add list=ultrasurf address=”65.49.2.117″
add list=ultrasurf address=”122.124.162.126″
add list=ultrasurf address=”114.41.234.49″
add list=ultrasurf address=”123.204.75.141″
add list=ultrasurf address=”218.160.188.87″
add list=ultrasurf address=”218.169.0.236″
add list=ultrasurf address=”118.170.66.213″
/ip firewall layer7-protocol
add name=block_ultrasurf regexp=”^\\\\16\\\3\\\1\\\0\\\\41\\\1\\\ 0\\\0\\\\3D\\\3\\\1″
/ip firewall mangle
add action=mark-connection chain=prerouting \
disabled=no dst-port=443 layer7-protocol=\
block_ultrasurf new-connection-mark=blockir passthrough=yes protocol=tcp
add action=mark-packet chain=prerouting \
connection-mark=blockir disabled=no \
new-packet-mark=mark_blockir passthrough=yes
/ip firewall filter
add action=drop chain=input disabled=no \
in-interface=LAN packet-mark=mark_blockir
add action=drop chain=forward disabled=no \
in-interface=LAN packet-mark=mark_blockir
add action=drop chain=input disabled=no \
in-interface=LAN dst-address-list=ultrasurf
add action=drop chain=forward disabled=no \
in-interface=LAN dst-address-list=ultrasurf
[/code]
kemudian port 80,3128 dan 8080 di belokkan ke external server,
dan di squid-nya ditambahkan ACL,
Code:
acl numeric_IPs url_regex ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
http_access deny CONNECT numeric_IPs all
toyastu
January 7, 2013 at 11:20 am
sip makasih ya
Duasatu.Web.id
February 24, 2013 at 8:19 pm
Wah pusing mas. Belom paham -_-
Komunitas Android
July 22, 2013 at 9:15 pm
Mantab. . . makasih. . .
Yoshiwafa
October 25, 2013 at 9:35 am
mas untuk TOR nya bisa kasih tutorialnya….?
ari
November 8, 2013 at 6:02 am
Keren sharing ilmu nya
Dana
January 10, 2014 at 4:57 pm
BEST ASIC COMPANY 2014 bitcoin-cloud.me
bitcoin-cloud.me Mining bitcoins doesn’t have to cost you a fortune. For 1 BTC , you can have a 1TH dragon miner.
bitcoin-cloud.me is REAL !
bitcoin-cloud.me is great for n00bs
Running my bitcoin-cloud.me NOW
http://bitcoin-cloud.me
byporpimmup
October 5, 2014 at 3:00 am