FreeBuf|工控渗透框架:PLC密码检测( 二 )


本文插图

废话不多说 , 直接上图:
FreeBuf|工控渗透框架:PLC密码检测
本文插图
FreeBuf|工控渗透框架:PLC密码检测
本文插图

是不是很简单 , 如果还想验证其它密码保护级别 , 可以通过上面的上步骤重新修改PLC的密码保护级别 , 然后再通过ISF中的s7_200_password_check模块进行验证 。 说到这个模块仔细的同学应该已经发现 , 上一篇文章里提到的从github中clone的ISF项目里没有s7_200_password_check模块啊 , 你这个模块是哪里来的?
如上面细心网友发现的那样 , github中的ISF项目确实没有今天要讲的这个模块 , 这也就是我们为什么要开发这个框架的原因 , 它是一套攻击框架 , 大家可以根据自己对PLC的研究成果 , 添加不同的功能模块 , 最后将所有的攻击模块都集成到这个框架中 , 我们就可以拥有一个强大的工控攻击工具 。
接下来我们就通过上面的案例讲解一下 , 如何给ISF添加一个PLC密码检测模块 , Iet’s go!
首先 , 你需要在ISF的module目录(例:/home/one/soft/isf/module/exploits/Siemens)下创建两个文件 , 名字任意(例:s7_200_password_check.py , s7_200_password_check.xml)
xml文件<t:configid="7f1a1992802517842c14ddfd1a2e3a6b"name="s7_200_password_check"version="1.1.0"configversion="1.1.0.0"author="one"xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'代码解释:
id:可以是这个模块名称的md5值 , 也可以复制我当前这个值 , 然后随变改几个字符即可
name:这里的name就是ISF框架use时的模块名称 , 也是py文件的名称
TargetIp和TargetPort:是你这个模块需要的参数
py文件xml文件是用来配置py文件的参数 , 以及关联ISF框架的 , 而真正完成扫描或攻击功能的模块是在py里面编写的 , 下面我们来看s7_200_password_check.py模块是如何编写的 。
#encoding:utf-8importsocketimporttimefromcore.exploitimport*classCheck_passwd(BaseExploit):register_info = {'ID':'ICF-2020-F0010009','Name':'s7-200检查','Author':'one','License': ISF_LICENSE,'Create_Date':'2020-06-04','Description':'''可以显示密码状态''',}register_options = [mkopt_rport(102)]defexploit(self,*args,**kwargs):self.ip = self.TargetIpself.default_port = int(self.TargetPort)ifself.default_port !=102:returnFalsetry:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect((self.ip, self.default_port))pp ="0300001611e00000000100c0010ac1020100c2020101".decode("hex")sock.send(str(pp))data = http://news.hoteastday.com/a/sock.recv(1024)pp ="0300001902f08032010000662100080000f0000001000101e0".decode("hex")data = http://news.hoteastday.com/a/sock.recv(1024)time.sleep(0.1)pp ="0300001f02f080320100000004000e00000401120a100200020000030005d0".decode("hex")data = http://news.hoteastday.com/a/sock.recv(1024)


推荐阅读