tecent安全工程师测试

这个世界已经是web的了。。。。


Tecent安全工程师考试

网络方向

  1. Mimikatz是通过哪个服务来获得windows下的用户名和密码的?
    Mimikatz是一款用来获得windows下的密码的工具,当黑客进入Windows系统后,可以利用此工具进行提权操作。这个工具是从lssas.exe中获取个人信息的( Local Security Authentication Serve, 本地安全管理服务,内部存储了登陆了此电脑的用户的基本信息)

  2. User-Agent:(){:;} cat/etc/passwd 这段payload是哪个漏洞的利用方式?
    CVE-2014-6271
    这个是bash的一个漏洞。当bash在处理环境变量的时候会触发.
    webserver常常将Referer、UserAgent、header等参数作为环境变量的设置源,于是我们通过设置User-Agent,就可以借此进行远程代码的实行。

  3. 反序列化漏洞
    这里以java为例子:
    Java序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,Java中的ObjectOutputStream类的writeObject()方法可以实现序列化。 Java反序列化即逆过程,由字节流还原成对象。ObjectInputStream类的readObject()方法用于反序列化。 因此要利用Java反序列化漏洞,需要在进行反序列化的地方传入攻击者的序列化代码。能符合以上条件的地方即存在漏洞。
    其实不只java,python,php,node.js中,凡是存在着反序列化的函数(比如java的readObject, js的unserialize, python中的pickle.loads, 都会存在在【反序列化的时候执行代码】的特性,通过设置了这个特性,就能够实现反序列化漏洞

  4. 如何预防CSRF
    CSRF(Cross Site Request Forgery 跨站伪造请求访问),通过盗取用户的个人信息,从而伪造访问,攻击等等。
    触发的方式一般为在访问了安全的站点A后,访问危险站点B,而此时与A的回话并没有结束,从而B站点能够利用残留的回话内容,伪造成用户访问A
    防御的方法一般有:

  • 为每一个用户生成唯一的token cookie。所有的表单访问中都要求存在一个特定的伪随机值
  • 每个请求使用验证码,这样的话每一次访问都会被用户察觉(但是会变得很繁琐, 不推荐)
  • 验证HTTP Referer字段
  1. (具体内容忘记了)iodine, chkrootkit作用:
    iodione – 用户DNS tunnel 的工具

DNS 隧道技术:

DNS查询的过程为 本地查询 --> local server查询 -->尝试访问其他的dns服务器进行查询
然后假如当前的网络拓扑图为

此时主机A不可访问外网(防火墙进行过滤,但是不过滤dns请求),但是可以访问到本地服务器。那么如果此时想要和目标服务器构成通信,那么此时可以通过将我们的通信数据放在DNS查询过程中,当本地服务器无法解析当前DNS后,就会通过防火墙将DNS查询迭代查询,最终定位到目标服务器,然后目标服务器就会接受此DNS数据包并解析出主机A的数据,并将数据返回在DNS 回复中,这样就构成了一个DNS Tunnel 通信。
而iodione就是一个能够简单的构造这个DNS隧道的一个工具。
chkrootkit – 入侵工具检测
rootkit是入侵者经常使用的工具,这类工具可以隐秘、令用户不易察觉的建立了一条能够总能够入侵系统或者说对系统进行实时控制的途径(比如说,注册了一个$user的用户,这个用户在命令行中是看不到的,$具有隐藏的属性),而chkrootkit则是能够检测出这些rootkit的一种工具

  1. cc攻击
    是一种类似于DDoS攻击的攻击方式,不同的是,cc攻击采用的都是真实的访问流量,也就是真实的ip,正确的数据包,有效的请求
    通过netstate -an可以看到当前建立的连接情况,如果此时有多个相同的连接(并且处于握手的中间过程),那么可以判断是正在攻击
    可以通过将当前域名解析到"127.0.0.1"之类的方法进行防御

cc攻击本身需要使用代理服务器,优点有:

  • 可以防止被查出本身的ip
  • 避免追踪
  • 代理的性能比较好的话,可以提高性能
  1. 登陆ip 时长的命令,获得DNS记录的命令
    lastlog 用户 -t – 最近几天内用户的登陆历史
    nslookup url – 当前域名的dns解析结果与对应ip
    dig url – 当前域名解析,其cname,type(也就是类型是A - ipv4 还是AAAA - ipv6啦)还有ip 获得的是DNS解析记录
    host url – 输出当前的A和MX(address and mail exchanger )

  2. nmap 10.5.5.5.1 会扫描哪些端口
    上网找到答案,说是这个是移动的宽带导航页,需要进行DNS解析,所以要访问21(ftp?)和8080端口

  3. XSS终结者 – CSP
    CSP 全称为 Content Security Policy,即内容安全策略。主要以白名单的形式配置可信任的内容来源,在网页中,能够使白名单中的内容正常执行(包含 JS,CSS,Image 等等),而非白名单的内容无法正常执行,从而减少跨站脚本攻击(XSS),当然,也能够减少运营商劫持的内容注入攻击。

1
2
示例:在 HTML 的 Head 中添加如下 Meta 标签,将在符合 CSP 标准的浏览器中使非同源的 script 不被加载执行。
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

不支持 CSP 的浏览器将自动会忽略 CSP 的信息,不会有什么影响。具体兼容性可在caniuse查看
XSS终结者中,HTTP头部来限制资源的策略是
同源策略,应对办法是"跨域"

  1. Mysql的自定义函数功能在入侵的时候可用于UDF提权
    UDF是mysql的一个共享库,通过udf创建能够执行系统命令的函数sys_exec, sys_eval,使得入侵者能够获得一般情况下无法获得的shell执行权限。

  2. Wannacry利用的漏洞类型
    wannacry使用的是SMB协议,也就是通信协议,就是我们通常说的网络文件共享协议。利用这个协议,我们就能够访问到远程电脑上的共享文件,从而进行远程文件的访问。而wannacry本质上是利用了这个协议中的漏洞,从而进行的病毒内容的传播。

  3. Rocchio算法
    这个算法是一个用来文本分类以及查询的算法。这个算法的原理相当于是将【查询的总体内容当作总体set】,然后我们每个【set中的元素会占据一定的大小】,通过计算【每一个元素占据set的比例,得到一个向量】。通过计算各个元素的分类比例,【能够得到每一种分类的一个质心】。然后当我们需要查询的时候,我们通过计算当前查询信息的各个元素比重,能够合理的找到当前查询的向量落在哪个信息里面。(大致是这么理解的。。)

Android方向

  1. 在Android系统中,在SD卡上安装根证书,并且使用Signature Scheme v2签名认证,那么如何安装修改后的apk?
    首先,要知道APK都是有签名的,为的就是防止我们的apk在发布后被他人修改。
    所以当我们的apk在安装的时候,第一个要做的是就是验证我们的签名。如果发生签名文件不存在或者校验签名失败,那么就会拒绝安装。

签名原理

摘抄自http://www.36nu.com/post/183.html
对一个APK文件签名之后,APK文件根目录下会增加META-INF目录,该目录下增加三个文件:

  • MANIFEST.MF
  • NETEASE.RSA
  • NETEASE.SF
    其中.RSA文件还可能是.DSA文件,RSA与SF文件的文件名可以更改,但是它们的命名必须一样。
    MANIFEST.MF中保存了APK里所有文件的SHA1校验值的BASE64编码,格式如下(一个文件对应一条记录):
    Name: res/anim/abc_fade_in.xml
    SHA1-Digest: ohPEA4mboaFUu9LZMUwk7FmjbPI=
    Name: res/anim/abc_fade_out.xml
    SHA1-Digest: MTJWZc22b5LNeBboqBhxcQh5xHQ=
    SF文件里保存了MANIFEST.MF文件的SHA1校验值的BASE64编码,同时还保存了MANIFEST.MF中每一条记录的SHA1检验值BASE64编码,格式如下:
    SHA1-Digest-Manifest: ZRhh1HuaoEKMn6o21W1as0sMlaU=
    Name: res/anim/abc_fade_in.xml
    SHA1-Digest: wE1QEZhFkLBWMw4TRtxPdsiMRtA=
    Name: res/anim/abc_fade_out.xml
    SHA1-Digest: MfCV1efdxSKtesRMF81I08Zyvvo=
    RSA文件则包含了签名的公钥、签名所有者等信息,还保存了http://my.oschina.net/u/816213/blog/685762?fromerr=RSS3IhKo
    用SHA1withRSA签名算法对SF文件的签名结果信息。
    apksigner
    则只要将整个包重新签名,重新生成那个META-INF的内容即可。

比如说

  • 在assets文件夹中添加channel.txt文件后重新打包并签名
  • 直接在zip包的注释段添加内容。这种是另一种使用比较广泛的渠道包打包方案,但是这种方案打的包不会破坏V2打包的APK Signing Block
  • 通过脚本在META-INF文件夹注入内容
  1. 当Android打开wifi热点运行在哪个进程?
    Service

  2. 伪基站实现劫持的原理
    伪基站利用移动信令监测系统监测移动通讯过程中的各种信令过程,获得手机用户当前的位置信息。伪基站启动后就会干扰和屏蔽一定范围内的运营商信号,之后则会搜索出附近的手机号,并将短信发送到这些号码上。屏蔽运营商的信号可以持续10秒到20秒,短信推送完成后,对方手机才能重新搜索到信号。大部分手机不能自动恢复信号,需要重启。伪基站能把发送号码显示为任意号码,甚至是邮箱号和特服号码。
    https://zh.wikipedia.org/wiki/%E4%BC%AA%E5%9F%BA%E7%AB%99
    大致流程就是:

  3. Android adb shell查看进程指定文件
    ps [pid|name]

  • pid 进程号
  • name 进程name

windows策略

  1. Applocker
    应用程序控制策略,是Windows中的一种管理规则,可以指定指定的应用使用,指定的脚本运行,位置如下:

  2. powershell杀软绕过。。。
    这篇freebuf的大佬写的很好。。就借鉴一下了
    http://bobao.360.cn/learning/detail/2994.html

记得的就这些了。。。真是好难啊(反正都不会就这样吧_(:3_)_Z)_
参考
http://blog.bihe0832.com/android-v2-issue.html