精华内容
下载资源
问答
  • 当我们在分析IOT设备,如智能摄像头、智能门锁、智能路由器等等产品时,采用传统的安全检测手段,如对APP的逆向、云端服务器的渗透测试、产品通信的抓包等方式可以获得部分的信息,但如果需要深入分析智能设备底层的...

    前言

    当我们在分析IOT设备,如智能摄像头、智能门锁、智能路由器等等产品时,采用传统的安全检测手段,如对APP的逆向、云端服务器的渗透测试、产品通信的抓包等方式可以获得部分的信息,但如果需要深入分析智能设备底层的工作原理,从中发现更深层次的安全问题,就不可避免的需要直接接触硬件本身,这也是传统安全手段未能触及的部分,据此,下面简单的谈下关于电路分析和芯片固件提取和调试的一点心得。

    芯片

    ROM 芯片

    常见的 IOT 产品,一般采用嵌入式 linux 系统开发,对芯片分析主要目的之一就是获取到硬件系统的固件,从固件中分析可能存在的安全风险。
    固件一般存储在 ROM 中,ROM 是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。
    常见的存储芯片按照存储读取方式和制作工艺不同,可以分为: ROM、PROM、EPROM、EEPROM、FLASH-ROM。
    在大部分IOT产品中多采用 flash 芯片作为存储器,提取固件主要也是通过读取 flash 芯片。
    这里写图片描述

    这里写图片描述

    这里写图片描述

    Flash芯片

    FLASH ROM 属于真正的单电压芯片,在使用上很类似 EEPROM,因此,有些书籍上便把 FLASH ROM 作为 EEPROM 的一种。事实上,二者还是有差别的。FLASH ROM在擦除时,也要执行专用的刷新程序,但是在删除资料时,并非以 Byte 为基本单位,而是以 Sector(又称 Block)为最小单位,Sector 的大小随厂商的不同而有所不同;只有在写入时,才以 Byte 为最小单位写入;FLASH ROM 芯片的读和写操作都是在单电压下进行,不需跳线,只利用专用程序即可方便地修改其内容;FLASH ROM的存储容量普遍大于EEPROM,约为 512K 到至 8M KBit,由于大批量生产,价格也比较合适,很适合用来存放程序码,近年来已逐渐取代了 EEPROM,广泛用于主板的 BIOS ROM,也是 CIH 攻击的主要目标。

    这里写图片描述

    这里写图片描述

    这里写图片描述

    根据技术方式不同可分为: IIC EEPROM、SPI NorFlash 、CFI Flash、Parallel NandFlash、SPI NandFlash、eMMC Flash、USF2.0 等。
    其中 SPI NorFlash 因为接口简单,使用的引脚少,易于连接,操作方便,并且可以在芯片上直接运行代码,其稳定性出色,传输速率高,在小容量时具有很高的性价比,这使其很适合应于嵌入式系统中作为 FLASH ROM,所以在市场的占用率非常高。
    我们通常见到的 S25FL128、MX25L1605、W25Q64 等型号都是 SPI NorFlash,其常见的封装多为 SOP8,SOP16,WSON8,US0N8,QFN8、BGA24 等。
    这里写图片描述

    这里写图片描述

    芯片印字

    一般 PCB 上有多块逻辑处理 IC,在多个 IC 芯片中,可以通过分析电路原理和查找芯片印字来确定具体的存储芯片。
    芯片上的丝印大多数情况会注明厂商和芯片型号,通过印字可以初步确定芯片类型,同时丝印层的文字也可以帮助我们来确定存储的格式和大小,常见的 W25 芯片的印字含义如下:

    这里写图片描述

    编程器

    读取Flash芯片,需要借助编程器,编程器又称烧录器、写入器、写码器,是专门用来对 IC 芯片进行读写、编程/烧录的仪器。并口多功能 BIOS 编程器,它可以对 EPROM(27系列芯片)、EEPROM(28系列芯片)、FLASH ROM(29、39、49系列芯片)及单片机、串行芯片等进行读写、编程,是一种性价比较高的编程器。
    编程器种类多样,从功能简单的专用型到功能全面的全功能通用型都有,价格从几十元到上万元不等。

    这里写图片描述

    这里写图片描述

    这里写图片描述

    通信协议

    串口通信指串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。在串口通信中,常用的协议包括 RS-232、 RS-422 和RS-485。

    这里写图片描述

    这里写图片描述

    这里写图片描述

    RS-232

    通信方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。

    RS-422

    RS-422 标准全称是“平衡电压数字接口电路的电气特性”,在 RS232 后推出,使用 TTL 差动电平表示逻辑,就是两根的电压差表示逻辑,RS422 定义为全双工的,所以最少要4根通信线(一般额外地多一根地线)。
    ### RS-485
    RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,RS-485与 RS-422 的区别在于RS-485为半双工通信方式, RS-422 为全双工方式。 RS-422 用两对平衡差分信号线分别用于发送和接收,所以采用 RS-422 接口通信时最少需要4根线。RS-485 只用一对平衡差分信号线,不能同时发送和接收,最少只需两根连线。
    ### SPI
    spi是串行外设接口(Serial Peripheral Interface)的缩写。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如 AT91RM9200。
    ### I2C
    I2C 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC 是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。

    信号分析

    示波器分析

    示波器是一种用途十分广泛的电子测量仪器。它能把肉眼看不见的电信号变换成看得见的图像,便于人们研究各种电现象的变化过程。示波器利用狭窄的、由高速电子组成的电子束,打在涂有荧光物质的屏面上,就可产生细小的光点(这是传统的模拟示波器的工作原理)。在被测信号的作用下,电子束就好像一支笔的笔尖,可以在屏面上描绘出被测信号的瞬时值的变化曲线。利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压、电流、频率、相位差、调幅度等等。

    这里写图片描述

    这里写图片描述

    通过分析电路结构,找到待测的引脚和信号源,分析其信号变化和具体的信号形式,得到模拟信号和经过外部AD转换信号的波形图。

    逻辑分析仪

    逻辑分析仪是分析数字系统逻辑关系的仪器。逻辑分析仪是属于数据域测试[2]仪器中的一种总线分析仪,即以总线(多线)概念为基础,同时对多条数据线上的数据流进行观察和测试的仪器,这种仪器对复杂的数字系统的测试和分析十分有效。逻辑分析仪是利用时钟从测试设备上采集和显示数字信号的仪器,最主要作用在于时序判定。由于逻辑分析仪不像示波器那样有许多电压等级,通常只显示两个电压(逻辑 1 和 0 ),因此设定了参考电压后,逻辑分析仪将被测信号通过比较器进行判定,高于参考电压者为 High ,低于参考电压者为 Low,在 High 与 Low 之间形成数字波形。
    这里写图片描述

    这里写图片描述

    这里写图片描述

    通过连接待测设备的接口,分析其中通信数据,通过协议转码,可以得到具体的16进制数据。

    设备拆解

    对于一台未接触过的机器,拆解首先需要观察其外部结构,是否存在暴露的螺丝孔,如果没有,一般可能隐藏在贴纸或橡胶垫下面,可以用手感受是否存在空洞,部分机器采用卡榫结构,只要找对方向,用一字螺丝刀或撬片,从缝隙中就可以撬开,拆解设备唯一的要诀就是胆大心细。部分常用工具如下:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    维修组合套装,用来拆装各类螺丝,PCB 夹用来拔出排线,热风枪和焊台用来拆焊各类元器件和芯片,BGA 焊台用于拆焊 BGA 封装的芯片。

    常见物联网智能设备

    这里写图片描述

    共享充电宝,采用 gprs 模块配合物联卡与云端通信。

    这里写图片描述

    蓝牙挂锁,通过蓝牙芯片与手机配对通信,
    蓝牙控制电机驱动,使卡锁运转。

    这里写图片描述

    共享充电宝,采用 GSM 模块加蓝牙模块控制通信。

    这里写图片描述

    智能锁,WIFI 芯片加蓝牙芯片配合控制,外接指纹识别传感器。

    这里写图片描述

    智能摄像头,采用 WIFI 芯片通信,外接音频、视频处理模块。

    这里写图片描述

    网络摄像机,采用网卡芯片,配合多口输出输入视频信号模块。

    这里写图片描述

    智能路由器,高容量内存搭配智能 OS。

    这里写图片描述

    智能家居控制终端,高性能 WIFI 收发中继控制。

    这里写图片描述

    智能保险柜,采用 WIFI 芯片控制加指纹识别传感器。

    这里写图片描述

    无线终端,采用 4G 模块和 WIFI 芯片,做便携式 WIFI 终端。

    相关链接

    名称 链接
    《物联网安全百科》 iot-security.wiki
    伏宸安全实验室 future-sec.com
    IOT Security iot-security.org
    Yaseng Blog yaseng.org
    知乎专栏 zhuanlan.zhihu.com
    邮箱 info@iot-security.wiki
    qq 交流群 306482276
    微信公众号
    微信交流群
    展开全文
  • 公司财务分析——安全分析

    千次阅读 2018-09-07 11:13:54
    上节已经讲了收益性分析,本节讲解安全分析。   公司财务分析中的安全分析,也就是对公司偿债能力的分析。证券投资者在追求高收益的同时,应注意防范风险,以确保投资的安全。在某一时点上,公司的获利能力与...

    上节已经讲了收益性分析,本节讲解安全性分析。

     

    公司财务分析中的安全性分析,也就是对公司偿债能力的分析。证券投资者在追求高收益的同时,应注意防范风险,以确保投资的安全。在某一时点上,公司的获利能力与偿债能力并不完全成正比。有的公司当前盈利不错,但资金结构不合理,偿债能力差,这样的公司就潜藏着极大的风险。当公司因资不抵债宣告破产之日,也就是投资者血本无归之时。因此,投资者应加强对公司流动性状况及资本结构的分析,如出现偿债能力下降因素,投资者应及时做出决策以转移风险。

     

     

    主要指标见下表:

    企业安全性指标

    安全性比率

    计算公式

    1,流动比率

    流动资产/流动负债

    2,速动比率

    速动资产/流动负债

    3,负债比率

    负债总额/资产总额

    4,权益乘数

    资产总额/股东权益

    5,负债与股东权益比率

    负债总额/股东权益

    6,利息保障倍数

    (税前利润+利息费用)/利息费用

     

    如果要查询某个股票的偿债能力信息,可以通过baostock数据接口获取,很方便,示例代码如下:

    import baostock as bs
    import pandas as pd
    
    # 登陆系统
    lg = bs.login()
    # 显示登陆返回信息
    print('login respond error_code:'+lg.error_code)
    print('login respond  error_msg:'+lg.error_msg)
    
    # 偿债能力
    balance_list = []
    rs_balance = bs.query_balance_data(code="sh.600000", year=2017, quarter=2)
    while (rs_balance.error_code == '0') & rs_balance.next():
        balance_list.append(rs_balance.get_row_data())
    result_balance = pd.DataFrame(balance_list, columns=rs_balance.fields)
    # 打印输出
    print(result_balance)
    # 结果集输出到csv文件
    result_balance.to_csv("D:\\balance_data.csv", encoding="gbk", index=False)
    
    # 登出系统
    bs.logout()

    参数含义及返回结果如下:

    展开全文
  • Web日志安全分析系统实践

    千次阅读 2018-03-13 21:45:39
    isappinstalled=0零、前言在社区看到了这篇日志分析的文章--《Web日志安全分析浅谈》,文章整体写的非常棒,对日志分析的作用、难点、工程化建设和攻击溯源等方面进行了全面的描述。去年的毕设我也做了相关的研究,...

    本文转自:https://xianzhi.aliyun.com/forum/topic/2136?from=timeline&isappinstalled=0

    零、前言

    在社区看到了这篇日志分析的文章--《Web日志安全分析浅谈》,文章整体写的非常棒,对日志分析的作用、难点、工程化建设和攻击溯源等方面进行了全面的描述。去年的毕设我也做了相关的研究,主要是去实现一个日志分析系统,算是一个更加的完整的工程化建设,这里把一些关键的过程与大家分享。

    一、系统设计

    在开发一个项目之前当然要先做好设计,明白自己想要的是一个什么系统,可以使用哪些技术、算法和硬件设备。我们分成功能设计、数据库设计、算法结构设计、硬件拓扑设计、前端界面设计、主框架设计6个部分。

    1.1功能设计

    系统应包括系统监控、用户管理(系统使用人员)、日志管理、实时分析、离线分析等功能,并为用户提供可视化的操作、分析与结果展示界面。功能结构图如图所示:

    1.2数据设计

    系统使用MySQL数据库,库中需要建立logmanagement数据库,拥有user、offline、online三个数据表,分别为用户表、离线数据表、在线数据表。数据库中的数据表如下:

    offline数据表用于存储离线日志的分析结果,每一个上传的日志文件对应一条记录,包括名称、大小、类型、起止日期、访问量最高的前10个IP地址、访问量最高的前10个URL、10大攻击类型的攻击次数、以及攻击者和被攻击者的地理位置信息。数据表结构如下:

    online数据表用于存储实时分析的中间结果,数据表的结构如下:

    user表是管理员的用户表,用来存储管理员的个人信息。

    1.3算法结构设计

    系统使用了三种机器学习算法进行恶意攻击的识别:逻辑回归、支持向量机和朴素贝叶斯。同时包含了传统的正则匹配算法,正则虽然无法识别未知攻击,但是在已知攻击的识别上误报率相对机器学习是比较低的。为了能够识别爆破、目录扫描等与时序有关的攻击,还应设计数值统计模块进行恶意ip访问频率的计算。此外,多种算法如何结合需要进行足够的实验,谁的权重(对结果的影响)更大?并行还是串行?本系统中对正则匹配、数值统计和机器学习(三种机器学习算法两两取交集,即实行投票机制,三种中两者检测出异常则认为异常)进行串行处理,得出一条日志的识别结果--正常或恶意(具体到攻击类型),然后检测结果(而非日志)存储到数据库中,算法结构如图所示:

    1.4硬件拓扑设计

    为了实现系统对日志的高效收集,使用了Flume框架;为了具有大数据的处理能力,使用了Spark和HDFS做计算和存储。其中Flume与HDFS是完美兼容的,可以很方便的实现实时日志收集。这几个框架都是分布式的,结构大概如下所示

    1.5前端界面设计

    为了提供一个良好的用户交互性能,需要一个便捷的可视化界面,这里选用Flask框架开发一个Web管理平台,包含对服务器状态的监控、日志的管理以及分析结果的可视化等。

    1.6主框架设计

    主框架要能够说明系统的总体功能及数据流走向,其中,日志获取有两种途径,Web界面负责接收用户的离线上传,Flume负责实时获取;HDFS负责日志存储,自动将获取(离线和实时)的日志备份到各个节点上;Spark负责日志处理,运行特征匹配、数值统计和机器学习算法对其进行识别和分类;MySQL负责结果存储,根据日志获取途径,存储到不同的表中;Flask和Echarts负责界面展示与操作,使用多种图表样式,形象化地展示分析结果。如图所示:

    离线分析就是用户通过Web界面将文本日志文件上传进行分析,相对简单,实时分析就需要严格控制数据流的走向。这里就像一个生产者与消费者的模型,Flume不断收集日志(生产)存储到HDFS,Spark Streaming不断的从HDFS读取日志(消费),实时结构如下:

    二、系统实现

    2.1日志预处理

    我们知道一条日志大概是这样的

    115.28.44.151 - - [28/Mar/2014:00:26:10 +0800] "GET /manager/html HTTP/1.1" 404 162 "-" "Mozilla/3.0 (compatible; Indy Library)"
    

    字段含义为:远程IP - 用户名 时间 请求主体 响应码 请求字节 请求来源 客户端信息
    想要对日志进行识别分析,首先要对各字段进行提取,其中攻击识别主要依靠“请求主体”,我们可以如下正则进行提取

    log_Pattern = r'^(?P<remote_addr>.*?) - (?P<remote_user>.*) \[(?P<time_local>.*?)\] "(?P<request>.*?)" '\
            '(?P<status>.*?) (?P<body_bytes_sent>.*?) "(?P<http_referer>.*?)" "(?P<http_user_agent>.*?)"$'
    

    2.2正则匹配

    算法的匹配正则来自与网络和一些CMS厂商的的正则代码,经过多次修改测试可以识别常见的已知的Web攻击,包括SQL注入、XSS攻击、命令执行等常见Web漏洞。比如部分正则如下所示:

    self.SQL_pattern = """/select(\s)+|insert(\s)+|update(\s)+|(\s)+and(\s)+|(\s)+or(\s)+|delete(\s)+|\'|\/\*|\*|\.\.\/
            |\.\/|union(\s)+|into(\s)+|load_file(\s)+|outfile(\s)+"""
    self.Webshell_pattern = """(preg_replace.*\/e|`.*?\$.*?`|\bcreate_function\b|\bpassthru\b|\bshell_exec\b|\bexec\b|
            \bbase64_decode\b|\bedoced_46esab\b|\beval\b|\bsystem\b|\bproc_open\b|\bpopen\b|\bcurl_exec\b|\bcurl_multi_exec\b|
            \bparse_ini_file\b|\bshow_source\b|cmd\.exe|KAdot@ngs\.ru|小组专用大马|提权|木马|PHP\s?反弹|shell\s?加强版|
            WScript\.shell|PHP\s?Shell|Eval\sPHP\sCode|Udp1-fsockopen|xxddos|Send\sFlow|fsockopen\('(udp|tcp)|SYN\sFlood)|
            z0|z1|z2|z9|caidao"""
    self.XSS_pattern = """xss|javascript|vbscript|expression|applet|meta|xml|blink|link|style|script|embed|object|
            iframe|frame|frameset|ilayer|layer|bgsound|title|base|onabort|onactivate|onafterprint|onafterupdate|
            onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditfocus|onbeforepaste|onbeforeprint|
            onbeforeunload|onbeforeupdate|onblur|onbounce|oncellchange|onchange|onclick|oncontextmenu|oncontrolselect|
            oncopy|oncut|ondataavailable|ondatasetchanged|ondatasetcomplete|ondblclick|ondeactivate|ondrag|ondragend|
            ondragenter|ondragleave|ondragover|ondragstart|ondrop|onerror|onerrorupdate|onfilterchange|onfinish|onfocus|
            onfocusin|onfocusout|onhelp|onkeydown|onkeypress|onkeyup|onlayoutcomplete|onload|onlosecapture|onmousedown|
            onmouseenter|onmouseleave|onmousemove|onmouseout|onmouseover|onmouseup|onmousewheel|onmove|onmoveend|onmovestart|
            onpaste|onpropertychange|onreadystatechange|onreset|onresize|onresizeend|onresizestart|onrowenter|onrowexit|
            onrowsdelete|onrowsinserted|onscroll|onselect|onselectionchange|onselectstart|onstart|onstop|onsubmit|
            onunload(\s)+"""
    

    所有的攻击类型如下所示

    2.3数值统计

    在所采集海量日志文本中,包含了大量用户行为、交互IP、访问次数等信息,这些信息所表现出的统计特征可以明确地表达一个网络动作,而有些动作通过传统的规则匹配、黑白名单、策略控制等方式是很难发现的。比如在一段时间内访问目标网站的Agent连接数、不同域名下出现同一URL的次数、访问应答结果中非200的请求比例等,所有这些统计结果都表达了某种特定的网络行为,而这一行为如果符合网络攻击的行为,则通过数值统计的方法就能发现。比如下表中列举的常用的基于数值统计的方式发现潜在异常行为的一些统计方法。

    在实现中只进行了一定时间内某ip访问频率的计算

    def check(self,dataRDD,sc):
        """按分钟切割日志,以判断访问频率"""
        data_Memory = dataRDD.collect()
        start = data_Memory[0]
        temp_Time = time.strptime(start[2], "%d/%m/%Y:%H:%M:%S")
        start_Time = datetime.datetime(temp_Time[0],temp_Time[1],temp_Time[2],temp_Time[3],temp_Time[4],temp_Time[5])
        data_Min = [] #用来存储一分钟内切割的数据
        data_Result = []
        label = self.label
        for line in data_Memory:
            temp_Time = time.strptime(line[2], "%d/%m/%Y:%H:%M:%S")
            end_Time = datetime.datetime(temp_Time[0],temp_Time[1],temp_Time[2],temp_Time[3],temp_Time[4],temp_Time[5])
            if (end_Time-start_Time).seconds <= 10:
                data_Min.append(line)
            else:
                data_Result += label(data_Min)
                start_Time = end_Time
                data_Min = []
                data_Min.append(line)
        tempRDD = sc.parallelize(data_Result)
        return tempRDD
    

    2.4特征向量

    使用机器学习算法的前提是构造好的特征向量,日志的识别主要是针对日志记录中的request、referer和user-agent。request、referer都是URL路径,user-agent是浏览器名称,这三部分是用户可控且可能注入payload的地方。向量的构造方法主要参考用机器学习玩转恶意URL检测 和基于机器学习的web异常检测,训练集分为两个部分,一个是恶意的在URL请求,主要收集于github中知名的payload仓库,大约有30000条数据,其中包括SQL注入、Traversal(目录遍历)、XSS(跨站脚本攻击)、LFI(本地文件包含)、XML注入、SSI注入、XPATH注入、Webshell攻击。恶意请求部分样例如下:

    二是正常的URL请求,测试部分包括日志中的request、referer和user-agent,其中request和referer的正常样本基本一致,都是URL请求地址,user-agent虽然并不是URL但在受到攻击时仍和request、referer这两处相似,都是注入相关漏洞的payload,所以这三处在分类的可以使用相同模型。其中正常的URL取自国外的日志网站SecRepo的正常Web日志,正常请求部分样例如下:

    User-agent是指了各大浏览器厂商正常的名称,训练集中正常请求部分样例如下:

    将上述的训练集一分为二,90%作为训练集集,10%作为测试集并进行打标用于测试。在真正分类的时候,将所有的日志依据request、referer和user-agent这三个部分进行二分类。向量构造首先通过N-Gram将文本数据向量化,比如对于下面的例子:

    首先通过长度为N的滑动窗口将文本分割为N-Gram序列,例子中,N取2,窗口滑动步长为1,可以得到如下N-Gram序列:

    其中N的取值需要进行多次试验,不同的算法最佳值不同。然后声明一个长度为10000的特征向量,将这些序列映射到特征向量中,并使用TF-IDF生成特征向量的值。词频—逆文档频率(简称TF-IDF)是一种用来从文本文档(例如URL)中生成特征向量的简单方法。它为文档中的每个词计算两个统计值:一个是词频(TF),也就是每个词在文档中出现的频率,另一个是逆文档频率(IDF),用来衡量一个词在整个文档语料库中出现的(逆)频繁程度。这两个值的积,也就是TF×IDF,展示了一个词与特定文档的相关程度(比如这个词在某文档中很常见,但在整个语料库中却很少见)。

    def TFIDF(self,badData,goodData,distance,step):
        '''IT-IDF函数,根据不同的分词方法生成TF-IDF向量'''
        tf = self.tf
        badFeatures = badData.map(lambda line: tf.transform(split2(line,distance,step)))
        goodFeatures = goodData.map(lambda line: tf.transform(split2(line,distance,step)))
        badFeatures.cache()
        goodFeatures.cache()
        idf = IDF()
        idfModel = idf.fit(badFeatures)
        badVectors = idfModel.transform(badFeatures)
        idfModel = idf.fit(goodFeatures)
        goodVectors = idfModel.transform(goodFeatures)
        badExamples = badVectors.map(lambda features: LabeledPoint(1, features))
        goodExamples = goodVectors.map(lambda features: LabeledPoint(0, features))
        dataAll = badExamples.union(goodExamples)
        return dataAll
    

    一个TF-IDF向量如下所示:

    其中第一项0.0是向量的标签,表示这是一条恶意的请求,后面是各个分词序列在投影后的坐标及其TF×IDF值。

    2.5机器学习算法

    三种算法训练完毕后以后的检测只需从本地加载模型即可

    def train(self,sc):
        # #生成Logistic和SVMWithSGD算法数据
        # dataLogistic = self.TFIDF(bad,good,3,1)
        # #生成SVMWithSGD算法数据
        # dataSVMWithSGD = self.TFIDF(bad,good,3,1)
        # #生成NaiveBayes算法数据
        # dataNaiveBayes = self.TFIDF(bad,good,2,1)
        # 使用分类算法进行训练,iterations位迭代次数,step为迭代步长
        # modelLogistic = LogisticRegressionWithSGD.train(data=dataLogistic,iterations=10000,step=6) 
        # print "train success1"
        # modelLogistic.save(sc,"model/modelLogistic")
        # modelSVMWithSGD = SVMWithSGD.train(data=dataSVMWithSGD,iterations=10000,step=5) 
        # print "train success2"
        # modelSVMWithSGD.save(sc,"model/modelSVMWithSGD")
        # modelNaiveBayes = NaiveBayes.train(data=dataNaiveBayes,lambda_=0.1) 
        # print "train success3"
        # modelNaiveBayes.save(sc,"model/modelNaiveBayes")
        self.modelLogistic = LogisticRegressionModel.load(sc,"modelLogistic")
        self.modelSVMWithSGD = SVMModel.load(sc,"modelSVMWithSGD")
        self.modelNaiveBayes = NaiveBayesModel.load(sc,"modelNaiveBayes")
    
    def check_Line(self,line,algorithm):
        """元素检测"""
        tf = self.tf
        request_url = line
        check_Result = 0
        if "Logistic" in algorithm:
            check_Result += self.modelLogistic.predict(tf.transform(split2(request_url,3,1)))
        if "SVM" in algorithm:
            check_Result += self.modelSVMWithSGD.predict(tf.transform(split2(request_url,3,1)))
        if "NaiveBayes" in algorithm:
            check_Result += self.modelNaiveBayes.predict(tf.transform(split2(request_url,2,1)))
        print check_Result
        print "model check  :  "+str(check_Result)
        if check_Result>2:
            line.append([-1])
        else:
            line.append([])
        return line
    
    def check(self,test,sc,algorithm="Logistic,SVM,NaiveBayes"):
        """执行模型检测"""
        self.train(sc)
        check_Line = self.check_Line
        temp1 = test.map(lambda line: check_Line(line,algorithm))
        return temp1.collect()
    

    三、系统展示

    离线日志分析
    离线分析包括分析报表和日志管理两个子功能,用户需要在日志管理处上传日志才可通过分析报表查看分析结果(如果直接点击分析报表界面则默认显示最近一次的分析结果),日志在上传的过程中就会完成数据分析,分析结果会在分析报表界面显示并同时写入数据库。同理,用户也可以在日志管理处删除已上传的日志,但同时也会删除存在数据库中的分析结果。日志管理界面如图所示:

    点击每一条记录右侧的查看按钮,即可跳到相应的分析报表界面,分析报表界面包含5个部分,分别为基本信息、访问次数最高的前10个IP、访问次数最高的前10个URL、攻击次数统计、攻击源地图。具体如图所示:





    实时日志分析
    实时分析部分包含两个显示界面,一个是访问次数(蓝色)与攻击次数(黑色)的双曲线图表,表示当前时间访问的次数以及当中可能包含的攻击次数,两者同时显示,相互对比;另一个是百度地图实时地理位置的世界地图图表。显示界面如下:

    四、一些问题

    1、程序运行起来虽然看起来还可以,但是识别率其实比较一般,一是正则写的不够完善;二是机器学习误报有点高,如果把判别条件放太宽,会出现一些低级分类错误。
    2、算法中机器学习其实只是一个二分类,具体的攻击类别要靠正则识别,正则识别不出来而算法识别出来的则为未知攻击类型。
    3、这里的实时其实是伪实时。

    五、参考文献

    http://www.freebuf.com/articles/web/126543.html
    http://www.freebuf.com/articles/web/134334.html
    http://www.freebuf.com/sectool/126698.html
    http://blog.csdn.net/xnby/article/details/50782913


    展开全文
  • 工控安全入门分析

    千次阅读 2016-03-02 11:28:32
    安全从业保持敏感,本篇以科普角度对工控安全做入门分析,大牛绕过,不喜轻喷。 0x01专业术语 SCADA:数据采集与监视控制系统 ICS:工业控制系统 DCS:分布式控制系统/集散控制系统 PCS:过程控制系统 ESD:...

    原文章:点击打开链接




    0x00写在前面

    工业4.0,物联网趋势化,工控安全实战化。安全从业保持敏感,本篇以科普角度对工控安全做入门分析,大牛绕过,不喜轻喷。

    1

    0x01专业术语

    SCADA:数据采集与监视控制系统

    ICS:工业控制系统

    DCS:分布式控制系统/集散控制系统

    PCS:过程控制系统

    ESD:应急停车系统

    PLC:可编程序控制器(Programmable Logic Controller)

    RTU:远程终端控制系统

    IED:智能监测单元

    HMI:人机界面(Human Machine Interface)

    MIS:管理信息系统(Management Information System)

    SIS: 生产过程自动化监控和管理系统(Supervisory Information System)

    MES:制造执行管理系统

     

    0x02协议端口及测试脚本

    • 协议科普
      • Modbus MODBUS协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS协议映射能够在应用数据单元(ADU)上引入一些附加域。2安全问题:
        • 缺乏认证:仅需要使用一个合法的Modbus地址和合法的功能码即可以建立一个Modbus会话
        • 缺乏授权:没有基于角色的访问控制机制, 任意用户可以执行任意的功能。
        • 缺乏加密:地址和命令明文传输, 可以很容易地捕获和解析
      • PROFIBUS 一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术,可实现现场设备层到车间级监控的分散式数字控制和现场通信网络
      • DNP3 DNP(Distributed Network Protocol,分布式网络协议)是一种应用于自动化组件之间的通讯协议,常见于电力、水处理等行业。简化OSI模型,只包含了物理层,数据层与应用层的体系结构(EPA)。SCADA可以使用DNP协议与主站、RTU、及IED进行通讯。
      • ICCP 电力控制中心通讯协议。
      • OPC 过程控制的OLE (OLE for Process Control)。OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。
      • BACnet 楼宇自动控制网络数据通讯协议(A Data Communication Protocol for Building Automation and Control Networks)。BACnet 协议是为计算机控制采暖、制冷、空调HVAC系统和其他建筑物设备系统定义服务和协议
      • CIP 通用工业协议,被deviceNet、ControINet、EtherNet/IP三种网络所采用。
      • Siemens S7 属于第7层的协议,用于西门子设备之间进行交换数据,通过TSAP,可加载MPI,DP,以太网等不同物理结构总线或网络上,PLC一般可以通过封装好的通讯功能块实现。
      • 其他工控协议IEC 60870-5-104、EtherNet/IP、Tridium Niagara Fox、Crimson V3、OMRON FINS、PCWorx、ProConOs、MELSEC-Q。按需求自行查阅资料。
    • 信息探测
      • 协议测试脚本3PS:简要测试,大量脚本自行测试。
      • 相关搜索引擎Shodan搜索4PS:Shodan搜索引擎介绍 http://drops.wooyun.org/tips/2469Zoomeye搜索

        5

        PS:敏感信息,你懂得。

    Ethernet/IP 44818 nmap -p 44818 --script enip-enumerate.nse 85.132.179.*6

      • Modbus 502 nmap --script modicon-info.nse -Pn -p 502 -sV 91.83.43.*7
      • IEC 61870-5-101/104 2404 nmap -Pn -n -d --script iec-identify.nse --script-args=iec-identify -p 2404 80.34.253.*8
      • Siemens S7 102 nmap -p 102 --script s7-enumerate -sV 140.207.152.*9nmap -d --script mms-identify.nse --script-args='mms-identify.timeout=500' -p 102 IP10
      • Tridium Niagara Fox 1911 nmap -p 1911 --script fox-info 99.55.238.*11
      • 意义何在上述NSE脚本意义:
        1. 定位工控系统及协议模块。
        2. 收集目标工控的信息,如版本、内网IP、模块、硬件信息等。
        3. 结合对应的NSE脚本进一步拓展,例如自定义空间搜素引擎。
    • 脚本资源

    0x03乌云工控漏洞的分析

    • 工控相关漏洞分析针对乌云主站的漏洞进行关键字搜索:工控(31)、SCADA(15)、Modbus(9)、PLC并进一步整合得到如下列表。
    • 1213在以上的漏洞列表中,可以得出如下结论:
      1. 乌云工控漏洞的案例中,绝大多起因是弱口令(弱口令最多的是123456,其次是admin)、注入类漏洞。
      2. 能够挖出工控的精华漏洞的人也是特定的那几位,且在Kcon2015也有过演讲。
      3. 挖掘此类漏洞主要解决两个问题
        1. 如何找到工控相关的系统和地址
        2. Getshell后,基于工控知识如何操控系统
      4. 根据漏洞中的细节可以进一步的复测和拓展,进而为工控系统的漏洞挖掘提供非线性思路。
        1. 结合GHDB关键字的搜素:例如inurl:SCADA……
        2. 链接地址含SCADA、Modbus等协议的关键字……
        3. 其他KEY:MIS、SIS、DCS、PLC、ICS、监控系统……
        4. 相关公司:南京科远、金风科技、天能集团、国电南瑞、华润燃气、积成电子、重庆三峰、东方电子……
        5. 至于利用以上四点去做什么,呵呵…
    • 工控精华漏洞分析乌云工控相关的精华漏洞如下7个,在思路亮点中分析了漏洞的核心,同样也可能是获得打雷精华的理由。几乎共同点均是操控了对应的工控系统。14

    0x04参考资源

    展开全文
  • 数据安全作为安全领域新的发力点,从外部政策到内部业务,从行业...数据安全建设效益分析,可分为。。。。。 数据安全建设社会效益分析 数据安全社会效益 数据安全建设经济效益分析 数据安全建设技术效益分析 ...
  • 五步实现更好的大数据安全分析

    千次阅读 2016-12-13 15:53:58
    大数据安全分析在未来会变得更加重要。但安全威胁却一直在增加成本、严重程度和复杂性。目前的方法能够适应已知的威胁,问题在于发现新的关联和模式来确定攻击线索,比如高持续性威胁、鱼叉式网络钓鱼和黑客行为。 ...
  • Web日志安全分析浅谈

    千次阅读 2018-10-18 14:07:52
    所谓有价值的地方就有江湖,网站被恶意黑客攻击的频率和网站的价值一般成正比趋势,即使网站价值相对较小,也会面对“脚本小子”的恶意测试攻击或者躺枪于各种大范围漏洞扫描器,正如安全行业的一句话:“世界上只有...
  • SEAndroid安全机制框架分析

    万次阅读 多人点赞 2014-07-14 01:00:02
    我们知道,Android系统基于Linux实现。针对传统Linux系统,NSA开发了一套安全机制SELinux,用来加强安全性。然而,由于Android系统有着...本文就对SEAndroid安全机制框架进行分析,以便后面可以更好地分析其实现细节。
  • 2019中国信息安全自主可控行业政策盘点及网络安全行业分析一、盘点中国信息安全自主可控行业政策法规二、中国网络安全行业产品分类全景图**三、国产化信息技术网络安全自主可控行业现状深度剖析****1、信息战凸显...
  • 安全U盘市场分析

    千次阅读 2019-07-01 20:13:03
     虽然台电U盘的产品策略不一定适用于其他U盘厂商,但身为国内存储领域的“老大哥”,其发展思路仍然具有很重要的借鉴意义。其实,无论是台电还是其他厂商,关键的是要保持持续创新的精神。U盘行业发展至今,品牌和...
  • Cookie安全分析

    千次阅读 2019-04-22 22:49:58
    浅谈cookie安全性 摘要 HTTP State Management Mechanism(HTTP状态管理机制)一文中,定义了HTTP Cookie和Set-Cookie头字段。HTTP服务器利用这种头字段,在HTTP用户代理(浏览器)中存储当前状态,使得在大多数...
  • 本节讲解安全性比率,安全性比率是分析公司偿债能力的指标,主要有以下一些具体指标: 1.流动比率。是衡量公司短期偿债能力最通用的指标。公式为: 流动比率=流动资产/流动负债 投资者通过分析流动比率,就可以...
  • 想把这些数据转化成有意义的情报,就需要不仅限于传统安全信息和事件管理(SIEM)功能的工具,以便整合和分析不同类型的数据(包括结构化数据和非结构化数据)。 分析威胁数据可能是一笔不小的开支,对中小企业来说尤为...
  • FTP协议安全分析

    千次阅读 2004-12-29 10:05:00
    [原创]FTP协议安全分析-------------------------------------------------------------------------------- FTP协议安全分析 作者:xinhe 前 言 FTP(File Transfer Protocol,文件传输协议)是互联网上常用的协议之...
  • 作者前文介绍了微软证书漏洞CVE-2020-0601,并讲解... 这些基础性知识不仅和系统安全相关,同样与我们身边常用的软件、文档、操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。
  • 作为专业的移动互联网APP安全服务提供商爱加密来说,很早就开始着手于APP安全领域,为开发者们提供安全检测、应用保护、渠道检测等专业服务,全方位的保护APP安全,防止盗版、山寨、二次打包、注入恶意代码等现象的...
  • 这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了外部威胁防护和勒索病毒对抗。这篇文章将讲解逆向分析OllyDbg动态调试工具的...
  • 安全智能:信息安全领域中的大数据分析 作者:botman 2014年5...在这份报告中,详细阐述了利用大量结构化和非结构化数据的新工具的介入及广泛使用如何改变了安全分析领域。 企业定期收集几TB与安全相关的数据
  • mPOS是近年出现并得到...同时,市场对mPOS含义认识不一,安全水平参差不齐,因而也对安全管理提出了更大的挑战。本文基于银联终端工作组研究成果,结合最新发布的《中国银联mPOS通用技术安全要求》(以下简称《要求》)
  • 浏览器安全问题分析

    千次阅读 2013-09-14 00:13:39
    事端 – 安全漏洞穿透用户桌面 2009年2月,微软发布了广受关注的MS09-002安全漏洞公告,并随之马上提供了针对该漏洞的更新补丁。当访问者使用IE 7浏览器访问特定规格的网页时,MS09-002漏洞会允许远程恶意代码...
  • 大数据时代网络安全问题分析

    千次阅读 2018-03-20 15:07:03
    随着数据的不断积累,网络也出现了种种安全问题。信息访问权限混乱一般来说,访问权限主要是由系统管理员来控制外来人员访问本区域的网络资源,在此情况下,通常只有被授予了访问权限才能访问此网站。然而,随着...
  • 阿里云安全分析与案例 一、云盾 1、云盾概述 云盾是阿里巴巴集团多年来安全技术研究积累的成果,结合阿里云计算平台强大的数据分析能力,为客户提供DDoS防护,主机入侵防护,以及漏洞检测、木马检测等一整套安全...
  • 物联网安全风险分析

    千次阅读 2010-07-07 14:18:00
    与互联网安全相比,物联网的安全问题更为突出,互联网一旦受到安全威胁,其造成的损失一般集中在信息资产领域,而物联网一旦受到攻击,那么将会直接对现实生活产生影响。可以设想,如果物联网遭受病毒攻击,那么很...
  • hashmap 线程安全问题分析

    千次阅读 2018-06-23 23:48:44
    1.问题引入 开发过程使用了HashMap全局变量作为缓存 ...Hashmap是非线程安全的集合类,在此场景中RW分属于两个不同线程,会存在读写数据不一致性问题。比如W线程正在更新HashMap过程中,R线程同时读取HashMap,由...
  • Easy Save3游戏存档安全分析

    千次阅读 2019-10-09 19:31:31
    2、键值考虑不使用有意义的字符串,使用宏定义的数字或无意义字符串; 3、采用多层嵌套自定义加密; 4、针对存档数据有独立的哈希校验; 5、json格式保存,考虑转化为另外一种独立的格式或者文件结构,和json可以...
  • 如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细...
  • 基于大数据分析安全管理平台技术研究及应用 基于大数据分析安全管理平台技术研究及应用 Research and Application of Big Data Analysis Based Security Management Platform Last Modified By
  • 1含义2原理分析3处理方法4代码含义和解决…5原因分析6预防电脑蓝屏的…   含义  引蓝屏解释 1.故障检查信息  ***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4) KMODE_EXCEPTION_NOT_...
  • windows安全日志分析之logparser篇

    千次阅读 2018-03-08 10:58:34
    封停 · 2015/07/29 10:270x01 前言工作过程中,尤其是应急的时候,碰到客户windows域控被入侵的相关安全事件时,往往会需要分析windows安全日志,此类日志往往非常的大;此时,高效分析windows安全日志,提取出我们...
  • CTF工业信息安全大赛实践与分析

    千次阅读 2020-03-17 13:41:02
    本篇文章主要结合作者工控信息安全及工控网络攻防平台CTF赛题编制等工作经验,首先对上周团队参与的2019工业信息安全大赛CTF线上比赛部分题目进行解析与总结,接着对CTF相关知识及平台进行介绍,最后对CTF收集的相关...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 289,339
精华内容 115,735
关键字:

安全分析的意义