Skip to content

Protection

Info

Semua kode yang ada pada catatan ini dapat di unduh dari repo https://github.com/muhammadfarras/Python-Etichal-Hacking-From-Scratch

Sebelum melakukan reconainsasce, atau pengumpulan informasi, kita harus memastikan identitas kita terlindungi. Karena jika tidak, maka kita akan mudah untuk dilacak. Indentitas kita saat mengumpulkan informasi dapat dilacak dengan beberapa parameter, namn yang paling sering adalah dengan melacak IP address dan MAC address.

  1. Mask the IP adress Untuk menopengi ip public, kita dapat menggunakan jasa Virtual Private Network. Penting untuk diingat, jangan terlalu mempercayakan trafic kita ke penyedia jasa VPN. Dari pandangan keamanan, menggunakan VPN sama saja memindahkan trafik kita secara penuh 1 dari Internet Service Provider (ISP) ke perusahaan lain yang menyediakan VPN service. Bahkan, berhati-hatilah dalam menggunakan VPN service yang GRATISAN. Karena banyak dari penyedia VPN gratisan tersebut memasukan malware atau menggunakan resource mesin kita untuk tujuan lain seperti, bitcoin mining. Bahkan ada beberapa VPN membocorkan domain name server (DNS), sebuah server yang digunakan untuk memetakan nama wesbite ke IP address, walaupun dengan alibi menggunakan itu untuk menopengi IP address kita.

  2. Spoofing MAC address Bagaimanapun, ketika kita melakukan scanning pada local network, kita dapat terlacak dari MAC address (Media Access Control) kita. Mesin kita memliki Network Interface Card (NIC), yang digunakan untuk berkomunikasi dengan komputer lain. Didalam NIC terdapat MAC address. InsyaAllah pada setelah inis kita akan menggati identitas MAC address sehingga dapat mengelabui mesin lain termasuk Instrusion Detection System (IDS) ketika kita berkomunikasi dengan mesin lain.

Transforming MAC address

Kita akan menggunakan command ifconfig untuk mengubah MAC address. Bawaanya command ini sudah terinstall ketika menginstall Operatign System, namun jika belum anda harus menginstall package net-tools pada mesin anda.

sudo apt install net-tools

Setelah berhasil menginstall package net-tools, anda dapat melihat MAC address anda menggunakan perintah tersebut.

ifconfig
# Result
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:8e:a9:07:be  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 28:d2:44:ba:92:dd  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 268  bytes 21440 (20.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 268  bytes 21440 (20.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.16  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::cb9f:4295:f581:e7ff  prefixlen 64  scopeid 0x20<link>
        ether 18:cf:5e:ea:3e:01  txqueuelen 1000  (Ethernet)
        RX packets 233896  bytes 331772750 (316.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 99376  bytes 10940300 (10.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ada empat nilai disini, namun kita hanya fokus kebeberapa saja, eth0, wlan0, dam lo. eth0 adalah nama dari Network Interface Card (NIC), dimana lo adalah loopback adapter, dan wlan0 adalah WIFI LAN.

Untuk mengganti MAC addres interface wifi lan kita, harus dipastikan interface tersebut tidak hidup.Sehingga kita harus mematikannya terlebih dahulu sebelum menggantinya. Untuk mematikan intrafe tersebtu anda dapat menggunakan perintah dibawah ini.

sudo ifconfig wlan0 down 

Untuk mengganti MAC addres anda dapat menggunakn perintah dibawah ini

To change the MAC address, you can run the following command. Let's say you want your new MAC address to be 00:11:22:33:44:55 . Here, you can do the following:

sudo ifconfig wlan0 hw ether 12:bb:34:cc:56:ff

Selanjutnya aktifkan lagi interface wlan0

sudo ifconfig wlan0 up

Sekarang mari kita lihat MAC addres dari interface wlan0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.77  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 12:bb:34:cc:56:ff  txqueuelen 1000  (Ethernet) # (1)!
        RX packets 337967  bytes 331974737 (316.5 MiB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 63154  bytes 14786090 (14.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  1. ether dari interface wlan0 berubah menjadi 12🇧🇧34🇨🇨56:ff

Dapat kita lihat MAC address berhasil berubah. sekarang, jika jika kita ingin scan sesutu pada jaringan, MAC address ini yang akan ditampilkan dari pada MAC address asli kita.

Bukti MAC kita sekarang telah menipu adalah dengan melihat traffic ARP2 menggunakan perintah tcpdump untuk melihat trafik ARP respone dan request yang terjadi pada mesin kita.

sudo tcpdump -i wlan0 arp

# Hasil
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
00:03:11.261658 ARP, Request who-has 192.168.1.1 tell 192.168.1.84, length 28
00:03:11.859366 ARP, Request who-has 192.168.1.53 tell 192.168.1.1, length 46
00:03:12.577446 ARP, Request who-has 192.168.1.77 tell 192.168.1.1, length 46
00:03:12.577452 ARP, Reply 192.168.1.77 is-at 12:bb:34:cc:56:ff (oui Unknown), length 28
00:03:12.814945 ARP, Request who-has 192.168.1.53 tell 192.168.1.1, length 46
00:03:13.820591 ARP, Request who-has 192.168.1.53 tell 192.168.1.1, length 46

Tip

Penggunaan ifconfig karadluasa walaupun masih banyak dari praktisi jaringan dan keamanan yang menggunakan.Perintah IP adalah alternatif dan pengganti penggunaan ifconfig. Lihat catatan tentang perintah ifconfig dan IP

Creating python script

Python memliki pustaka bawaan yang dapat digunakan untuk menjalankan system command menggunakan subprocess. Library ini dapat berinteraksi dengan OS terkait.

Untuk menjalankan command, subprocess memliki method run. Menggunakan method ini kita dapat mengeksekusi system commands pada OS. katakan kita ingin melihat informasi network interface wlan0, maka perintahnya adalah;

Kode untuk menampilkan informasi interface wlan0

import subprocess

subprocess.run(
    ['ifconfig wlan0'], 
    shell=True)
Output
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.77  netmask 255.255.255.0  broadcast 192.168.1.255
    ether 12:bb:34:cc:56:ff  txqueuelen 1000  (Ethernet)
    RX packets 422366  bytes 384440053 (366.6 MiB)
    RX errors 0  dropped 1  overruns 0  frame 0
    TX packets 79664  bytes 19800255 (18.8 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

CompletedProcess(args='ifconfig wlan0', returncode=0)

Fungsi ini memiliki parameter wajib yang berisikan perintah, command. Parameter opsional lainnya, shell=True, artinya kita ingin menampilkan nilai keluaran dari perintah tersebut pada console. Dan perlu diingat, setiap command yang ada pada parameter perintah tersebut pada dasarnya sama dengan jika kita menulis pada terminal langsung. Maka dari itu, perintah yang memerlukan root privilege juga mewajibkan kode python tersebut dijalankan dengan root user atau group sudo user pula.

Python version warning

Fungsi run pada modul subprocess baru ada pada versi python 3.5 keatas. python doc

now we can use python to change our MAC address, here is the full code to achive that goal.

change-mac.py

# change-mac.py
import subprocess

# Set the interface
interface = 'wlan0'

# Set the new MAC address
new_macaddress = '12:34:56:78:90:01'

# First information about running script
print("Change MAC addres of interface \x1b[1;32;1m%s\x1b[0m to \x1b[1;31;1m%s\x1b[0m"%(interface, new_macaddress))

# Shutdown the interface
print ('shutdown the interface \x1b[1;31;1m%s\x1b[0m' %(interface))
subprocess.run(['ifconfig',interface, 'down'])

# Change MAC addr
print ('\x1b[1;32;1m%s\x1b[0m'%('Changing process'))
subprocess.run( ['ifconfig', interface, 'hw', 'ether', new_macaddress])
print ('MAC address change to \x1b[1;32;1m%s\x1b[0m'%(new_macaddress))

# Turnin up interface
subprocess.run(["ifconfig", interface, "up"])
print("network interfaced turned \x1b[1;32;1m%s\x1b[0m"%("On"))

try:
    while True:
            pass
except KeyboardInterrupt:
    print("\nStarting to change the real MAC address")

    print("Get the real MAC address ",end="")


    realone = subprocess.run(["ethtool -P wlan0 | awk '{print $3}'"], shell=True, capture_output=True).stdout.decode().replace("\n","")

    print("\nThe Real MAC Address \x1b[1;31;1m%s\x1b[0m"%realone)

    print("Turn down wlan interface")

    subprocess.run(["ifconfig",interface,"down"])

    print("\tWLAN is Down")

    print("Change MAC address")

    subprocess.run ("ifconfig wlan0 hw ether "+realone, shell=True)

    print("\t Done")

    print("Turnin on interface again")

    subprocess.run(["ifconfig wlan0 up"], shell=True)

After that you will see that your MAC address are change to 12:34:56:78:90:01 âž¡ 18\:cf\:5e\:ea\:3e\:01

ifconfig wlan0
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 18:cf:5e:ea:3e:01  txqueuelen 1000  (Ethernet)
        RX packets 642027  bytes 516313066 (492.3 MiB)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 132437  bytes 30581725 (29.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Untuk mengembalina ethernet anda, ada dapat menggunakan perintah ethtool, fungsi tersebut akan menampilkan alamat permanen dari MAC addres anda. script lengkapnya dibawah ini

sudo ifconfig wlan0 hw ether $(ethtool -P wlan0 | awk '{print $3}')

Namun untuk kode change-mac.py sudah ada script untuk mengembalikan MAC address aslinya


Summary

In this chapter, we learned about the basics of networking and how we can protect ourselves on a local network by spoofing our MAC address for scanning purposes. This chapter helped us get a deeper insight into the networking aspects of the computer system, as well as how we can use Python to protect and mask our identity in a local network


  1. Maksud mempercayakan semua trafik ini berkaitan dengan full tunnel VPN. Untuk catatan tentang VPN dapaat melihat ke Virtual Private Network dan untuk Split tunneling VPN 

  2. devices in a network periodically send ARP responses to other devices in a network to let them know of their current IP and MAC addresses.