Bug Mikrotik untuk Mendapatkan Username dan Password

- Agustus 03, 2018
Assalamu Alaikum,

Lama juga tidak buat postingan, terakhir posting di bulan Mei, malas juga yah ternyata. Di samping kemalasan itu, akhir-akhir ini penulis melihat beberapa post di media sosial tentang adanya celah keamanan (vulnerability) pada semua perangkat MikroTik RouterOS. Ada satu script yang dibuat dengan bahasa Python, dengan mudahnya mendapatkan username dan password MikroTik secara Plain Text (alias bisa dibaca langsung) tanpa enkripsi sama sekali, bahkan password yang lama sekalipun. Bug ini berdampak pada semua versi RouterOS dari 6.29 (release date: 2015/28/05) sampai 6.42 (release date 2018/04/20). Wahh, bisa gawat kalau begini. Penulis pun mencoba mencari tahu tentang script ini yang ternyata bernama WinboxPoC.


Menurut yang penulis ketahui (setelah baca-baca tentunya), bug ini memanfaatkan celah keamanan pada kernel linux RouterOS yang berbeda setiap versinya (khususnya versi 6.29 ke atas). Kemudian memodifikasi packet yang dikirimkan ke RouterOS sehingga bisa men-download file User Database, dimana file User Database ini bisa di-enkripsi secara online di internet (secara gratis) untuk mendapatkan username dan password MikroTik.

Penjelasan tentang bug ini bisa dilihat di https://n0p.me/winbox-bug-dissection/

Sedikit Praktik

Untuk mencoba dan membuktikan Bug ini, penulis kebetulan memiliki satu RouterBoard RB750G series, yang juga secara kebetulan lupa password super admin-nya, hehehe. Kebetulan penulis menggunakan sistem operasi OSX (a.k.a hackintosh), dan pastikan sudah terinstal Python versi 3.

Download WinboxExploit pada github berikut https://github.com/BasuCert/WinboxPoC

Setelah download, kemudian extract. Lalu jalankan perintah

$python3.7 WinboxExploit.py 172.16.16.16 (IP Address MikroTik)
bahkan Anda bisa mendapatkan file user database walau target tidak memiliki IP Address, dengan menggunakan perintah
$python3.7 MACServerDiscover.py 
setelah diperoleh MAC Address MikroTik, lanjutkan dengan perintah
$python3.7 MACServerExploit.py 00:11:22:33:44

hasilnya adalah


Sedikit Pencegahan  

Bug ini bisa diperbaiki dengan melakukan upgrade (update) OS pada RouterOS ke versi terbaru atau hanya dengan versi BugFix saja.



Untuk versi 6 ke atas biasanya sudah dilengkapi dengan fitur autoupgrade, klik menu System -> Packages, kemudian pilih Check for Updates.



Maka RouterOS akan mendownload ROS versi terbaru (current) dan melakukan upgrade secara otomatis, tentuya setelah reboot.

Sebagai bentuk pengamanan terhadap router, maka mungkin perlu dilakukan hal-hal sebagai berikut:

Akses ke Router

Usahakan untuk mengganti username admin ke nama yang lain, dan set password ke tingkat yang paling sulit, bagusnya sih gunakan password generator (pwgen).
/user set 0 name=namaAdmin
/user set 0 password="iniP455w0rLKJWERnxd98234^@#$/"
Membatasi akses user ke router hanya dari IP tertentu saja
/user set 0 allowed-address=172.16.16.16/21

Servis Router

Kebanyakan router secara default menjalankan beberapa service (layanan) aplikasi, seperti telnet, ftp, www, winbox dan sebagainya. Untuk keamanan, sebaiknya cukup jalankan yang perlu saja dan yang secure (ssh).

Matikan service yang tidak perlu
/ip service disable telnet,ftp,www,api,api-ssl
Bila perlu, ganti port default service, misalnya ssh (22) menjadi port 220
/ip service set ssh port=2200

MAC-access

RouterOS memiliki fitur tambahan agar memudahkan akses ke perangkat jaringan, fitur ini sebaiknya di-disable saja pada network production.

Disable MAC-Telnet
/tool mac-server set allowed-interface-list=noe
Disable MAC-Winbox
/tool mac-server mac-winbox set allowed-interface-list=none
Disable MAC-ping
/tool mac-server ping set enabled=no

Neighbor Discover

MikroTik Neighbor discovery biasanya digunakan untuk melihat atau memanage MikroTik router lain yang ada pada jaringan, sebaiknya matikan fitur ini.
/ip neighbor discovery-settings set discover-interface-list=noe

Bandwidth Server

Fitur ini digunakan untuk men-jajal throughput antar perangkat MikroTik, disable saja fitur ini jika tidak digunakan lagi.
/tool bandwidth-server set enabled=no

Interface Router

Jika ada interface atau port yang tidak digunakan, sebaiknya disable saja
/interface set x disabled=yes
x = no interface yang akan di-disable

Firewall ke Router

Tambahkan sedikit rule pada firewall
/ip firewall filter 
add action=accept chain=input comment="default configuration" connection-state=established,related 
add action=accept chain=input src-address-list=allowed_to_router 
add action=accept chain=input protocol=icmp 
add action=drop chain=input 
/ip firewall address-list 
add address=192.168.88.2-192.168.88.254 list=allowed_to_router
Firewall untuk client
/ip firewall filter 
add action=fasttrack-connection chain=forward comment=FastTrack connection-state=established,related 
add action=accept chain=forward comment="Established, Related" connection-state=established,related 
add action=drop chain=forward comment="Drop invalid" connection-state=invalid log=yes log-prefix=invalid 
add action=drop chain=forward comment="Drop tries to reach not public 
addresses from LAN" dst-address-list=not_in_internet in-interface=bridge1 log=yes log-prefix=!public_from_LAN out-interface=!bridge1 
add action=drop chain=forward comment="Drop incoming packets that are not NATted" connection-nat-state=!dstnat connection-state=new in-interface=ether1 log=yes log-prefix=!NAT 
add action=drop chain=forward comment="Drop incoming from internet which is not public IP" in-interface=ether1 log=yes log-prefix=!public src-address-list=not_in_internet 
add action=drop chain=forward comment="Drop packets from LAN that do not have LAN IP" in-interface=bridge1 log=yes log-prefix=LAN_!LAN src-address=!192.168.88.0/24 
/ip firewall address-list 
add address=0.0.0.0/8 comment=RFC6890 list=not_in_internet 
add address=172.16.0.0/12 comment=RFC6890 list=not_in_internet 
add address=192.168.0.0/16 comment=RFC6890 list=not_in_internet 
add address=10.0.0.0/8 comment=RFC6890 list=not_in_internet 
add address=169.254.0.0/16 comment=RFC6890 list=not_in_internet 
add address=127.0.0.0/8 comment=RFC6890 list=not_in_internet 
add address=224.0.0.0/4 comment=Multicast list=not_in_internet 
add address=198.18.0.0/15 comment=RFC6890 list=not_in_internet 
add address=192.0.0.0/24 comment=RFC6890 list=not_in_internet 
add address=192.0.2.0/24 comment=RFC6890 list=not_in_internet 
add address=198.51.100.0/24 comment=RFC6890 list=not_in_internet 
add address=203.0.113.0/24 comment=RFC6890 list=not_in_internet 
add address=100.64.0.0/10 comment=RFC6890 list=not_in_internet 
add address=240.0.0.0/4 comment=RFC6890 list=not_in_internet 
add address=192.88.99.0/24 comment="6to4 relay Anycast [RFC 3068]" list=not_in_internet

Penulis tidak akan menjelaskan satu-satu baris perintah di atas, silahkan pelajari dan searching informasi tambahan.


Demikian sedikit cerita tentang Bug Mikrotik untuk Mendapatkan Username dan Password, semoga bermanfaat, khususnya bagi penulis pribadi.

Terima kasih
(zed)

6 komentar:

  1. MAS. tempat saya kok tidak work ya mas

    BalasHapus
  2. cek versi nya, atau mungkin saja sudah safe

    BalasHapus
  3. Munculnya kaya ini kak?
    File "C:\Users\asus\Downloads\Video\WinboxPoC-master\WinboxPoC-master\WinboxExploit.py", line 66, in
    b[19] = d[38]
    IndexError: bytearray index out of range

    BalasHapus
  4. mas, kok saya begini terus Exploit failed

    BalasHapus


EmoticonEmoticon

 

Start typing and press Enter to search