隐形人在三方。想写就写?

转载请注明出处并附上源链接

源代码安全检测是安全开发流程(SDL)中举足轻重的一部分,一般通过人工审计或者自动化工具来进行检测。在大型企业中,业务线情况较为复杂,项目开发往往使用不同的编程语言、开发框架,编码风格也大不相同。此外,存量的代码有上亿行、每天又会有大量的新增代码与项目,这些因素导致在大型企业安全实践中是无法通过人工审计代码的方式来进行检测的。因此,在人力紧张以及工作量庞大的情况下,最优的选择是依赖自动化检测工具了

本篇文章中,主要介绍我们自主研发的静态代码安全检测平台的整体技术原理、研发部署方案与架构、总体检出效果,以及一些具体生产环境的检出场景。

二、自动化代码漏洞挖掘技术

/nikic/PHP-Parser),作为PHP语言的语法分析工具,其本身就是使用PHP语言进行实现的,且支持节点遍历等功能。使用composer可以很方便地安装PHP-Parser:

具体使用可以参考官方文档。

仅仅在抽象语法树的基础上进行分析是不够的,因为抽象语法树无法很好的获取程序中流程控制语句的信息。比如分析以下示例代码时,如果不考虑程序中的分支判断,则很容易发生误判:

当分析到程序调用了eval函数,则向上回溯$data变量,结果发现在else分支中调用了intval,如果不考虑控制流程,即不考虑其他的代码分支,这时审计程序就会认为该代码片段不存在问题直接返回,显然这是错误。因为在if分支中,出现了另外的赋值,如果只进入这个if分支,那么就会触发代码注入漏洞。

因此我们需要在抽象语法树的基础上构建控制流程图,将PHP中的分支跳转进行整理,以基本块的形式编排抽象语法树的节点。比如针对上文的代码片段生成控制流图:

在程序分析的时候,必须要对每个分支进行独立的分析。

生成新基本块的依据是一些控制流程语句,这些语法结构都是固定,大致有以下几种:

生成控制流图的方法是当遇到条件分支和循环结构时,需要生成一个新的基本块,将这些代码块中的语法树节点插入进去;当遇到终止结构时,停止当前基本块的生成;当遇到返回语句时,停止图的构建。

在任何代码中,都会有PHP内置函数的调用,如果不对这些内置函数进行处理,或者说自动化分析不“理解”这些函数的含义和效果,可能会造成大量的误报,比如分析下面的代码片段:

由于PHP内置函数众多,每个函数都人工进行处理是不现实的,最好的方式是对这些内置函数进行分类。按照功能和对程序分析的影响,大致可分为:

比如strlen()或者md5(),一旦参数进入这些内置函数将会返回常量类型的结

果,比如返回纯数字、布尔值、纯字符串,这种处理需要考虑为针对参数的一种净化方法。

(2)返回参数的一部分

某些内置函数如trim()或者array_keys()会将参数的一部分或者全部进行返回。针对返回值,该分类可以分为返回array、返回array的单个元素、返回string类型。

针对某种漏洞类型进行参数净化操作的内置函数,比较典型的有addslashes,

比如内置函数substr()或者chunk_split(),这些内置函数会返回传入参数的一个子串。由于这种操作会破坏参数原有的结构,如果不追求绝对精确分析的话,实际上完全可以将这类函数的调用视为某种程度的净化处理。

如urldecode()或者base64_decode()等执行某种解码操作的内置函数。注意,如果在分析中遇到了解码函数,通常认为该函数调用前参数所受到的一切净化都是无效的,如果直接进入危险函数就会触发漏洞。

一些内置函数会执行参数指定的其他函数,比如array_walk(),array_map(), set_error_handler()。如果标识其他函数名的参数可以直接获取到,那么将该调用信息进行进一步分析,比如以下代码片段:

第五行代码调用了array_map函数,并且数组中每个元素都进行了intval从操作,因此需要收集这里的一个净化信息,为后续污点分析提供依据。

一些文件操作类型的危险函数的文件参数是以resource传递进来的,因此如果仅仅去判断是否受污染是不可行的,所以需要对获取文件句柄的函数进行分类。

一种基于白名单的净化处理。

比如preg_match和ereg函数,这里不可能去分析具体的正则表达式,因此

为了减少误报,可以认为调用这些函数进行校验都是有效的过滤。当然如果选择牺牲误报而减少漏报,也可以认为这些函数的调用是不起作用的,可以直接报警。

其他不属于上述类别但是需要额外分析的内置函数。

数据流分析层所做的工作是收集程序中的变量值传递、特殊函数调用等信息。可以理解为数据流分析就是一个综合的程序信息搜集,目的是为了给后续的污点分析提供详细的参考信息。

对于数据流向的识别和搜集,应该考虑到以下两种情况:

PHP内置函数导致的隐藏数据流,比如调用list、func_get_args等函数。

执行分析的流程图如下:

污点分析过程是在程序分析中,一旦发现危险函数的调用则启动分析。对传入危险函数的危险参数进行分析,结合数据流分析时该危险参数的一些程序信息,如净化信息、内置函数处理信息等进行判断,如果一旦发现该变量可以被用户控制并且没有进行有效过滤,则判定为漏洞。

首先我们来考虑如何定义危险函数。在人工代码审计的时候,我们会按照漏洞的类型着重关注某一批函数,比如mysql_query, file_get_contents, eval等等。然后我们会找到这些函数的某些参数,然后判断这些参数是否经过程序处理后还是会存在漏洞。因此,污点分析时,只需要关注危险函数的名称和危险参数的位置即可,配置示例如下:

该配置的含义是:print函数是一个可能引发XSS漏洞的危险函数,并且其参数1是一个危险参数。

定义一个参数是否受到了有效净化是污点分析中比较重要的环节,这关系到后续漏洞判定的准确性。根据人工代码审计的经验,我们可以抽象总结出一个PHP实现的净化操作可以有以下方式:

(1)使用PHP内置的或者用户自定义的净化函数执行净化,比如调用addslashes等函数

(2)使用PHP内置的一些校验类型的函数,比如类型判断、正则表达式校验、字符串切割、回调函数以及编码解码等操作。这些操作都会进行一定程度的净化,如果在实践中,我们期望有较高的精确度,则可以认为凡是调用这些函数,就认为是有效的净化;如果我们期望降低漏报率,则可以忽视这些内置函数影响或者执行更加细致的分析。

(3)使用逻辑判断进行校验,如使用了==或者===与某些静态常量进行了比较操作,则认定为该变量接受了净化。

有了上述基础,我们可以很清晰地执行污点分析判断漏洞了,大致的过程如下:

(1)在执行数据流分析过程中,如果发现了敏感函数的调用,则启动污点分析。

(2)查询危险函数配置列表,获取到需要判断的危险参数列表。

(3)向上找到连接的基本块信息,关注一个基本块内所有的数据流记录,找到数据流记录右边的值,提取出该变量。

(4)如果该变量进入到了内置函数,则按照之前章节中整理的内置函数的作用判断是否受到了有效的净化。

(5)当遍历时找不到基本块中相关的赋值语句,或者赋值的值为字符串、数字或者布尔值,则停止污点分析。

此外,我们需要格外注意编码和解码的影响,:

(1)一个回溯变量被进行解码操作后(base64/hex/zlib…),该变量向上的所有净化操作都可以认为是无效的。

(2)如果一个变量被编码和解码多次,则进行抵消分析操作,并由抵消之后的结果进行判断。

在整个语法树遍历、控制流图生成的过程中,可能还会伴随着以下几种情况的细致分析:

(1)过程内、过程间分析

当我们分析代码时,会遇到方法内部的变量传递与程序信息搜集;或者会遇到一个变量在多个方法之间通过参数进行传递。支持过程内、过程间分析的重点是作用域之间的对应和转换。此外,当我们遇到某个函数中执行了对某个参数的过滤,我们可以将其加入到净化函数列表,比如分析以下代码:

这里在执行分析时,遇到escapeCmd这个用户自定义函数的调用,因此需要在上下文中寻找该方法的方法体(定义)并分析该方法的程序段。当发现其调用了安全函数escapeshellcmd后,我们就可以把这个escapeCmd加入到命令注入漏洞的安全函数中。

执行多文件分析时,很多系统仅仅只是依赖use、include、require等关键词来寻找当前文件所包含的其他文件,但是很多程序实现中,往往会用到autoload技术,或者在某个统一入口执行文件包含的操作。所以我们有很大的几率会遇到某个文件中调用了一个其他文件的方法,但是在该文件中却找不到该方法的定义语法结构的情景。

因此多文件分析时,我们最好在分析初始化阶段中获取到所有类定义、方法定义、通用函数定义以及其所在的路径位置,将这些信息保存在内存中。当我们后续分析时,可以直接操作该内存结构,动态提取需要的方法定义。

三、企业级研发与部署方案

3.1企业级实际场景和挑战

或许很多人会认为,源代码安全扫描只需要把代码拿来扔给扫描器扫描,然后产生打印结果给业务线就行了。可事实上在大型互联网企业中部署并不是那么简单的一件事,主要考虑一下问题:

非本地工具,而是一个平台

在大型公司,可能有成千上万的产品线,涉及到的代码库数量庞大并且编程语言繁杂,面对这种状况,本地化工具过于松散,不好管理,接入效率低的缺点,而统一的扫描平台可以提供一整套的自动化接入方案。统一的源码安全扫描平台可以区分多场景的任务类型,提供多种接入方式,可以更高效、自动化地提供安全扫描能力。

软件开发关键环节,中流砥柱

SDL(securitydevelopment lifecycle)是微软提出的从安全角度指导软件开发过程的管理模式,源代码安全扫描是SDL方法中的重要环节。从软件的开发流程上看,源代码安全扫描处于软件开发流程上下游,在软件上线之前需要通过安全扫描。

在我们的实践中,源代码安全扫描是以插件的形式,嵌入到软件研发的流程中,为业务线代码保驾护航

这将要求平台必须具有高可用性,高响应及时度和完善的用户反馈机制。

战略地位,支撑安全红线

企业有一条安全红线,业务必须遵守的最基本安全要求。源代码安全扫描也可以用于在系统上线前发现漏洞与违规的内容,禁止漏洞带到线上,一定程度保护企业业务安全。

从分层的角度,源码安全扫描平台大致分为五层,每一层都有明确的职责划分。

接口层是平台对外输出能力的入口,主要对接口请求进行合理性校验,权限校验,参数校验,以确保请求是合法的,非恶意的。功能上主要分扫描接口和查询接口,扫描接口用来接收发起扫描任务,查询接口用来查询扫描任务的结果数据。

每一次扫描就是一个任务,任务管理层是整个平台的中心部分,管理所有任务的扫描状态。主要包括三个职责:

1)状态跟踪。任务管理层跟踪和记录所有任务的扫描状态。

2)策略下发。源码扫描平台根据业务的实际场景,针对不同任务实施不同的扫描策略,比如根据代码的变更情况使用缓存策略,根据代码库的特性调整超时时间等。

3)超时监控。每个任务都有一个超时时间,当任务扫描时间超过期望值,任务会结束并返回超时异常。

引擎管理层是对引擎调用的一层封装,在企业里面涉及到多种计算机语言,不同语言可能使用不同的源码分析引擎。引擎管理层向上抽象出扫描接口和报告接口,扫描接口接收扫描数据,下层实现具体的引擎调用策略,报告接口获取不同引擎的扫描结果,统一生成扫描分析报告数据。

3.2.4源代码管理层

源代码管理层主要关注目标源码获取、源码存储和源码安全。

1)源码获取。源码获取主要支持两种方式,第一是用户上传源码的方式,这种方式需要用户自己把源码打包,上传到web服务器。第二种是和企业级代码托管平台打通,源码管理层根据托管平台提供的安全协议拉取源码。

2)源码存储。源码存储主要包括两个方面,其一是需要扫描的源码,这部分源码存储时间不长,在扫描结束后的一段时间内会被清除;其二是有漏洞的源码,这部分源码会被永久存储,用来后续分析漏洞报告使用。

3)源码安全。源码安全扫描涉及到业务线的源码下载与分析,对于企业来说源码具有最高保密性,需要防止源码泄露的问题发生。这里我们有两个层面措施:第一是服务器隔离,所有对源码操作和源码存储都放在指定的服务器上,并且由源码托管平台负责,这种物理隔离大大减少平台自身的管理成本。第二是所有源码存储传输都采用了加密,这里采用常用的方式,使用AES加密源码,RSA加密AES的key。

引擎主要利用静态代码分析技术分析源码中可能存在的漏洞,具体参考“自动化代码挖掘技术”章节。

研发工程师(RD)提交代码,进行源码安全扫描,编译,持续集成到部署上线,这一系列步骤是全自动化的过程,而源码安全扫描嵌入到整个流程中,必定牵扯到各个平台。这里我们分享这个过程遇到的问题。

一般平台的接口可用性要求是四个9,即SLA为99.99%,即使企业内部使用,也要达到99.9%。SLA指标很重要,因为一旦某段时间内接口不可用导致软件持续集成阻塞,会影响到正常的产品发布的流程,导致产品上线出问题。比如企业内某个产品紧急修复了bug需要上线,但是却在安全扫描这一步卡住,产品线的同学可能会抓狂了。

为了保障我们接口的可用性,以及及时发现故障,我们做了以下策略:

慢启动。接口的服务逻辑应该尽可能少的计算和IO访问,这里我们仅仅将请求的原始数据做一次redis写入,然后就返回,其他的任务扫描逻辑之后才被后续的逻辑“慢”启动起来。

接口监控。我们监控每个接口每次接收请求到做出响应的时间,在响应时间超出一定范围(一般与调用平台约定),则进行邮件告警。

降级策略。在遇到故障无法在短时间内恢复的情况,我们启动降级策略,舍弃一定功能的情况下,保障接口能够及时返回,防止流程卡住。

3.3.2 “慢”是永恒话题

源码安全扫描作为软件集成发布的一个步骤,一定程度上影响软件发布的时间。如果安全扫描耗时过长,将会大大拖累的整个上线流程,安全部本身也会承受着很大的压力。

或许有人会讲,RD大多数时候可能只会修改几个代码库的文件,这样怎么会有扫描速度慢的问题呢?这样的想法是基于两个前提:第一,扫描是单文件;第二,文件与文件之间是没有关联的。但事实上,前面漏洞分析技术也有提及,白盒代码扫描过程其实会对相关联的多个文件进行扫描,可能修改了一个文件,但是有很多其他的文件引用了这个文件,为了保险起见,所以会把相关联的文件一并执行扫描。

所以一开始的做法是:不管代码库如何变化,都使用全量扫描,而这将导致扫描速度特别“慢”,经常会收到业务线同学的反馈,对运营造成很大的压力。

3.3.2.2增量扫描的实践方法

为了提高扫描的性能,我们尝试做了增量扫描策略。

大致思路是,如果我们能够对本次变更的代码进行分析,找出当前代码库中变更文件引用的文件和被引用的文件,将这些文件进行扫描,最后跟全量合并结果。这样可以大大减少扫描的文件数,提高扫描速度。

具体做法是,在源码管理层嵌入增量策略层,利用简单的源码分析技术,得出文件的引用流向图。通过对图的遍历获取到增量涉及到的文件。

除了增量扫描,我们还有如下优化策略:

无变更文件使用历史结果。相同代码库前后两次扫描,如果文件没有任何修改,则认为两次扫描结果一致。

基于无关文件变更的缓存策略。一个代码库,前后两次扫描,如果前后两次变更的文件与安全扫描无关,则复用第一次扫描结果。

闲时扫描。很多时候扫描慢也可能是资源紧缺有关,一个平台的访问量也可能集中在某个时间段,因此,闲时扫描作为一种缓存策略,可以大大提高扫描的速度。

静态代码安全扫描嵌入开发流程以来,接入代码库数量达到3000+,其中每天由代码托管平台触发的增量任务有1700+个,由上线平台触发的任务有2500+,根据我们的优化方案,95%的任务能够在10分钟内完成。我们的漏洞检测规则加入人工运营和自定义开发,漏洞准确率达到90%左右,其中不同的语言漏洞的分布情况不一样。

目前我们php检测覆盖13中类型漏洞,java语言扫描覆盖30+种类型漏洞,其中除了web常见漏洞外,还覆盖部分android,python,nodejs漏洞。

4.2具体检测场景与能力

关于PHP的漏洞检测手段详见第二章节。

java白盒检测需要覆盖owasp主要web漏洞,同时也需要对一些第三方开源库已知漏洞进行覆盖,因此针对通用漏洞和第三方开源库nday,我们采取了不同的检测方法。

java通过加载第三方库,由于第三方库可能存在已知高危漏洞,例如struts2存在s2-056,spring-boot存在表达式注入等漏洞。针对这一类由于老版本组件使用导致的漏洞,可以通过版本检查进行覆盖,大多数版本均可在pom.xml或者build.gradle文件中查询到,例如struts2:

此时可以通过检测struts2-core版本是否在漏洞范围以内,即可判断是否存在漏洞。但这种方法无法检测业务线同学通过修改代码或者添加过滤器修补漏洞,而这需要通过数据流分析来解决。

通用漏洞主要覆盖一些高危或者中危漏洞,例如sql注入、命令执行、代码执行、SSRF、任意文件上传等。对于任意一种漏洞,都需要首先获取漏洞的输入点与触发点以及漏洞的数据流,以简单的sql注入为例:

通过跟踪数据流即可确定是否存在漏洞,当然这属于最简单模式,实际检测漏洞中为了减少误报,我们还需要处理以下几种情况:

包含对某些漏洞的全部过滤机制,例如针对sql注入的全局filter

数据流中是否包含if、过滤函数等过滤节点

某些数据流是否已经中断,例如文件上传中,文件后缀在数据流图中已经被更改,实际上已不可控,此时需要单独处理类似数据流

java由于拥有众多开源框架,而大多数开源框架均有一定的安全机制,因此某些漏洞在特定的框架中可能并不符合通用模式。以mybatis注入为例:

对于mybatis来说,如果sql语句变量的引入采用#{}的方式,则sql语句底层直接采用的预编译的形式,此时不需要再检测sql注入漏洞;而如果采用${}形式,则需要按照一般的sql注入流程检测。因此java的大多数通用漏洞检测,还需要对使用量较大的框架进行适配,此时在输入和触发点的获取上适配即可。上面的例子,就可以在检测输出时,首先判断是否为mybatis应用,如果未mybatis应用,则直接检测是否在sql语句中引入了${}类型变量,然后就可以按照通用方式检测了。

简单的python漏洞示例:

这个代码片段中,web.input()->data->code->eval能够形成完成的漏洞数据流,同时包含了可控制输入与漏洞触发点,因此就可以确认为一个漏洞。而为了准确的检测漏洞,某些安全使用方式需要过滤,例如

这里通过将__builtins__置为空,以及设置安全白名单函数,可以较好防御代码执行,因此对于这一类需要通过eval的参数数量进行判断。

基于语义分析、语法分析技术,并且将各个语言和框架特性进行集成和识别而构建的静态代码安全扫描器,无论是误报率还是检出率都远远低于传统的商用扫描器。

此外,将自动化的静态代码安全扫描嵌入到开放与上线流程中,可以有效地在上线前阶段就发现代码中的安全漏洞,并将源代码漏洞报告第一时间推送给业务线的开发同学进行修复,做到防患于未然。

而安全部门需要做的就是持续运营安全扫描规则,处理误报反馈与安全能力增强上,可以在人工代码审计上节省很多人力。

对于大型互联网公司,拥有可以与CI流程进行结合的源码安全扫描平台是非常必要的,源码安全扫描不仅可以对安全漏洞进行扫描,还可以配合一些源码指纹识别技术与安全开发规范,对内部的一些高危开源框架、不良的编码习惯进行有效治理,可谓一举多得。

欢迎关注获取更多安全知识

}

即使你是pppoe拨号这种动态ip方式,ip和入户端口的绑定关系也是会被记录的,不然你以为造谣的人怎么被查水表的?

只要能量足够,或者愿意花钱,定位到门是没问题的,这是建立在警方或者电信运营商级别的数据上。

即使没有这些数据,手机是会收集很多个人信息的,其中就包括你的网络状况和gps,如果叫过外卖,或者网购,就更详细了。

不然你以为广告和推荐是怎么做到这么详细?你今天看了什么,买了什么,送到哪儿,都会成为大数据的一部分。

很多企业有这些数据,但是没有妥善保护,造成被黑客攻破,员工盗窃,甚至自己就销售牟利,造成黑产泛滥。

如果真的矛盾或者利益冲突巨大,假药可能就属于这种,大到对方愿意花大价钱,比如几千左右,找到你不是难事儿。

视情况及时报警,或者采取正确有效措施保护自己。


评论区看到一堆会点儿小技巧,就开始沾沾自喜的。

看来看去也就是VPN、代理、Tor这几个词儿。

说个例子,用VPN或者代理也被抓的。

某校学生,破解了老师邮箱的弱口令,盗窃试卷,被抓。

数据流量是IP1->IP2->IP3,所以邮件服务器只能记录到代理服务器的地址IP2。

如果IP2在境内,IDC机房或者云平台都会有日志,报警,一封协查函就可以知道你的真实IP。

但是在这个例子里,代理服务器在境外。

于是网络中心调取校内日志,发现在IP2连接IP3前几秒,校内IP1曾经连接过IP2,都不需要解密你到底发了什么,现在IP1就是怀疑对象了。直接定位IP1的宿舍网口,当时谁登陆的校园网账号,是个无线路由器,把信号覆盖范围的三个寝室12个人挨个叫出来问,很快学校公安处就查明白了。只要你被列入怀疑,只要范围缩小了,就很容易查出来。

顺便说一下,我就是当事人,只是我是帮忙查的那个人。

这个日志保留多久呢?根据规定,至少6个月,是至少,上不封顶,看你的磁阵有多大。

用来分析这个日志的,都不是普通PC,2012年用的就是Sun定制的设备。


有人又会说,如果我双代理呢?如果我代理入口和出口不一致呢?如果我的代理多个出口呢?

其实方法类似,对你来说,成本增高了,对审查者来说,只要你频繁使用,通过请求之间的时序关系,就能分析出来IP的对应关系。

以上分析是建立在IP层,而且只需要源和目的地址即可,绝大多数加密都是在更上层,无法加密这两个数据。

还有人说,如果我用的是网上买的代理,很多人共用一个,这样我就可以隐藏在众多其他用户中,就没那么容易查了吧。

Naive啊,你自己想想,你买代理用的是什么支付,支付宝?微信?银行卡?只要你用的是人民币,这些代理的搭建者就需要有境内的信息,你信这些代理的搭建者不会记录日志?他们用来搭建代理的云服务器运营商呢?运营商也不记录日志?

再说说Tor,首先,Tor是有组织在管理的,用来层层转发流量的中间节点是大家自发贡献的,而且长期在线的也就那么几千个左右,对一个强大的审查者来说,我自己搭建几千个节点进入Tor网络,让你从入口到出口所有流量大多数经过我控制的节点,还怕审计不了你?

Tor安全的前提是,审查者不能在网络中拥有过多节点,而这个假设很容易打破,也就是所谓的女巫攻击。

更不用说针对浏览器漏洞的攻击,FBI就用过这种方式,成功定位Tor用户,并端了onion域名网站。

当你使用一个技术的时候,最好能够深入了解这个技术,了解它的原理、能力和局限,而不是迷信简介里的几句话,如果几句话就能说明白所有细节,这玩意估计就是个HelloWorld。


又有朋友提到了肉鸡问题,觉得肉鸡是被自己控制的,可以做到不留日志,甚至可以嫁祸给肉鸡主人。

首先,肉鸡如果被查到的话,只是说明主人有嫌疑,警方如果锁定了这台肉鸡,那么就会去查这台机器,以及与这台机器相关的人员,并不是找到个IP,找到个机器就定罪。

我上面举的学校查学生偷考试题的事件,也只是缩小了嫌疑人范围,12个人挨个查,最后动机、其他作案细节都弄清楚了,才给的处分。有几个学生根本这个学期就没这门课考试,排除。有几个学生在作案时间被证明在别的地方,剩下几个学生中,有学习比较好的,估计用不上这么做,最后只剩下两个人,还都是学计算机的,经过盘问,有一个学生明显神色慌张,最后就承认了。密码是他在老师课间的时候,在背后偷看的,其实就是名字拼音+几个数字,很容易记住,账号就是老师名字,这个人人知道。

为了慎重起见,主要是避免冤枉了学生,连他说偷看密码的时间,最后都去确认了,确认老师那天课间,确实在教室登陆过账号,并且也找老师回忆一下,那天他登陆账号的原因。有一个学生说他给老师发了作业,但是老师说没看到,于是登陆下邮箱检查。

也许你可以删除干净这台机器上的日志,那么你入侵的环节呢,这台机器的网络供应商日志呢?一样会留下来。

甚至,你留在这台机器上的木马,都会成为追查你的线索。

木马总要有CC服务器吧,木马总要有人提供吧,你在哪儿买的?

如果是你自己开发或者编译开源的代码,那么编译器本身就可能会留下很多信息。


看大家热情很高,再分享一个我参与过的事儿,不是主导,只是有一些交集而已。

这是个敲诈勒索事件,邮箱是境外的一次性邮箱,地址是国外的公用VPN,发送的勒索信是机器翻译的,猜猜这个人怎么被抓的?

这个家伙很聪明,他知道勒索信的行文风格有可能泄露自己的信息,比如某些地方方言词汇等,因此他选择把中文机器翻译成英文,再翻译回来的方式,这样可以很大程度上隐藏自己。好奇的小伙伴可以自己试试,中文翻译英文,再翻译回来,意思大致还是能理解的,但是行文风格一看就是机器风。

但是,他用的是某互联网公司提供的在线翻译服务来完成这个操作,虽然他并没有登陆,但是这家互联网公司会生成并记录广告描述符,其广告系统会采集并记录翻译的内容,用于后续广告投放。先查到了翻译的原文和翻译后的结果,进而查到广告描述符。

这哥们无意中在同一个浏览器里搜了个别的关键词,根据这个关键词缩小范围,最后抓到。

因为嫌疑设备中有我管理的设备,了解到一些信息,但是我高度怀疑这件事儿不是敲诈勒索这么简单,普通案件不会投入这么大精力。


有朋友 质疑日志会保留多久。

日志不仅可以用于追查网络犯罪,更可以用于大数据营销,数据就是钱,别说保留六个月了,只要有钱,永久保存都有这个动力。

曾经有过讨论,日志数据被长期保存,是否侵犯用户隐私,用户是否有权要求运营者“忘记”自己。

2017年的《网络安全法》对保留日志提供了法律依据。

第二十一条 国家实行网络安全等级保护制度。网络运营者应当按照网络安全等级保护制度的要求,履行下列安全保护义务,保障网络免受干扰、破坏或者未经授权的访问,防止网络数据泄露或者被窃取、篡改:
(一)制定内部安全管理制度和操作规程,确定网络安全负责人,落实网络安全保护责任;
(二)采取防范计算机病毒和网络攻击、网络侵入等危害网络安全行为的技术措施;
(三)采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月;
(四)采取数据分类、重要数据备份和加密等措施;
(五)法律、行政法规规定的其他义务。

看到了吗?至少六个月,如果低于六个月,已经不是你资源够不够的问题,而是你是否还有资格继续从事你的行业。

现在是不是理解了,为什么运营商的通话记录,一般都是能查六个月?


对法律比较感兴趣,正好我有酒店项目的相关经历。

MAC地址可以修改,改成与burn in的值不同,但是,并不是所有设备都可以。

本质上,mac地址修改是驱动层面提供的一种功能,并不是所有设备厂商都提供这个功能。

从手机的角度上,在不越狱和root的前提下,是无法修改的,所以,难度并没有你想的那么低。

即使你能修改,也不能任意伪造,对公共Wi-Fi来说,你的mac地址必须要和身份绑定,才能上网。

公共场所的监控摄像头覆盖,属于执法中的细节,目前没有法律直接规定。

但是,各地派出所在检查中,普遍会对公共场所的摄像头覆盖提出要求,比如密度、保存时间、必须接入当地公安的网络。对密度的常见要求就有覆盖出入口、店面、后厨、仓库等等。如果你是酒店老板,你千万要祈祷警方来调视频的时候你能拿出来,如果拿不出来,你作为经营者,想想怎么停业整改吧。

由于有AI技术的辅助,其实已经不用像以前一样,看录像看几天了。

酒店的Wi-Fi连上就能用?可能连接Wi-Fi不需要密码,但是你要想上网,一定要用某种方法验证下。可以是微信、可以是手机验证码、可以是发给你的一串账号密码、或者是你签的押金单上的一串数字。

有的酒店为了用户体验,确实只需要登陆一次,以后你在几乎所有旗下的酒店,都不再需要再次登陆,办理入住就可以自动开通,这是建立在你的设备MAC地址曾经登陆过的前提下,如果MAC地址换了,想上网,重新走上面的认证流程。

酒店是重点管控区域,控制住了酒店,外来人口啦,罪犯啦,就好管理多了。

第二十四条 网络运营者为用户办理网络接入、域名注册服务,办理固定电话、移动电话等入网手续,或者为用户提供信息发布、即时通讯等服务,在与用户签订协议或者确认提供服务时,应当要求用户提供真实身份信息。用户不提供真实身份信息的,网络运营者不得为其提供相关服务。
国家实施网络可信身份战略,支持研究开发安全、方便的电子身份认证技术,推动不同电子身份认证之间的互认。

网络运营者应当要求用户提供真实身份信息,如果不提供不得为其提供相关服务。

什么是网络运营者?《网络安全法》同样做出了说明:

第七十六条 本法下列用语的含义:
(一)网络,是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息进行收集、存储、传输、交换、处理的系统。
(二)网络安全,是指通过采取必要措施,防范对网络的攻击、侵入、干扰、破坏和非法使用以及意外事故,使网络处于稳定可靠运行的状态,以及保障网络数据的完整性、保密性、可用性的能力。
(三)网络运营者,是指网络的所有者、管理者和网络服务提供者。
(四)网络数据,是指通过网络收集、存储、传输、处理和产生的各种电子数据。
(五)个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别自然人个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。

网络运营者,是指网络的所有者、管理者和网络服务提供者。酒店自然是其内部网络的所有者或者管理者,自然受到此法律约束。

你真当开一个酒店那么容易?你见过酒店Wi-Fi覆盖方案么?你知道一套酒店AP覆盖要考虑多少因素吗?每个AP的覆盖范围,都是精确控制的,差的方案手工调,好的方案能自适应。


当你觉得自己是个隐形人的时候,大概率只是因为你没有重要到需要被认真看,是你的渺小在保护你,而不是你眼睛上那几片树叶。

遵纪守法,不要去挑战法律的底线哦。

}

我要回帖

更多关于 恶意泄露他人身份信息 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信