EAP-MD5-Challenge

What is EAP-MD5-Challenge?

EAP-MD5-Challenge is an authentication method that uses the MD5 hashing algorithm. It is part of the Extensible Authentication Protocol (EAP) framework and involves a challenge-response authentication mechanism, where the client hashes the challenge with a shared secret and returns the result to the server for validation.

Why is EAP-MD5-Challenge useful?

  • Provides simple password-based authentication.

  • Widely supported in older systems.

  • Lightweight and easy to implement.

  • Suitable for environments requiring minimal overhead.

How it works?

  • The server sends a random challenge to the client.

  • The client hashes the challenge using a pre-shared secret (password).

  • The client sends the hashed challenge back to the server.

  • The server compares the returned hash with the expected hash to authenticate the client.

Where is EAP-MD5-Challenge used?

  • Wireless networks (e.g., WEP).

  • Legacy systems requiring challenge-response authentication.

  • Environments where minimal security is sufficient.

Which OSI layer does this protocol belong to?

  • EAP-MD5-Challenge operates at the Application Layer (Layer 7) of the OSI model.

  • It relies on lower OSI layers for transport, typically using RADIUS over UDP.

Is EAP-MD5-Challenge Windows specific?

No, EAP-MD5-Challenge is not Windows-specific. It is supported on various platforms, including Linux, macOS, and others.

Is EAP-MD5-Challenge Linux specific?

No, EAP-MD5-Challenge is not Linux-specific. It can be implemented across various operating systems.

Which Transport Protocol is used by EAP-MD5-Challenge?

EAP-MD5-Challenge typically uses UDP for transport when used with the RADIUS protocol.

Which Port is used by EAP-MD5-Challenge?

EAP-MD5-Challenge uses UDP port 1812 for authentication via the RADIUS protocol.

Is EAP-MD5-Challenge using Client-server model?

Yes, EAP-MD5-Challenge follows a client-server model. The client sends data to the server, which performs the authentication.

Does EAP-MD5-Challenge protocol use certificates?

No, EAP-MD5-Challenge does not use certificates. It relies on a shared secret (password) for authentication.

How many frame exchanges are seen during connection for EAP-MD5-Challenge protocol?

There are two frame exchanges during the connection process: 1. The server sends a challenge to the client. 2. The client sends the hashed challenge response back to the server.

Does EAP-MD5-Challenge Protocol use client certificates?

No, EAP-MD5-Challenge does not use client certificates for authentication.

Does EAP-MD5-Challenge Protocol use Server Certificates?

No, EAP-MD5-Challenge does not use server certificates. It uses a shared secret for challenge-response authentication.

Does EAP-MD5-Challenge Protocol depend on TCP?

No, EAP-MD5-Challenge does not depend on TCP. It typically uses UDP with RADIUS.

Does EAP-MD5-Challenge Protocol depend on UDP?

Yes, EAP-MD5-Challenge typically uses UDP when used with RADIUS.

What are the roles involved when testing EAP-MD5-Challenge Protocol?

  • Client: Initiates authentication by sending a challenge response.

  • Server: Verifies the challenge response and authenticates the client.

  • Administrator: Configures the shared secret and manages the authentication system.

Does EAP-MD5-Challenge Protocol work with FreeRADIUS server on Linux?

Yes, EAP-MD5-Challenge works with FreeRADIUS on Linux, as FreeRADIUS supports this authentication method.

Does EAP-MD5-Challenge Protocol work with Internal RADIUS server of hostapd?

Yes, EAP-MD5-Challenge works with the internal RADIUS server of hostapd.

What is the RFC version used for EAP-MD5-Challenge Protocol?

EAP-MD5-Challenge is defined in RFC 3748 (Extensible Authentication Protocol).

During Connection Procedure which EAP packets are encrypted?

EAP-MD5-Challenge does not encrypt the EAP packets. The security relies on the challenge-response authentication.

Can you explain different stages of Connection Procedure for EAP-MD5-Challenge?

  1. Challenge: The server sends a challenge to the client.

  2. Response: The client hashes the challenge with the shared secret and returns it.

  3. Authentication: The server compares the hash and authenticates the client.

What is the final output of Connection Procedure?

The final output is either successful authentication if the hashes match, or failure if the hashes do not match.

What is the format of the key generated after the connection procedure?

EAP-MD5-Challenge does not generate a key. It performs password-based authentication through a challenge-response mechanism.

Where is the use of PMK generated by the connection procedure?

EAP-MD5-Challenge does not involve a Pairwise Master Key (PMK), as it uses a simple password-based authentication method.

  • In this section, you are going to learn

  • Terminology

  • Version Info

  • rfc details

  • Run Free RADIUS

FreeRADIUS: Download latest freeradius source code

Note

  • Make sure internet is available in laptop to download freeradius package

test:~$ wget https://github.com/FreeRADIUS/freeradius-server/archive/v3.0.x.tar.gz

FreeRADIUS: Extract freeradius

test:~$ tar -zvf v3.0.x.tar.gz

FreeRADIUS: Change directory to Radius server

test:~$ cd freeradius-server-3.0/

FreeRADIUS: Check the current working directory using pwd command

Note

  • Make sure your current working directory is freeradius-server-3.0

test:~$ pwd
/home/test/freeradius-server-3.0

FreeRADIUS: Open debian/rules and add this line –without-rml_sql_iodbc above –without-rlm_eap_ikev2

test:~$ vim debian/rules
--without-rml_sql_iodbc \
--without-rlm_eap_ikev2 \

FreeRADIUS: Configure for Compilation

test:~$ ./configure

FreeRADIUS: Build the Radius server

test:~$ make

FreeRADIUS: Go to raddb folder (all radius server/client files and certificates and keys will be generated here)

test:~$ cd /usr/local/etc/raddb

FreeRADIUS: Open clients.conf file and verify localhost client is present else add your own client like below

test:~$ sudo vi clients.conf

client 192.168.56.10{
ipaddr = 192.168.56.10
secret = testing123
}  

FreeRADIUS: Open users file and uncomment below two lines or add

test:~$ sudo vi users

bob 	Cleartext-Password := "testing123"
 	Reply-Message := "Hello, %{User-Name}"

FreeRADIUS: Set default_eap_type=tls in eap file located in /usr/local/etc/raddb/mods-enabled

test:~$ sudo vi /usr/local/etc/raddb/mods-enabled/eap

default_eap_type=md5

FreeRADIUS: Start radius server

test:~$ sudo radiusd -X
  • Run AP mode operation with hostapd

AP : Download hostapd

Note

  • Make sure internet is available in laptop to download hostapd package

test:~$ wget http://w1.fi/releases/hostapd-2.9.tar.gz

AP: Install required packages

test:~$ sudo apt install libnl-genl-3-dev libnl-3-dev libdbus-glib-1-dev

AP : Extract hostapd

test:~$ tar -xzvf hostapd-2.9.tar.gz

AP : Change directory to hostapd

test:~$ cd hostapd-2.9/hostapd/

AP : Check the current working directory using pwd command

Note

  • Make sure your current working directory is hostapd

test:~$ pwd
/home/test/hostapd-2.9/hostapd

AP : Copy the contents of defconfig file to .config file

Note

  • .config file is required for make to start compilation of hostapd

test:~$ sudo cp defconfig .config

AP : Complile hostapd

Note

  • Compile hostapd by running make command

test:~$ make

AP : Check for the binaries created

Note

  • Make sure hostapd and hostapd_cli are present

test:~$ ls
hostapd
hostapd_cli

AP : Create a hostapd.conf file in /etc/hostapd folder with below content

test:~$ sudo vim /etc/hostapd/hostapd.conf

ctrl_interface=/var/run/hostapd
interface=enp0s8
driver=wired
logger_stdout=1
logger_stdout_level=1
debug=2
ieee8021x=1
eap_server=0
eap_user_file=/etc/hostapd/eap_user
eap_reauth_period=3600
use_pae_group_addr=1
auth_algs=1
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123
acct_server_addr=127.0.0.1
acct_server_port=1812
acct_server_shared_secret=testing123
macaddr_acl=0
ca_cert=/usr/local/etc/raddb/certs/ca.pem
server_cert=/usr/local/etc/raddb/certs/server.crt
private_key=/usr/local/etc/raddb/certs/server.p12
private_key_passwd=whatever 

AP : Create a file eap_user in /etc/hostapd/ folder with below content

test:~$ sudo vim /etc/hostapd/eap_user

AP : Run hostapd

test:~$ sudo ./hostapd /etc/hostapd/hostapd.conf
enp0s8: interface state UNINITIALIZED->ENABLED
enp0s8: AP-ENABLED

STA : Download wpa_supplicant

Note

  • Make sure internet is available in laptop to download supplicant package

test:~$ wget https://w1.fi/releases/wpa_supplicant-2.9.tar.gz

STA: Install required packages

test:~$ sudo apt install libnl-genl-3-dev libnl-3-dev libdbus-glib-1-dev

STA : Extract wpa_supplicant

test:~$ tar -xvf wpa_supplicant-2.9.tar.gz

STA : Change directory to wpa_supplicant

test:~$ cd wpa_supplicant-2.9/wpa_supplicant/

STA : Check the current working directory using pwd command

Note

  • Make sure your current working directory is wpa_supplicant

test:~$ pwd
/home/test/wpa_supplicant-2.9/wpa_supplicant

STA : Copy the contents of defconfig file to .config file

Note

  • .config file is required for make to start compilation of supplicant

test:~$ cp defconfig .config

STA : Compile wpa_supplicant

Note

  • Compile supplicant by running make command.

test:~$ make

STA: You might get errors while make regarding openssl headers in that case install the openssl headers and then do make clean and then do make again.

test:~$ sudo apt install libssl-dev
test:~$ make clean
test:~$ make

STA : Check for the binaries created

Note

  • Make sure wpa_supplicant and wpa_cli are present

test:~$ ls
wpa_supplicant
wpa_cli

STA: Copy required certificates from hostapd to wpa_supplicant

STA : Create wpa_supplicant.conf

test:~$ sudo vim wpa_supplicant.conf

ctrl_interface=/run/wpa_supplicant
update_config=1
network={
key_mgmt=IEEE8021X
eap=MD5
identity="bob"
password="testing123"
}

STA : Run wpa_supplicant

test:~$ sudo ./wpa_supplicant -D wired -i enp0s8 -c wpa_supplicant.conf
enp0s8: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully

STA: Test

test:sudo ./wpa_cli -i enp0s8
> status
  • setup

  • setup

  • packet details

  • usecases

  • features

  • Reference links