Table of Contents
The Tools
The Setup
Working around OS X Bugs
Installing SSL Certificates
Home Database Mysql Tutorial OSX as Transparent Wifi MITM Proxy

OSX as Transparent Wifi MITM Proxy

Jun 07, 2016 pm 04:29 PM
wifi

Yesterday I was in the situation where I wanted to debug an iOS deviceand what network calls it would make. Normally the trivial step is tojust define an HTTP proxy server in the wifi settings but that will onlywork for as long as you have

Yesterday I was in the situation where I wanted to debug an iOS device and what network calls it would make. Normally the trivial step is to just define an HTTP proxy server in the wifi settings but that will only work for as long as you have something that actually honors this proxy server. But there are better ways to transparently proxy connections from a device connected via Wifi which does not require any changes on the actual device.

The Tools

In order for this to work you need a device running OS X which is connected to the same network as the Wifi. Then you need to convince the Wifi device to see you as the gateway instead of the actual gateway. The easiest way is just to go to the settings and change the gateway to your computer's IP. The second ingredient is an HTTP proxy, ideally one that can also decrypt and reencrypt SSL traffic. Personally I can recommend Charles for that. Lastly you will need another proxy that can work transparently which sits between your device and Charles. On OS X redsocks gets this job done.

If you don't want to spend the money on Charles or you want to rewrite traffic with Python you can use mitmproxy.

The Setup

The first thing you will notice is that when you point your Wifi device to your computer it will loose network connectivity. That's because by default your computer won't forward packets. This can easily be changed through sysctl:

$ sudo sysctl -w net.inet.ip.forwarding=1
Copy after login

After that you should be able to browse the internet again on your Wifi device.

The second step is installing redsocks. If you have brew that's a very trivial operation:

$ brew install redsocks
Copy after login

Once installed you will need to create a config file for it. Call it redsocks.conf and place it in a folder from which you run redsocks:

base {
    log_debug = on;
    log_info = on;
    log = stderr;
    daemon = off;
    redirector = generic;
}
redsocks {
    local_ip = 0.0.0.0;
    local_port = 12345;
    ip = 127.0.0.1;
    port = 8889;
    // known types: socks4, socks5, http-connect, http-relay
    type = socks5;
}
Copy after login

Since I'm using Charles I take advantage of it's socks5 support and point it to localhost:8889 where Charles normally starts up if configured as Socks5 proxy. If you're using a regular HTTP proxy you can use http-connect as proxy type. The local_port defines where the actual transparent redsocks proxy opens.

All you have to do then is to start it:

$ redsocks
Copy after login

After that you will need to point all the traffic that is not from your computer and from port 80 and 443 of your Wifi through redsocks. On OS X the firewall canbe controlled through ipfw. In my case the wifi device is en1:

$ sudo ipfw add fwd 127.0.0.1,12345 tcp from not me to any 80 in via en1
$ sudo ipfw add fwd 127.0.0.1,12345 tcp from not me to any 443 in via en1
Copy after login

Working around OS X Bugs

Now currently if you finish that above setup you will notice that nothing actually works. The cause for this is a Bug in the OS X kernel that requires flipping the net.inet.ip.scopedroute flag to 0. I am not entirely sure what it does, but the internet reports that it breaks network sharing through the user preferences. In any case it fixes ipfw based forwarding so you can flip it with sysctl:

$ sudo sysctl -w net.inet.ip.scopedroute=0
Copy after login

Unfortunately in OS X Lion this flag can actually not be flipped from userspace so you need to set it as boot parameter and then restart your computer. You can do this by editing the /Library/Preferences/SystemConfiguration/com.apple.Boot.plist file:

<?xml version="1.0" encoding="UTF-8"?>

<plist version="1.0">
<dict>
  <key>Kernel Flags</key>
  <string>net.inet.ip.scopedroute=0</string>
</dict>
</plist>
Copy after login

Installing SSL Certificates

After all that your HTTP traffic should show up in your SSL interception proxy. SSL will only work if the application on your Wifi device is trusting your SSL interception proxy's CA. For browsers for instance that's trivial to change. The Charles Certificate can be added to the trust store by following this link: charles.crt. Note that this will not work with applications that don't use the system's CA trust store. In that case you will need to recompile your application so that it trusts the Charles CA.

../../../../static/charles.png
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What to do if the HP printer cannot connect to wifi - What to do if the HP printer cannot connect to wifi What to do if the HP printer cannot connect to wifi - What to do if the HP printer cannot connect to wifi Mar 06, 2024 pm 01:00 PM

What to do if the HP printer cannot connect to wifi - What to do if the HP printer cannot connect to wifi

Why is my home wifi showing 'unsafe network'? Why is my home wifi showing 'unsafe network'? Nov 15, 2023 pm 02:39 PM

Why is my home wifi showing 'unsafe network'?

Why can't I access the Internet even though my wifi is connected? Why can't I access the Internet even though my wifi is connected? Dec 07, 2023 pm 05:00 PM

Why can't I access the Internet even though my wifi is connected?

Why is there an exclamation mark on mobile wifi? Why is there an exclamation mark on mobile wifi? Sep 18, 2023 pm 04:05 PM

Why is there an exclamation mark on mobile wifi?

Why can't I connect to Wi-Fi in Windows 10? Why can't I connect to Wi-Fi in Windows 10? Jan 16, 2024 pm 04:18 PM

Why can't I connect to Wi-Fi in Windows 10?

How to solve the problem of not being able to enter the wifi password in win10 How to solve the problem of not being able to enter the wifi password in win10 Dec 30, 2023 pm 05:43 PM

How to solve the problem of not being able to enter the wifi password in win10

Solution to Win11 unable to display WiFi Solution to Win11 unable to display WiFi Jan 29, 2024 pm 04:03 PM

Solution to Win11 unable to display WiFi

What is the reason why the wifi function cannot be turned on? Attachment: How to fix the wifi function that cannot be turned on What is the reason why the wifi function cannot be turned on? Attachment: How to fix the wifi function that cannot be turned on Mar 14, 2024 pm 03:34 PM

What is the reason why the wifi function cannot be turned on? Attachment: How to fix the wifi function that cannot be turned on

See all articles