Sometimes we might have a requirement to create a custom script or service that needs to be run at startup. In this post we will be testing the creation of a custom service that changes the MAC Address of the wireless and ethernet Network Interface Card on boot. This process is achieved by creating a Systemd Unit file. This test was performed on Fedora Linux version 31.
Creating the Systemd Unit File
To create a Systemd Unit File we will create the following file.
 vim /etc/systemd/system/macchange@.service  
The contents of the above file are as follows.
 [Unit]  
 Description=macchanger on %I  
 Wants=network-pre.target  
 Before=network-pre.target  
 After=sys-subsystem-net-devices-%i.device  
 [Service]  
 ExecStart=/usr/bin/macchanger -r %I  
 Type=oneshot  
 [Install]  
 WantedBy=multi-user.target  
Starting Services
We will now enable the services for both the wireless and as well as ethernet NIC. Enabling the services will start the services on boot. 
 # systemctl enable macchange@wlp2s0.service  
 # systemctl enable macchange@enp1s0.service  
We will test the service by rebooting the device.
Testing the Setup
Before rebooting, we check the MAC Address of the interfaces enp1s0 (c8:d3:ff:fd:f2:a4) and wlp2s0 (94:53:30:78:5f:d1). $ ifconfig  
 enp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500  
     ether c8:d3:ff:fd:f2:a4 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  
 wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500  
     inet 192.168.20.4 netmask 255.255.255.0 broadcast 192.168.200.255  
     inet6 fe80::f016:771c:2a61:f3d3 prefixlen 64 scopeid 0x20<link>  
     ether 94:53:30:78:5f:d1 txqueuelen 1000 (Ethernet)  
     RX packets 80646 bytes 82143411 (78.3 MiB)  
     RX errors 0 dropped 0 overruns 0 frame 0  
     TX packets 40453 bytes 6154019 (5.8 MiB)  
     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  
After rebooting, we can see that the MAC Addresses have been changed to enp1s0 (96:af:17:f0:9e:1f) and wlp2s0 (aa:5f:09:97:64:06).
 $ ifconfig  
 enp1s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500  
     ether 96:af:17:f0:9e:1f 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  
 wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500  
     inet 192.168.20.4 netmask 255.255.255.0 broadcast 192.168.20.255  
     inet6 fe80::f016:771c:2a61:f3d3 prefixlen 64 scopeid 0x20<link>  
     ether aa:5f:09:97:64:06 txqueuelen 1000 (Ethernet)  
     RX packets 80646 bytes 82143411 (78.3 MiB)  
     RX errors 0 dropped 0 overruns 0 frame 0  
     TX packets 40453 bytes 6154019 (5.8 MiB)  
     TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0  
So we have successfully configured Systemd service to randomly change the MAC Address of WLAN and LAN NIC on boot by utilizing the macchanger tool.
References
Creating a Linux service with systemd - Benjamin Morel - Medium
Use systemd to Start a Linux Service at Boot | Linode
[SOLVED] Could not change MAC. & Setup Macchanger auto spoofing/randomization in Kali
10.6. Creating and Modifying systemd Unit Files Red Hat Enterprise Linux 7 | Red Hat Customer Portal
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.