So I've been looking through the WPA and 4-way handshake mechanisms trying to brainstorm the possibilities for creating a fake AP with WPA encryption, an option which seems to be missing from airbase-ng. Here are my thoughts so far: I create a fake AP with WPA-PSK encryption flag and set its ESSID to the target AP's ESSID. By de-authenticating the clients connected to the target AP, the normal reaction would be searching for their AP in the WiFi list. They would attempt to connect to the fake AP using the password I'm trying to retrieve.
According to this Wikipedia demonstration of the 4-way handshake: https://en.wikipedia.org/wiki/IEEE_802.11i-2004#Protocol_operation The PTK is never shared on the fly between the AP and the station (client); instead, MIC's are compared. In packet 2/4, the station sends its SNonce signed with an MIC. After receiving this packet, the fake AP would skip constructing a PTK and would just send packet 3/4 with a randomly assigned GTK and an MIC (I'm not sure whether this MIC is verified by the client).
So my questions are: Does the client verify the MIC from the 3rd packet of the handshake? If it doesn't, does that mean that the client has been successfully authenticated and connected to the AP?
Further thoughts: In the absence of an AP-sided PTK, can I just send raw un-encrypted data packets to the client for the purpose of DNS spoofing? In the case that raw data packets aren't accepted by the client, could the Hole196 vulnerability (documented here: http://www.airtightnetworks.com/WPA2-Hole196) be utilized for DNS spoofing, given that the GTK is known by the fake AP?
I hope you're caught up with my question; if you need any further clarification, I'll be glad to reply.