NISP官网|国家信息安全水平考试NISP运营管理中心|国家网络空间安全人才培养基地欢迎您!

图片展示
搜索

图片展示

ISAT

信息安全意识培训

【立即报名】

NISP一级

国家信息安全水平考试

【立即报名】

NISP二级

国家信息安全水平考试

【立即报名】

NISP三级

国家信息安全水平考试

【立即报名】

CISP

注册信息安全专业人员

【立即报名】

NISP一级考试预约

 

图片展示

2021第二届全国⼤学⽣⽹络安全精英赛赛事介绍

 

       2021第二届全国⼤学⽣⽹络安全精英赛,指导单位为中国信息安全测评中⼼,主办⽅为国家⽹络空间安全⼈才培养基地。⼤赛以普及知识、挖掘⼈才为⼰任,⾯向全国⼤学⽣普及信息安全意识、传播信息安全知识、挖掘信息安全⼈才。

       本次比赛分为3个阶段,参赛学员均已个人赛形式参加比赛。第一阶段为全国线上初赛,主要考察学生的信息安全知识水平;第二阶段为全国线上复赛,主要考察学生网络安全基础知识和基本技能;第三阶段为全国线下总决赛;具体如下:

1.1.全国初

初赛主要考察学生信息安全知识水平,资格赛为线上答题形式。

☑ 比赛时间:7月1日-9月10日报名,9月13日-17日全国初赛

☑ 参赛资格:全国各类高、中等院校在校学生

☑ 比赛形式:初赛由各个参赛院校组织学生至大赛官网自主报名,由当地承办机构组织安排初赛时间。

☑ 比赛题型:初赛为50道单选题。

☑ 比赛内容:内容包含:信息安全概述、信息安全法律法规、信息安全基础技术、网络安全防护技术、操作系统安全防护技术、应用安全、移动智能终端安全防护、信息安全管理。

☑ 通过条件:满分100分,竞赛成绩达到70分及以上。

 

1.2.全国复赛

全国复赛主要考察参赛选手网络安全基础知识和基本技能。

☑ 比赛时间:9月24日全国复赛

☑ 比赛形式:复赛为线上答题形式进行,参赛条件为初赛成绩达70分以上。

☑ 比赛题型:复赛为100道单选题,

☑ 比赛内容:信息安全支撑技术、物理与网络通信安全、计算机环境安全、软件安全开发。

☑ 通过条件:全国前100名通过参加线下总决赛

 

1.3.全国总决赛

全国总决赛为线下知识竞赛形式。

☑ 比赛时间:10月11日全国线下总决赛

☑ 比赛形式:决赛为线下知识答题赛,参赛条件为复赛全国成绩前100名。

☑ 比赛题型:总决赛为100道单选题,

☑ 比赛内容:信息安全支撑技术、物理与网络通信安全、计算机环境安全、软件安全开发等。

☑ 获奖条件:根据总决赛最终成绩排名,产生大学生网络安全竞赛金奖:10人;银奖:10人;铜奖:20人。

 

1.4.奖项设置

2021年第二届大学生网络安全竞赛共设奖金20万元。

金奖:10人,奖金10000元/人

银奖:10人,奖金5000元/人

铜奖:20人,奖金2500元/人

获得⼤赛⾦银铜牌的选⼿,可获得⼤赛协办单位腾讯安全、卓朗科技、 深信服等信息安全知名企业签约⼯作机会。

 

4. 大赛同期其他活动

本次大赛同期将进行一系列与相关的活动,主要活动如下:

1.1大学生网络安全知识精英赛校园大使招募

第二届全国大学生网络安全精英赛即将于2021年7月1日启动报名,9月网络安全周期间开赛。现在面向全国在校大学生招募校园大使。招募规则如下:

 1.1.1.招募标准

具备⼀定的信息安全基础知识,擅长通过talkshow⼩段子、音乐创作、创意剪辑等各种才艺、方法传播信息安全知识、宣传网络安全精英赛的在校大学生。

1.1.2.招募平台

抖音APP

1.1.3.报名方式

1、开通抖音账号,并关注抖音官方号“网安精英赛”。

2、活动时间:2021年7月1日-2021年9月30日,10月11日公布获奖名单

3、拍摄与网络安全相关的短视频添加话题#网络安全精英赛#在抖音发布,并@网安精英赛 官方账号。

4、发动同学为自己的短视频点赞。

1.1.4.评选

大赛组委会邀请评委会评选作品,筛选出符合招募要求的作品,并按照点赞数排序,最终前十名入选的创作者将成为本届大学生网络安全精英赛校园大使。

1.1.5.公布

最终入选名单将在精英赛官网(https://www.nisp.org.cn/ds)公布。

1.1.6.表彰

成功当选校园大使的创作者,精英赛组委会将颁发聘书,并奖励华为 Mate 40E 手机一台(京东官方价4199元)。

 

1.2大学生网络安全知识精英赛答题接龙活动

校园大使招募活动同时,大赛组委会举办“网络安全精英赛·答题接龙”活动。

活动时间:2021年7月1日-2021年9月30日,10月11日公布获奖名单

参与在校大学生可登陆精英赛官网(https://www.nisp.org.cn/ds)学习网络安全辅导课程,并练习模拟题。

在抖音APP上传短视频,内容为回答一道网络安全模拟题,指定同学接龙。并以“大学生网络安全精英赛,你也来答题吧~”结尾。@网安精英赛 官方账号,参与抽奖。

奖品为华为WATCH GT 2 Pro 智能手表,共十个获奖名额(京东官网价2388元)。

 

渗透测试指南(七)基于应用的漏洞利用

作者:nobodyshome 来源:国家网络空间安全人才培养基地


本地主机漏洞利用内容

通用本地漏洞利用

不安全的服务和协议配置

本地越权

Linux本地漏洞利用

理解Linux权限

不安全的sudo实现

ret2libc攻击

Windows权限

CPassword

LDAP明文凭证

Kerberoasting

LSASS

SAM数据库

DLL劫持

可利用的服务

不安全的文件和目录权限

Windows组策略

键盘记录器

调度任务

沙箱和虚拟机

沙箱逃逸

虚拟机逃逸

容器安全

移动设备安全

安卓安全

iOS安全

物理安全攻击

通用本地漏洞利用

不安全的服务和协议配置

未使用或者不安全的服务,协议和端口是本地攻击的一个重要攻击面。服务,端口,协议可以理解为每个对外开放的端口都对应后台的一个服务,而服务是通过协议来规范服务的范围和能力。

比如telnet,snmp v1,v2, syslog,IMAP, POP3等都属于不安全的服务,很容易被网络嗅探泄露敏感信息。很多时候服务是通过第三方软件提供的,这些软件可能存在安全漏洞,或者是使用了旧版本的软件没有及时打上补丁。

其他不安全的服务包括Rlogin,Rsh,Finger, Authd, Netdump,Netdump-server,Nfs,Rwhod, Sendmail,Samba,Yppasswdd,Ypserv,Ypxfrd等

最佳实践:清晰的记录业务所需要的端口,服务及协议,关闭不必要的服务,限制服务的可访问范围。及时更新服务的安全补丁。

本地提权

本地提权有两个方向,一个方向是从低级别的用户提升为另一个高级别用户,比如从omar用户提升为admin_user用户,脏牛漏洞就是一个例子。

另一个方向是通过改变用户的权限达到提权的目的,比如把user组的omar用户提升为admin组。这让我想起CVE-2019-14287这个漏洞,这是sudo绕过安全策略,执行敏感命令的漏洞。

Linux本地漏洞利用

理解Linux权限

你理解下面这个命令吗?

chmod 7777 this.file

如果不理解,可查看http://permissions-calculator.org/ 了解Linux系统的自主访问控制的授权体系。

sticky bit作用于目录是让目录下的文件只能由owner或者superuser删除或重命名,典型的例子就是tmp目录。

下面是SUID的设置,你能发现区别吗? 当owner的x权限被设置时,SUID显示为s,而当owner的x权限没被设置时,SUID显示为S

root@kali:~# chmod 4777 tmp.txt 

root@kali:~# ls -al tmp.txt 

-rwsrwxrwx 1 root root 0 Aug 17 07:55 tmp.txt

root@kali:~# chmod 4677 tmp.txt 

root@kali:~# ls -al tmp.txt 

-rwSrwxrwx 1 root root 0 Aug 17 07:55 tmp.txt

SUID设置的作用是让执行程序的用户能以程序owner的权限运行,典型的例子是passwd程序,这个程序要修改shadow文件,只能是root权限才可操作,但是普通用户可以通过这个命令修改自身的密码,用的就是这个机制。

不安全的sudo实现

sudo是super user do的缩写。sudo的作用是让普通用户以root的权限执行命令,sudo后面通常跟着一条命令。

另外一个和sudo很像的命令是su,su命令的作用是切换用户,如果后面不跟用户,则默认是root。

通常sudo和su是可以互相转换的

sudo 转为 su

$sudo -i

su 转 sudo

su -c 'command'

/etc/sudoers配置文件配置行介绍, 从左到右每个字段分别代表sudo用户,主机名,任意用户,任意组,可执行的命令。

root   ALL=(ALL:ALL) ALL

The first field indicates the username that the rule will apply to (root).

root ALL=(ALL:ALL) ALL

The first “ALL” indicates that this rule applies to all hosts.

root ALL=(ALL:ALL) ALL

This “ALL” indicates that the root user can run commands as all users.

root ALL=(ALL:ALL) ALL

This “ALL” indicates that the root user can run commands as all groups.

root ALL=(ALL:ALL) ALL

The last “ALL” indicates these rules apply to all commands.

配置sudoers文件一定要谨慎,否则低权限用户拥有root权限,对系统可能造成的安全性影响就较大,潜在的风险也越高。

ret2libc攻击

栈溢出漏洞大家都很熟悉,当代码对内存操作不当,导致存在溢出漏洞时,比如strcpy函数。一种典型的攻击场景是攻击者通过溢出把shellcode注入到栈中,然后控制程序计数器跳转至栈中shellcode位置执行。

为了防止这类shellcode注入,操作系统集成了no-execute(NX)技术,这个技术把内存段设置RWX权限标签,和文件系统类似,这样只要把栈设置为RW-就可以解决shellcode注入栈中执行的问题。

道高一尺,魔高一丈。攻击者发现一类新的攻击方式,就是本章提到的ret2libc(return to libc)。这种攻击方式不是通过注入shellcode,而是通过控制程序计数器把控制流跳转到libc中,因为libc加载到内存后,肯定是可执行的,从而绕过了NX。

而基于ret2libc的还有一种高级的利用方式是ROP(return oriented programming)是利用libc的各种ret指令构造利用链,达到攻击目的。

ROP的入门材料,可参考 一步一步学ROP

为了防止ret2libc的利用,操作系统又实现了ASCII armoring和ASLR等技术,攻防双方相互抗衡,不断推进技术的发展。

Windows权限

CPassword

如果管理员使用CPassword执行常规任务比如修改本地管理员帐号,任何普通用户只要拥有SYSVOL目录的读权限,就可以获取认证密钥,接下来就可以通过John the Ripper或者Hashcat来破解帐户。

LDAP明文凭证

很多组织依旧配置其Windows域控制器支持明文凭证认证。一个简单的判断系统是否通过明文凭证认证,去Active Directory Service log查找ID为2886和2887的日志,如果存在这个编号的日志,则说明系统依旧用明文传输凭证。

Kerberoasting

Kerberoast是一系列攻击Microsoft Kerberos实现和Windows service accounts的工具集。这个工具可以从 https://github.com/nidem/kerberoast 获取。

查阅 https://www.blackhillsinfosec.com/a-toast-to-kerberoast/了解更多。

LSASS

可以通过Sysinternals ProcDump工具把LSASS(Local Security Authority Subsystem Service)进程的内存dump到硬盘,然后再通过Mimikatz获取用户凭证。

SAM数据库

SAM文件存放在 %SystemRoot%/system32/config/SAM 这个文件里存放着密码的hash值,获取到SAM文件后有两个用处,一个是用于pass the hash直接凭借hash绕过认证,一个是用于暴破密码。

DLL劫持

DLL是windows下的动态库后缀,和linux的so是一样的。根据系统配置,应用程序可以决定DLL的目录搜索顺序。攻击者利用加载顺序的先后,让程序优先加载当前目录下恶意的DLL库,执行恶意代码。

Windows下有个配置SafeDllSearchMode用于控制加载顺序,在注册表的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode位置

SafeDllSearchMode的使能与不使能,加载顺序分别如下

If SafeDllSearchMode is enabled, the search order is as follows:

The directory from which the application loaded.

The system directory. Use the GetSystemDirectory function to get the path of this directory.

The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.

The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.

The current directory.

The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.

If SafeDllSearchMode is disabled, the search order is as follows:

The directory from which the application loaded.

The current directory.

The system directory. Use the GetSystemDirectory function to get the path of this directory.

The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.

The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.

The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.

更多内容可查看参考文献[1]

可利用的服务

操作系统执行应用程序时,有时不会用引号把应用程序引起来,而假设应用程序名带有空格时,就有利用的漏洞,假设应用程序为App run,那么攻击者在同一目录放一个恶意程序App,就会触发App被执行。

另外一个管理员经常把Windows服务配置为使用SYSTEM权限执行,攻击者可以通过服务或者服务所在的目录来获取权限。

不安全的文件和目录权限

攻击者可以利用不安全或错误配置的文件或目录权限达成攻击目的。

查看 https://docs.microsoft.com/en-us/windows/win32/fileio/file-security-and-access-rights了解更多。

Windows组策略

组策略(英语:Group Policy)是微软Windows NT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。组策略提供了操作系统、应用程序和活动目录中用户设置的集中化管理和配置。组策略的其中一个版本名为本地组策略(缩写“LGPO”或“LocalGPO”),这可以在独立且非域的计算机上管理组策略对象。

组策略在部分意义上是控制用户可以或不能在计算机上做什么,例如:施行密码复杂性策略避免用户选择过于简单的密码,允许或阻止身份不明的用户从远程计算机连接到网络共享,阻止访问Windows任务管理器或限制访问特定文件夹。这样一套配置被称为组策略对象(Group Policy Object,GPO)。

键盘记录器

键盘记录器分为硬件记录器和软件记录器,其中硬件记录器为键盘接入电脑的中间设备,把键盘的信息记录下来。

软件键盘记录器可分为

基于内核的记录器

基于API的记录器 (类似于GetAsyncKeyState(), GetForeground()等API)

Hypervisor based 记录器

Web form grabbing 记录器

基于JavaScript的记录器

基于内存注入的记录器

调度任务

有时候系统安全等级调到很高,许多操作都需要二次确认,对攻击者来说不太友好,这时候可以考虑系统的调度任务,可以免掉这些麻烦。

Windows的任务调度在Start –> Programs –> Accessories –> System Tools –> Scheduled Tasks

沙箱和虚拟机

沙箱逃逸

以下是一些沙箱的实现

A jail(苹果的越狱就是逃逸这个沙箱系统)

Rule-based execution in SELinux and AppArmor security frameworks

Virtual machines

Sandboxing on native hosts

Secure Computing Mode(seccomp) and seccomp-bpf(seccomp extension)

Software fault isolation(SFI)

Web browsers

HTML5

Java virtual machines

.NET Common Language Runtime

Adobe Reader

Microsoft Office

沙箱逃逸指逃离沙箱的安全控制影响其他的应用甚至影响主操作系统。

虚拟机逃逸

虚拟机有两种类型,Type1 Native和Type2 Hosted,其中Type1是指在裸机上安装虚拟机管理软件,再在虚拟机管理软件上安装虚拟机,而type2是指先安装一个完整的操作系统,再在操作系统上安装管理虚拟机。

无论是哪种类型的虚拟机,逃逸均是指逃离当前虚拟机,控制虚拟机管理软件或者宿主机,进而去控制其他虚拟机或宿主机。

容器安全

虚拟机和容器的差别在于虚拟机是安装完整的操作系统,而容器可以理解为一个应用程序闭包,容器包含了应用程序所依赖的资源和环境。

容器安全包括

Anchore

Aqua Security

Bane

CIS Docker Benchmark

Dev-Sec.io

Clair

Dagda

docker-bench-security

docker-explorer

Notary

oscap-docker

移动设备安全

以下是OWASP的移动端安全TOP10风险

不恰当的平台使用

不安全的数据存储

不安全的通信

不安全的认证

不充分的加密

不安全的授权

客户端代码质量

代码篡改

逆向工程

无关功能(Extraneous functionality)

以下是几个基本的篡改技术

二进制补丁(Binary patching)

代码注入(Code injection)

静态和动态二进制分析(Static and dynamic binary analysis)

调试和跟踪(Debugging and tracing)

安卓安全

在安卓系统中,每个应用都是运行在一个沙箱中,应用间不会互相干扰。应用的安装包放在 /data/app/[包名] 。apk包可以通过apktool解压提出包内容,提取包可以进一步逆向分析代码逻辑。

每个应用把自己的数据放在 /data/data/[包名] 这个目录中,如果把敏感信息明文存在在这个目录中是有问题的,至少应该做到良好的加密后在存放在这个目录。

Android的几个组件包括Activities,Services,Content providers, Broadcast receivers, Fragments, Intents

Android开发工具为Android Studio,模拟器包括Android Studio, Genymotion等,Android代码注入框架包括Cydia Substrate, FRIDA, XPosed等

Android安全测试工具/框架有Androick, NowSecure App Testing, OWASP SeraphimDroid, Mobile Security Framework(MobSF)

iOS安全

iOS安全架构包含以下6个部分

硬件安全(Hardware security)

安全启动(Security boot)

代码签名(Code signing)

沙箱(Sandbox)

加密和数据保护(Encryption and data protection)

常规利用消除(General exploit mitigations)

想要学习iOS安全,可以利用靶机环境如Damn Vulnerable iOS application和OWASP的iGoat。这些靶机环境配置了常见的安全漏洞,包括

不安全的数据存储(Insecure Data Storage)

越狱检测(Jailbreak Detection)

运行时修改(Runtime Manipulation)

传输层安全(Transport Layer Security)

客户端注入(Client Side Injection)

被破坏的加密(Broken Cryptography)

二进制补丁(Binary Patching)

侧信道数据泄露(Side Channel Data Leakage)

通过不可信输入的安全决策(Security Decisions via Untrusted Input)

MobiSec Live Environment Mobile Testing Framework这个工具可以帮助攻击者和防御者测试在线的环境去发现设计的弱点以及安全漏洞。

MITRE组织了一个iMAS项目,这个项目旨在保护iOS的应用和数据,减小iOS设备和应用的攻击面。项目地址为 https://github.com/project-imas

上面关于Android和iOS的安全描述非常粗糙,想深入学习移动端安全,强烈建议读者去精读 Mobile Security Testing Guide 这是OWASP的一个针对移动端的安全测试项目,和Web Security Testing Guide类似。 传送门 https://owasp.org/www-project-mobile-security-testing-guide/

物理安全攻击

冷启动攻击(Cold boot attacks)

冷启动攻击是指在设备关机后的数秒或者数分钟时间内,DRAM/SRAM中的数据还是可读的,趁关机后内存可读的这段时间把内存数据读取出来。

串口攻击(Serial console debugging)

许多设备不对串口做认证,默认信任可物理接触设备的人,只要能通过串口连接设备就可以配置和联系系统。通过串口可能泄露敏感信息,修改boot,system配置,甚至可以篡改flash中的固件。

JTAG调试(JTAG debugging)

攻击者可以通过JTAG访问寄存器,内存和中断。甚至可以改变程序的执行流。可以通过软件工具如OpenOCD配置JTAG来进行攻击操作。

其他物理攻击

尾随(Piggybacking/tailgating)

翻越围栏(Fence jumping)

垃圾搜寻(Dumpster diving)

撬锁(Lockpicking)

(Egress sensors)

标记克隆(Badge cloning)


参考文献

[1] https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order

[2] PenTest+ Cert Guide

文章转自:FreeBuf.COM


0
NISP管理中心

渗透测试指南(七)基于应用的漏洞利用

作者:nobodyshome 浏览: 发表时间:2020-12-07 10:27:19 来源:国家网络空间安全人才培养基地


本地主机漏洞利用内容

通用本地漏洞利用

不安全的服务和协议配置

本地越权

Linux本地漏洞利用

理解Linux权限

不安全的sudo实现

ret2libc攻击

Windows权限

CPassword

LDAP明文凭证

Kerberoasting

LSASS

SAM数据库

DLL劫持

可利用的服务

不安全的文件和目录权限

Windows组策略

键盘记录器

调度任务

沙箱和虚拟机

沙箱逃逸

虚拟机逃逸

容器安全

移动设备安全

安卓安全

iOS安全

物理安全攻击

通用本地漏洞利用

不安全的服务和协议配置

未使用或者不安全的服务,协议和端口是本地攻击的一个重要攻击面。服务,端口,协议可以理解为每个对外开放的端口都对应后台的一个服务,而服务是通过协议来规范服务的范围和能力。

比如telnet,snmp v1,v2, syslog,IMAP, POP3等都属于不安全的服务,很容易被网络嗅探泄露敏感信息。很多时候服务是通过第三方软件提供的,这些软件可能存在安全漏洞,或者是使用了旧版本的软件没有及时打上补丁。

其他不安全的服务包括Rlogin,Rsh,Finger, Authd, Netdump,Netdump-server,Nfs,Rwhod, Sendmail,Samba,Yppasswdd,Ypserv,Ypxfrd等

最佳实践:清晰的记录业务所需要的端口,服务及协议,关闭不必要的服务,限制服务的可访问范围。及时更新服务的安全补丁。

本地提权

本地提权有两个方向,一个方向是从低级别的用户提升为另一个高级别用户,比如从omar用户提升为admin_user用户,脏牛漏洞就是一个例子。

另一个方向是通过改变用户的权限达到提权的目的,比如把user组的omar用户提升为admin组。这让我想起CVE-2019-14287这个漏洞,这是sudo绕过安全策略,执行敏感命令的漏洞。

Linux本地漏洞利用

理解Linux权限

你理解下面这个命令吗?

chmod 7777 this.file

如果不理解,可查看http://permissions-calculator.org/ 了解Linux系统的自主访问控制的授权体系。

sticky bit作用于目录是让目录下的文件只能由owner或者superuser删除或重命名,典型的例子就是tmp目录。

下面是SUID的设置,你能发现区别吗? 当owner的x权限被设置时,SUID显示为s,而当owner的x权限没被设置时,SUID显示为S

root@kali:~# chmod 4777 tmp.txt 

root@kali:~# ls -al tmp.txt 

-rwsrwxrwx 1 root root 0 Aug 17 07:55 tmp.txt

root@kali:~# chmod 4677 tmp.txt 

root@kali:~# ls -al tmp.txt 

-rwSrwxrwx 1 root root 0 Aug 17 07:55 tmp.txt

SUID设置的作用是让执行程序的用户能以程序owner的权限运行,典型的例子是passwd程序,这个程序要修改shadow文件,只能是root权限才可操作,但是普通用户可以通过这个命令修改自身的密码,用的就是这个机制。

不安全的sudo实现

sudo是super user do的缩写。sudo的作用是让普通用户以root的权限执行命令,sudo后面通常跟着一条命令。

另外一个和sudo很像的命令是su,su命令的作用是切换用户,如果后面不跟用户,则默认是root。

通常sudo和su是可以互相转换的

sudo 转为 su

$sudo -i

su 转 sudo

su -c 'command'

/etc/sudoers配置文件配置行介绍, 从左到右每个字段分别代表sudo用户,主机名,任意用户,任意组,可执行的命令。

root   ALL=(ALL:ALL) ALL

The first field indicates the username that the rule will apply to (root).

root ALL=(ALL:ALL) ALL

The first “ALL” indicates that this rule applies to all hosts.

root ALL=(ALL:ALL) ALL

This “ALL” indicates that the root user can run commands as all users.

root ALL=(ALL:ALL) ALL

This “ALL” indicates that the root user can run commands as all groups.

root ALL=(ALL:ALL) ALL

The last “ALL” indicates these rules apply to all commands.

配置sudoers文件一定要谨慎,否则低权限用户拥有root权限,对系统可能造成的安全性影响就较大,潜在的风险也越高。

ret2libc攻击

栈溢出漏洞大家都很熟悉,当代码对内存操作不当,导致存在溢出漏洞时,比如strcpy函数。一种典型的攻击场景是攻击者通过溢出把shellcode注入到栈中,然后控制程序计数器跳转至栈中shellcode位置执行。

为了防止这类shellcode注入,操作系统集成了no-execute(NX)技术,这个技术把内存段设置RWX权限标签,和文件系统类似,这样只要把栈设置为RW-就可以解决shellcode注入栈中执行的问题。

道高一尺,魔高一丈。攻击者发现一类新的攻击方式,就是本章提到的ret2libc(return to libc)。这种攻击方式不是通过注入shellcode,而是通过控制程序计数器把控制流跳转到libc中,因为libc加载到内存后,肯定是可执行的,从而绕过了NX。

而基于ret2libc的还有一种高级的利用方式是ROP(return oriented programming)是利用libc的各种ret指令构造利用链,达到攻击目的。

ROP的入门材料,可参考 一步一步学ROP

为了防止ret2libc的利用,操作系统又实现了ASCII armoring和ASLR等技术,攻防双方相互抗衡,不断推进技术的发展。

Windows权限

CPassword

如果管理员使用CPassword执行常规任务比如修改本地管理员帐号,任何普通用户只要拥有SYSVOL目录的读权限,就可以获取认证密钥,接下来就可以通过John the Ripper或者Hashcat来破解帐户。

LDAP明文凭证

很多组织依旧配置其Windows域控制器支持明文凭证认证。一个简单的判断系统是否通过明文凭证认证,去Active Directory Service log查找ID为2886和2887的日志,如果存在这个编号的日志,则说明系统依旧用明文传输凭证。

Kerberoasting

Kerberoast是一系列攻击Microsoft Kerberos实现和Windows service accounts的工具集。这个工具可以从 https://github.com/nidem/kerberoast 获取。

查阅 https://www.blackhillsinfosec.com/a-toast-to-kerberoast/了解更多。

LSASS

可以通过Sysinternals ProcDump工具把LSASS(Local Security Authority Subsystem Service)进程的内存dump到硬盘,然后再通过Mimikatz获取用户凭证。

SAM数据库

SAM文件存放在 %SystemRoot%/system32/config/SAM 这个文件里存放着密码的hash值,获取到SAM文件后有两个用处,一个是用于pass the hash直接凭借hash绕过认证,一个是用于暴破密码。

DLL劫持

DLL是windows下的动态库后缀,和linux的so是一样的。根据系统配置,应用程序可以决定DLL的目录搜索顺序。攻击者利用加载顺序的先后,让程序优先加载当前目录下恶意的DLL库,执行恶意代码。

Windows下有个配置SafeDllSearchMode用于控制加载顺序,在注册表的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode位置

SafeDllSearchMode的使能与不使能,加载顺序分别如下

If SafeDllSearchMode is enabled, the search order is as follows:

The directory from which the application loaded.

The system directory. Use the GetSystemDirectory function to get the path of this directory.

The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.

The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.

The current directory.

The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.

If SafeDllSearchMode is disabled, the search order is as follows:

The directory from which the application loaded.

The current directory.

The system directory. Use the GetSystemDirectory function to get the path of this directory.

The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched.

The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.

The directories that are listed in the PATH environment variable. Note that this does not include the per-application path specified by the App Paths registry key. The App Paths key is not used when computing the DLL search path.

更多内容可查看参考文献[1]

可利用的服务

操作系统执行应用程序时,有时不会用引号把应用程序引起来,而假设应用程序名带有空格时,就有利用的漏洞,假设应用程序为App run,那么攻击者在同一目录放一个恶意程序App,就会触发App被执行。

另外一个管理员经常把Windows服务配置为使用SYSTEM权限执行,攻击者可以通过服务或者服务所在的目录来获取权限。

不安全的文件和目录权限

攻击者可以利用不安全或错误配置的文件或目录权限达成攻击目的。

查看 https://docs.microsoft.com/en-us/windows/win32/fileio/file-security-and-access-rights了解更多。

Windows组策略

组策略(英语:Group Policy)是微软Windows NT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。组策略提供了操作系统、应用程序和活动目录中用户设置的集中化管理和配置。组策略的其中一个版本名为本地组策略(缩写“LGPO”或“LocalGPO”),这可以在独立且非域的计算机上管理组策略对象。

组策略在部分意义上是控制用户可以或不能在计算机上做什么,例如:施行密码复杂性策略避免用户选择过于简单的密码,允许或阻止身份不明的用户从远程计算机连接到网络共享,阻止访问Windows任务管理器或限制访问特定文件夹。这样一套配置被称为组策略对象(Group Policy Object,GPO)。

键盘记录器

键盘记录器分为硬件记录器和软件记录器,其中硬件记录器为键盘接入电脑的中间设备,把键盘的信息记录下来。

软件键盘记录器可分为

基于内核的记录器

基于API的记录器 (类似于GetAsyncKeyState(), GetForeground()等API)

Hypervisor based 记录器

Web form grabbing 记录器

基于JavaScript的记录器

基于内存注入的记录器

调度任务

有时候系统安全等级调到很高,许多操作都需要二次确认,对攻击者来说不太友好,这时候可以考虑系统的调度任务,可以免掉这些麻烦。

Windows的任务调度在Start –> Programs –> Accessories –> System Tools –> Scheduled Tasks

沙箱和虚拟机

沙箱逃逸

以下是一些沙箱的实现

A jail(苹果的越狱就是逃逸这个沙箱系统)

Rule-based execution in SELinux and AppArmor security frameworks

Virtual machines

Sandboxing on native hosts

Secure Computing Mode(seccomp) and seccomp-bpf(seccomp extension)

Software fault isolation(SFI)

Web browsers

HTML5

Java virtual machines

.NET Common Language Runtime

Adobe Reader

Microsoft Office

沙箱逃逸指逃离沙箱的安全控制影响其他的应用甚至影响主操作系统。

虚拟机逃逸

虚拟机有两种类型,Type1 Native和Type2 Hosted,其中Type1是指在裸机上安装虚拟机管理软件,再在虚拟机管理软件上安装虚拟机,而type2是指先安装一个完整的操作系统,再在操作系统上安装管理虚拟机。

无论是哪种类型的虚拟机,逃逸均是指逃离当前虚拟机,控制虚拟机管理软件或者宿主机,进而去控制其他虚拟机或宿主机。

容器安全

虚拟机和容器的差别在于虚拟机是安装完整的操作系统,而容器可以理解为一个应用程序闭包,容器包含了应用程序所依赖的资源和环境。

容器安全包括

Anchore

Aqua Security

Bane

CIS Docker Benchmark

Dev-Sec.io

Clair

Dagda

docker-bench-security

docker-explorer

Notary

oscap-docker

移动设备安全

以下是OWASP的移动端安全TOP10风险

不恰当的平台使用

不安全的数据存储

不安全的通信

不安全的认证

不充分的加密

不安全的授权

客户端代码质量

代码篡改

逆向工程

无关功能(Extraneous functionality)

以下是几个基本的篡改技术

二进制补丁(Binary patching)

代码注入(Code injection)

静态和动态二进制分析(Static and dynamic binary analysis)

调试和跟踪(Debugging and tracing)

安卓安全

在安卓系统中,每个应用都是运行在一个沙箱中,应用间不会互相干扰。应用的安装包放在 /data/app/[包名] 。apk包可以通过apktool解压提出包内容,提取包可以进一步逆向分析代码逻辑。

每个应用把自己的数据放在 /data/data/[包名] 这个目录中,如果把敏感信息明文存在在这个目录中是有问题的,至少应该做到良好的加密后在存放在这个目录。

Android的几个组件包括Activities,Services,Content providers, Broadcast receivers, Fragments, Intents

Android开发工具为Android Studio,模拟器包括Android Studio, Genymotion等,Android代码注入框架包括Cydia Substrate, FRIDA, XPosed等

Android安全测试工具/框架有Androick, NowSecure App Testing, OWASP SeraphimDroid, Mobile Security Framework(MobSF)

iOS安全

iOS安全架构包含以下6个部分

硬件安全(Hardware security)

安全启动(Security boot)

代码签名(Code signing)

沙箱(Sandbox)

加密和数据保护(Encryption and data protection)

常规利用消除(General exploit mitigations)

想要学习iOS安全,可以利用靶机环境如Damn Vulnerable iOS application和OWASP的iGoat。这些靶机环境配置了常见的安全漏洞,包括

不安全的数据存储(Insecure Data Storage)

越狱检测(Jailbreak Detection)

运行时修改(Runtime Manipulation)

传输层安全(Transport Layer Security)

客户端注入(Client Side Injection)

被破坏的加密(Broken Cryptography)

二进制补丁(Binary Patching)

侧信道数据泄露(Side Channel Data Leakage)

通过不可信输入的安全决策(Security Decisions via Untrusted Input)

MobiSec Live Environment Mobile Testing Framework这个工具可以帮助攻击者和防御者测试在线的环境去发现设计的弱点以及安全漏洞。

MITRE组织了一个iMAS项目,这个项目旨在保护iOS的应用和数据,减小iOS设备和应用的攻击面。项目地址为 https://github.com/project-imas

上面关于Android和iOS的安全描述非常粗糙,想深入学习移动端安全,强烈建议读者去精读 Mobile Security Testing Guide 这是OWASP的一个针对移动端的安全测试项目,和Web Security Testing Guide类似。 传送门 https://owasp.org/www-project-mobile-security-testing-guide/

物理安全攻击

冷启动攻击(Cold boot attacks)

冷启动攻击是指在设备关机后的数秒或者数分钟时间内,DRAM/SRAM中的数据还是可读的,趁关机后内存可读的这段时间把内存数据读取出来。

串口攻击(Serial console debugging)

许多设备不对串口做认证,默认信任可物理接触设备的人,只要能通过串口连接设备就可以配置和联系系统。通过串口可能泄露敏感信息,修改boot,system配置,甚至可以篡改flash中的固件。

JTAG调试(JTAG debugging)

攻击者可以通过JTAG访问寄存器,内存和中断。甚至可以改变程序的执行流。可以通过软件工具如OpenOCD配置JTAG来进行攻击操作。

其他物理攻击

尾随(Piggybacking/tailgating)

翻越围栏(Fence jumping)

垃圾搜寻(Dumpster diving)

撬锁(Lockpicking)

(Egress sensors)

标记克隆(Badge cloning)


参考文献

[1] https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order

[2] PenTest+ Cert Guide

文章转自:FreeBuf.COM


渗透测试指南(七)基于应用的漏洞利用
本系列文章内容主要来自“PenTest+ Cert Guide”
长按图片保存/分享
0

 

网安世纪科技有限公司-国家信息安全水平考试(NISP)管理中心 © 2001-2020  ICP备案号:京ICP备18045154号-6

网站地图

全部课程

添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功
添加微信好友,详细了解产品
我知道了
京ICP备18045154号-6