Post

Get IP address for VPN automatically

Introduction

I wanted to create something that would automatically grab my VPN adapter’s assigned IP address. I started looking into ways to do it and came up with a command that would give me the IP itself. However, it would not create an environment variable for me or do everything fully. As such I recalled a peer that goes by Tib3rius that had created something similar to what I was working for. I can’t take full credit for this!

These scripts are used to automatically set an environment variable IP after connecting to a VPN. This setup is specifically for Hack The Box where your IP address may change periodically whether on the free or VIP servers.

These scripts may also be used for the OSCP Lab environment or any other environment. You will need to make some changes in order to make it work. For the OSCP Labs the necessary changes will be listed for your convenience.

source.sh File

This will be a pretty basic file but it will be called with our openvpn command.

1
2
#!/bin/bash
source /root/update-ip.sh

update-ip.sh File

Here is the necessary code to automatically grab the VPN adapter’s assigned IP address. It will then create an environment variable called IP which will contain your adapters IP address.

1
2
3
4
5
6
7
8
9
#!/bin/bash

if ifconfig tun0 &> /dev/null; then
	IP=`ifconfig tun0 | grep 'inet ' | awk '{print $2}'`;
else
	IP=`ifconfig eth0 | grep 'inet ' | awk '{print $2}'`;
fi

export IP;

In order to make this work for the OSCP Labs, simply copy and paste the below for your convenience:

1
2
3
4
5
6
7
8
9
#!/bin/bash

if ifconfig tun0 &> /dev/null; then
	IP=`ifconfig tap0 | grep 'inet ' | awk '{print $2}'`;
else
	IP=`ifconfig eth0 | grep 'inet ' | awk '{print $2}'`;
fi

export IP;

Please note the only change was instead of it being tun0 it is now tap0.

openvpn alias (Optional)

I typically like to use screen / tmux for holding open my VPN connection. That way if I accidentally close out of the terminal session, my connection will stay alive.

Once I’ve created the screen/tmux session, I use the below alias which should be placed in your .bashrc

alias vpn='openvpn --script-security 2 --up "/root/source.sh" --config /insert/path/to/ovpn/file'

Make sure you update the --config parameter path to wherever your ovpn file may be located.

Example of Usage

You would add the below alias into your .bashrc

alias msf-multi-handler='msfconsole -x "use exploit/multi/handler;setg LHOST $IP;setg LPORT 4444;setg EXITFUNC thread;set PAYLOAD generic/shell_reverse_tcp;clear;show options"'

This would launch the msfconsole for you, select the multihandler “exploit”, set your lhost and lport. Make sure your payload’s exit function is set to thread and use a generic reverse shell.

This post is licensed under CC BY 4.0 by the author.