Linux&Windows基线检查加固脚本 安全闲碎

Linux&Windows基线检查加固脚本

最近在做系统安全基线检查相关的,网上找了一些脚本以及群友分享的。整理下分享给大家:首先是Linux的shell加固脚本#!/bin/bash#设置密码复杂度if < -z "`cat /etc/pam.d/system-auth | grep -v "^#" | grep "pam_cracklib.so"`" >;then sed -i '/password required pam_deny.so/apassword required pam_cracklib.so try_first_pass minlen=8 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1 retry=3 difok=5' /etc/pam.d/system-authfi#密码输入失败3次,锁定5分钟sed -i 's#auth        required      pam_env.so#auth        required      pam_env.sonauth       required       pam_tally.so  onerr=fail deny=3 unlock_time=300nauth           required     /lib/security/$ISA/pam_tally.so onerr=fail deny=3 unlock_time=300#' /etc/pam.d/system-auth#修改默认访问权限sed -i '/UMASK/s/077/027/' /etc/login.defs#设置重要文件目录权限chmod 644 /etc/passwd chmod 600 /etc/xinetd.conf chmod 600 /etc/inetd.conf chmod 644 /etc/group chmod 000 /etc/shadow chmod 644 /etc/services chmod 600 /etc/security#chmod 750 /etc/ #启动了nscd服务导致设置权限以后无法登陆 #系统默认755可以接受 #不能修改,如果修改polkit的服务就启动不了chmod 750 /etc/rc6.d chmod 750 /tmp chmod 750 /etc/rc0.d/ chmod 750 /etc/rc1.d/ chmod 750 /etc/rc2.d/ chmod 750 /etc/rc4.d chmod 750 /etc/rc5.d/ chmod 750 /etc/rc3.d chmod 750 /etc/rc.d/init.d/...
阅读全文
APP加固攻防梳理 移动安全

APP加固攻防梳理

背景现在市面上对APP的安全合规管控越来越严格了,也就要求了APP在上架之前一定要做合规检测和加固处理。对APP就是加固的好处,可以提高APP的安全性,提高APP被逆向分析破解的门槛,同时通过加固保护可以提高过安全合规的检测。由于APP加固技术不断被攻破情况,因此加固技术也是不断在快速迭代的过程。现在市面上的加固产品的还是比较多的,并且各个加固技术产品都有其各自优缺点,但是加固产品的所采用技术去有很多共性的地方。下面就对加固和脱壳对抗方案做些梳理总结。加固准备APP加固主要是对APP中的dex文件、so文件、资源文件等进行保护,因此这边对这APP中的关键文件结构做简短梳理总结。App文件的结构Dex文件结构SO文件结构简单的APP加固原理的流程加固的代码先运行,进行初始化工作;加固的代码开始解密被保护的核心代码;加固的代码开始加载解密后的核心代码;加固的代码把控制权转交给核心代码。第一代加固和脱壳第一代加固技术主要做了进行对app的dex文件进行保护和做了一些简单的反调试保护。Dex保护:Dex文件整体加密、字符串加密、自定义DexClassLoader。动态防护:ptrace反调试、TracePid值校验反调试。第一代加固的出现也同时出现各种对加固技术的攻破。从而出现了各种对抗加固的脱壳方法。最突出的是直接从内存dump出dex完整结构脱壳原理:程序在启动过程中,要保证程序正常运行,那么加固壳会自动解密受保护的dex文件并完成加载,基于这个子解密的原理,我可以选择在dex加载完成这个时机点,将其dump下来。从而实现第一层防护壳、加密壳的脱壳。下面罗列几个脱壳方案缓存脱壳法:第一代的某些加固产品,安装包是加密压缩的,安装后回在data/dalvik-cache目录下生成解密的odex文件,这时候只需要获取odex文件进行做为分析的突破点。内存 dump脱壳法通过工具:IDA Pro + dumpDEX1、通过/proc/%d/maps获取内存映射2、在内存中查找关键字 dex.035或dex.0363、手动dump查找到的数据。动态调试脱壳法1、通过基于IDA的android_server的代理方式进行附加app。2、再IDA中下dvmDexFileOpenPartial 断点,确认要dump的起始地址和大小。3、用ida的脚本方式进行dump出原始数据。HOOK脱壳法Hook脱壳法一般都是基于frida和xposed这两个框架进行做hook操作的。这种hook脱壳法:先需要进行分析app应用,找到可以进行hook的函数,然后在选择用的顺手的、适用的frida或xposed框架进行 hook。(xposed是java编译,适用于java层hook;frida适用于java层和native层hook)。通过对关键函数dvmDexFileOpenPartial进行hook实现脱壳。也可以通过xposed框架hook ClassLoader的loadClass函数实现脱壳。定制系统脱壳法主要是通过修改系统源码中的关键函数,接着将修改后的源码重新编译并进行刷机。例如通过修改系统dvmdexfileopenpartial函数的关键逻辑。在函数里面修改写入我们想要实现的功能。第二代加固和脱壳由于第一代加固是整体性加固的,因此只要dump到关键点后,就可以完整的获取到dex整个内容。由于第一代壳的缺点,随之而来的就是进行对APP中关键类的抽取技术。那么第二代加固主要进行如下的功能点。DEX保护: DEX类抽取、DEX动态加载、SO动态加载So保护:SO加密动态防护: 反调试,防HOOK资源文件保护:本地数据库保护、本地文件保护脱壳技术方案脱壳原理:主动调用类中的每一个方法,并实现函数指令的还原常见的加固厂商的指令抽取的实现方式主要又两大类,一种是指令代码在dex文件原便宜位置处还原,另外一种就是随机分配,通过修订偏移的方式,使程序在执行过程中通过修定的便宜找到函数指令;android程序在执行过程,使用到类时候,都需要进行加载,而在加载过程中,函数指令就会进行指令还原或修订函数指令指向的位置,我们可以利用这个时机,将代码拷贝到原代码位置,进而实现类抽取壳的脱壳。下面罗列针对第二代加固的脱壳法内存重组脱壳法通过内存中dex文件的格式,找到完整的dex文件,将其组合到一起。内存dump脱壳法通过工具:IDA Pro + dumpDEX1、通过/proc/%d/maps获取内存映射2、在内存中查找关键字 dex.035或dex.0363、手动dump查找到的数据。也可以直接用frida中的dump脚本进行内存dump脱壳。动态调试脱壳法1、通过基于IDA的android_server的代理方式进行附加app。2、再IDA中下dvmDexFileOpenPartial 断点,确认要dump的起始地址和大小。3、用ida的脚本方式进行dump出原始数据。HOOK脱壳法Hook脱壳法一般都是基于frida和xposed这两个框架进行做hook操作的。这种hook脱壳法:先需要进行分析app应用,找到可以进行hook的函数,然后在选择用的顺手的、适用的frida或xposed框架进行 对关键函数hook。(xposed是java编译,适用于java层hook;frida适用于java层和native层hook)。通过对关键函数memcmp、dexFileParse进行hook实现脱壳。也可以通过hook ClassLoader的loadClass函数实现脱壳。定制系统脱壳法主要是通过修改系统源码中的关键函数,接着将修改后的源码重新编译并进行刷机。例如通过修改系统memcmp、dexFileParse函数的关键逻辑。在函数里面修改写入我们想要实现的功能。第三代加固和脱壳第三代加固方案主要进行对函数进行做抽取,并进行做动态加解密方式,下面罗列关键的加固技术点DEX保护: DEX Method代码抽取、Dex Method动态解密SO保护:SO加壳动态防护:防内存dump、防系统核心库HOOK资源文件保护:H5文件保护APP函数抽取指令流程:1、解析原始dex文件格式,保存所有方法的代码结构体信息。2、通过传入需要置空指令的方法和类名,检索到其代码结构体信息。3、通过方法的代码结构体信息获取指令个数和偏移地址,构造空指令集,然后覆盖原始指令。4、重新计算dex文件的checksum和signature信息,回写到头部信息中。脱壳方法:HOOK脱壳法通过利用frida框架进行hook关键函数DexFile,OpenFile、dexFindClass等关键函数实现脱壳。定制系统脱壳法通过修改系统源码中的关键函数如DexFile、OpenFile、dexFindClass函数的关键逻辑,然后进行重编系统。在ART中通过修改定制dex2oat法进行脱壳。第四代加固和脱壳现在市面上强度最强加固方案实属代码虚拟化保护的方案。通过将程序的代码编译为虚拟机指令也就是虚拟机代码(也就是自定义的代码集),通过虚拟机cpu解释并执行的一种方式。下面罗列下关键的加固技术点DEX保护:代码VMP虚拟化保护SO保护:基于llvm的SO文件保护(ELF VMP)脱壳方案HOOK脱壳法可以基于frida框架进行针对不同虚拟机(dalvik和art)实现进行hook。定制系统脱壳法总结利用frida脱壳方法:1、通过找到DexFile对象(art虚拟机是DexFile对象,dalvik虚拟机下是DexFile结构体),获取到DEX文件的起始地址和大小,然后dump下来。常见能够找到DexFile对象的函数有LoadMethod、ResolveMethod函数等,能直接获取到DEX起始地址和大小的常见函数有openMemory、dexparse、dexFileParse、dvmDexFileOpenPartial等函数。frida_unpack便是其中的代表作。2、利用frida的搜索内存,通过匹配DEX文件的特征,例如DEX文件的文件头中的魔法值---dex.035或dex.036这个特征。frida-Dexdump便是这种脱壳方法的代表作。自定义系统和定制的android设备方法:1、采用定制的android的rom,可以有效对抗市场中所有的加密壳、类抽取类型的壳;相比开源的脱壳工具,大体都是基于hook框架,例如frida、Xposed;目前大多加固厂商已经对hook框架,以及脱壳框架的特征进行了安全检测,这会导致app启动失败,从而实现脱壳失败,而通过自定义的rom,没有依赖hook框架,也就没有相关框架特征代码标志,所以脱壳成功率会比较高。2、采用定制android硬件设备优势,基于android的开源性,google公司每次发布新版的rom,都会率先在Pixel、Nexus系列的设备上最早应用,这也导致大部分安全从业者为了提升工作效率,间隔的采用自定义ROM实现方式,在市场中开源脱壳ROM,大多是需要刷Nexus、Pixel系列机型,这也使得大多加固厂商对这Nexus、Pixel系列机型做特殊,更深层次的安全防护检测,以此保证程序在运行过程中的安全性。通过定制android硬件设备,没有Nexus、pixel设备相关特征,更能提高脱壳的成功率。E N D ▲往期相关文章▼App安全测试你需要了解的APP安全APP安全合规点个在看你最好看 原文始发于微信公众号(小道安全):APP加固攻防梳理
阅读全文
最新linux安全加固脚本2.0 安全闲碎

最新linux安全加固脚本2.0

  获取方式   关注公众号后台回复: 安全加固 即可获得该脚本 乌雲安全 乌雲安全,致力于网络安全攻防、内网渗透、代码审计、安卓逆向、CTF比赛、应急响应、安全运维、安全架构、linux技巧等技术干货分享。 44篇原创内容 公众号 如对你有用,麻烦点个赞、在看相关推荐: Windows系统安全|Windows本地安全策略目录本地安全策略    密码策略    账户策略    审核策略    用户权限分配 &n…
阅读全文
从Responder的攻击角度看windows加固 安全闲碎

从Responder的攻击角度看windows加固

一、背景    在某些无凭证开始的内部网络攻防对抗中,Responder依靠着在无凭证的情况下可用于Net-NTLM的获取以及配合impacket的中继特性受到大量追捧,在此情况中合理运用Responder有时候可以发挥出其不意的作用,因此本文主要是对Responder日常主流使用的两个攻击角度出发去讲解其简单的利用和对应的防御措施,原理上来讲本文提到的防御措施不仅仅只是针对Responder,一切通过LLMNR和NBT-NS解析欺骗和SMB中继的利用工具都可防御二、攻击手法之Net-NTLM的获取    关于Responder中获取Net-Ntlm的方式主要有两种,第一种是让受害者访问一个不存在的资源使其直接通过DNS解析无法找到,那这时系统便会回退到LLMNR和NBT-NS进行解析,那Responder便会响应一切LLMNR和NBT-NS请求响应,并告诉请求者“我就是你要找的资源”,紧接着受害者对此资源的所有的请求都将被引导到攻击者身上,其中就包括受害者的Net-Ntlm,准备两台机器,攻击机A(192.168.72.152)和受害者B(192.168.72.155),在A上执行sudo responder –I eth0 –v当受害者B在寻找资源输入错误的资源名或存在早已失效的资源请求时Responder便会进行响应,欺骗B“没错,我A就是你要找的资源dsadsa,把你账户密码发过来做验证”至此A就通过欺骗成功获取了B的Net-ntlm,接下来只需要通过hashcat加载字典破解即可,另外一种就是通过WPAD,由于Windows 2000开始WPAD用于在windows中自动化的设置ie浏览器的代理被默认开启,当开启Responder的WPAD模块后,受害者浏览器会自动来加载我们的wpad.dat文件,因此当受害者浏览网站时不仅可获取到Net-NTLM,还可明文抓取到受害者输入的账号密码,在A上执行sudo responder –I eth0 –wrbF后,当B打开浏览器访问任意网站时,便会弹窗要求用户输入对应的账户密码(这里会弹窗要求输入账号密码的原因是开启了basic认证,不然获取到的只有Net-Ntlm)一旦B输入相应的账户密码后,便获取到其输入的明文账户密码及Net-Ntlm加固防御方法--禁用LLMNR打开gpedit.msc -计算机配置-管理-网络- DNS客户端-关闭多播域名解析-编辑-开启关闭多播域名解析加固防御方法--禁用NBT-NS网卡>属性> IPv4>高级> WINS,然后在“NetBIOS设置”下选择禁用TCP/IP上的NetBIOS加固防御方法--关闭wpadInternet选项-连接-局域网设置-取消自动检测设置,重启即生效(备注:建议有条件的企业可部署上网代理)开启防护策略后的最终效果当访问不存在的资源时,由于直接使用DNS,不再通过LLMNR和NBT-NS,因此快速响应资源不存在打开浏览器访问百度,正常访问攻击者A上,也未在监听到任何信息三、攻击手法之SMB中继准备三台机器,攻击机A(192.168.72.152)、受害者B(192.168.72.155)和受害者C(192.168.72.157),在A上先将Responder.conf中的SMB和HTTP设置为false保存文件后开启Responder然后再执行sudo pythonrunfinger.py –I 192.168.72.1/24,查看哪些服务器没有开启SMB签名从图上可以看到AD是开启了SMB签名的(域控默认开启),157和155是没有开启的然后执行sudo python Multireplay.py –t 192.168.72.155 –u Administrator,这时responder会将捕捉到的所有Net-Ntlm中继到155的机器上去,等待一段时间过后,responder成功捕捉到一个可以通过155认证的Net-Ntlm,从而获得了155的高权限加固防御方法--开启SMB签名在管理员权限下通过powershell执行Set-ItemProperty -Path"HKLM:SYSTEMCurrentControlSetServicesLanmanWorkstationParameters" RequireSecureNegotiate -Value1 –Force特别值得一提的是,在域环境中,还需要打上这一个补丁才会有效https://docs.microsoft.com/en-us/security-updates/securitybulletins/2015/ms15-027 参考文章:https://xz.aliyun.com/t/3560https://www.secpulse.com/archives/65503.htmlhttps://www.xctf.org.cn/library/details/242b5bc84314a983ee39d5bb5aab5243c875e3fc/ 本文始发于微信公众号(赛博星人):从Responder的攻击角度看windows加固
阅读全文
无死角加固 NFS 安全文章

无死角加固 NFS

    攻防本是一体,所以仔细想了想,后续的所有分享还是尽量交叉着进行,也方便大家从不同的角度去深入理解一个技术点,毕竟,扎实掌握才是根本目的,今天依然是老样子,'阅读原文',一个古董级却依然应用广泛的服务 'NFS 即 网络文件系统',阅读过程中如有任何问题或者建议,不要犹豫,请直接私信我  本文始发于微信公众号(红队防线):无死角加固 NFS
阅读全文
Windows操作系统安全加固 安全文章

Windows操作系统安全加固

 一、安全加固的概念1.为什么要安全加固(1)因系统存在脆弱性所以应修补系统存在的漏洞弱点以免造成损失(2)预防系统面临的威胁2.如何理解安全(1)可用性:保证授权实体在需要时可以正常地使用系统(2)保密性:阻止未经授权的用户读取数据(3)完整性:阻止未经授权的用户修改或删除数据二、安全加固的目标我们的目标是降低风险到可以接受风险是不可能被消除解析:风险值=通过威胁发生的机率、脆弱性的高低、资产的价值计算可能性和造成的损失来降低三、安全加固对象对所有可能产生脆弱性的应用:Windows系列:Windows2008 WindowsXP Windows2007等SQL Server数据库  MySQL数据库  oracle数据库中间件四、安全加固原则业务系统影响最小化风险是不可能被彻底消除,因为它是动态的,在加固过程中坚持的最基本原则是业务系统的可用性,对业务系统影响最小化。风险发现最大化在评估报告和漏洞扫描中的任何一个细节,将任何潜在的安全隐患以最大展现出来,标记并进行确认处理。五、Windows安全加固方法1、打补丁以及安装杀毒软件并保持更新2、开启防火墙3、系统服务 开启dhcp启动类型自动4、修改snmp的字符串5、安全策略6、密码策略:长度符合8位、要定期修改密码、密码复杂程度大小写特殊字符数字7、加固要点开始-运行-gpedit.msc8、用户权力指派9、检查本地安全策略配置10、日志和审核策略很多审核内容默认未开启步骤打开审核策略 编辑审核对象的审核项11、查看审核日志输入开始-运行eventvwr(事件查看器)12、用户加固要点检查用户:是否有多余的、克隆的、隐藏的清楚用户:未使用的、未知的13、设置重要文件权限ACL(访问控制列表),包含了用户账户和访问对象之间许可关系14、加密和压缩关于我们:北京路劲科技有限公司(Beijing Lujin Technology Co. , Ltd.)成立于2019年1月4日,是一家提供全面系统集成与信息安全解决方案的专业IT技术服务公司。公司秉承“为网络安全保驾护航”的企业愿景及“提升国家整体安全”的使命,依据风险评估模型和等级保护标准,采用大数据等技术手段,开展网络安全相关业务。公司致力于为各个行业的业务信息化提供软件和通用解决方案、系统架构,系统管理和数据安全服务、以及IT咨询规划、系统集成与系统服务等专业化服务。公司立足北京,走向全国,始终坚持“换位、细节、感恩”的核心价值观,以“共赢、共享、共成长”的经营理念为出发点,集合了一批敢于创新、充满活力、热衷于为IT行业服务的优秀人才,致力于成为您身边的网络安全专家。关注路劲科技,关注网络安全!公司:北京路劲科技有限公司地址:北京市昌平区南邵镇双营西路78号院2号楼5层504 本文始发于微信公众号(LSCteam):Windows操作系统安全加固
阅读全文
安卓 APP 三代加壳方案的研究报告 移动安全

安卓 APP 三代加壳方案的研究报告

安卓的加固方案是从 19 年底开始写的,到现在为止差不多快一年了,写这个目的还是学习怎么脱壳,前几个月再看雪看到有人直接分析壳来学习,不过我感觉从加壳写起也是一种浪漫。因为个人原因,在类指令抽取壳那里为半完成状态,在今年大概率没有时间接着修改了,在 java 层的加固就止于此吧!!!(PS: 以后有时间会接着修改) 环境配置:Android studio v3.5.3 华为G621-TL00 android v4.4.4 第一代壳:落地加载1、原理a、原理很简单,就是首先将我们的 dex 文件或者 apk 文件解密,然后利用DexClassLoader加载器将其加载进内存中,然后利用反射加载待加固的 apk 的 appkication,然后运行待加固程序即可,我画了个流程图详细说明如下: b、上面说了大概原理,现在来说明一下具体细节,我们知道,在一个 app 开始运行的时候,第一个加载的类是ActivityThread,该类有个关键属性currentActivityThread,通过该属性能够获取到一系列其他关键的属性,例如mPackages,通过该属性,我们可以获取到mClassLoader属性,通过替换该属性我们可以替换系统加载器,如下所示: 接着来说怎么获取待加固 apk 的 application,这个通过在脱壳 apk 的 AndroidManifest.xml 中使用meta-data来获取,如下所示: 在然后就是怎么替换 application,我们可以知道在 android.app.LoadedApk 类中有一个方法makeApplication可以生成一个 application,通过该方法生成一个 application,然后通过替换android.content.ContentProvider类中的mContext属性完成 application 的替换,如下图所示: 2、实际操作ps:因为第一代壳网上一大堆,所以讲得很粗略,同时这也不是本文的重点!!! 通过上面的代码我们可以得到脱壳 apk,然鹅待加固的 apk 放在哪里,网上大多放在脱壳 dex 的尾部,我又画了一张图,应该可以看图就懂了: 这个我采用通过 python 读取二进制然后重新计算 chunksum 和签名字段实现,代码如下: import binasciiimport hashlibimport zlibdef fixCheckSum(shell): shell.seek(0x0c) data = shell.read() checksum = zlib.adler32(data) strchecksum = str(hex(checksum)) strchecksum = strchecksum.replace('0x','') b = bytes(strchecksum.encode('utf-8')) a = bytearray(b) c = binascii.hexlify(binascii.unhexlify(bytes(a))) dataCheckSum = bytearray(c) shell.seek(0x08) shell.write(dataCheckSum)def fixSHA1(shell): shell.seek(0x20) signBytes = shell.read() sha1 = hashlib.sha1() sha1.update(signBytes) sign = sha1.hexdigest() tmp = bytes(sign.encode('utf-8')) b = bytearray(tmp) shell.seek(0x0c) shell.write(b)def fixFileSize(shell,num): b = bytearray() for i in...
阅读全文
Android安全(六)--apk加固原理 移动安全

Android安全(六)--apk加固原理

由于安卓APP是基于Java的,所以极容易被破解,一个不经过加固的APP犹如裸奔一样,毫无防备。之前曾有新闻报道,一些专职的APP打包党就是专门从各种渠道找到apk,通过各种破解手段将apk文件破解、反编译,然后加入广告、病毒代码,重新打包投入市场,不明真相的用户将带病毒广告的apk下载下来,甚至因此造成利益损失。下面,我将为大家介绍一下APP加固的原理和实现的步骤,希望对大家有所帮助。Android自底层向上分为4个功能层,分别是:Linux内核层、系统运行库层,应用程序框架层和应用程序层。其中,应用程序框架层提供开发Android应用程序所需的一系列类库,包含4类基本组件,丰富的控件、资源管理器、内容提供器、活动管理器等等。传统的安卓应用一般由Java语音编写,由四个主要组件组成:Activity、Intent Receiver、service、content provider。Android应用程序所使用的编程语音是Java语言,和Java SE一样,编译时将使用Sun JDK将Java源程序编程成标准的Java字码文件(.class文件),而后通过工具软件DX把所有字节码文件转成DEX文件,最后使用Android打包工具(aapt)将DEX文件,资源文件以及Android-Manifest.xml文件组合成一个应用程序包(APK)。源码加密:Dex文件保护、防二次打包、so文件保护、资源文件保护。其中,各个加密项目又包括好多个小项目,以dex文件加密保护为例,dex加密需要Dex加壳保护、dex加花、dex动态类加载等。应用加密:应用加密包括log日志输入屏蔽和清场技术。以清场技术为例,清场技术依赖于云端黑名单、白名单DB,应用每次启动后便自动进行本地的黑名单、白名单DB数据更新,若检测到有异常情况,则可对用户进行提示。数据安全:页面防劫持、本地数据保护、截屏保护、内存数据防查询、协议加密、虚拟键盘。以防截屏录屏功能为例,通过Hook技术监控系统底层截屏相关函数(操作),阻止相关函数调用,也可以在界面中添加代码防止页面截屏。APP加固是一个庞大的工程,包含却不止于上述的加固方式来源:百度之前分享过的资料:ctf web/ctf misc 学习资料,私聊公众号发送“ctf学习资料”会自动回复你下载链接;hw期间分享过溯源思维脑图,私聊公众号发送“获取高清图”会自动回复你下载链接;hw期间分享的个人收集的子域名字典,私聊公众号发送“获取子域名字典”会自动回复你下载链接;私聊发送“hw”或者“2020hw”,获取hw期间系列文章阅读链接;一如既往的学习,一如既往的整理,一如即往的分享。感谢支持2020hw系列文章整理(中秋快乐、国庆快乐、双节快乐)HW中如何检测和阻止DNS隧道app安全之反编译(一)Android安全(二)—-攻击框架drozer全功能介绍Android安全(三)—so注入(inject)Android安全(四)--数据库 之 SQLite数据库扫描关注LemonSec 本文始发于微信公众号(LemonSec):Android安全(六)--apk加固原理
阅读全文
Windows安全加固手册 安全文章

Windows安全加固手册

1      身份鉴别1.1         密码安全策略要求:操作系统和数据库系统管理用户身份鉴别信息应具有不易被冒用的特点,口令应有复杂度要求并定期更换。目的:设置有效的密码策略,防止攻击者破解出密码。操作步骤:【位置】开始—管理工具—本地安全策略—帐户策略—密码策略,加固设置为下图所示:  1.2         帐号锁定策略要求:应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施。目的:遭遇密码破解时,暂时锁定帐号,降低密码被猜解的可能性。操作步骤:【位置】开始—管理工具—本地安全策略—帐户策略—帐号锁定策略,加固后如下图所示: 1.3         安全的远程管理方式要求:当对服务器进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听。目的:防止远程管理过程中,密码等敏感信息被窃听操作步骤:【位置】开始—管理工具—远程桌面服务—远程桌面会话主机配置,右键“RDP-Tcp”,选择“属性”—“常规”,加固后如下图所示: 2      访问控制2.1         关闭默认共享要求:应启用访问控制功能,依据安全策略控制用户对资源的访问。目的:如果没有关闭系统默认共享,攻击者通过 IPC$方式暴力破解帐户的密码,而后利用系统默认共享如:C$、D$等,对系统的硬盘进行访问操作步骤:【位置】开始—管理工具—共享和存储管理,记录当前配置,默认如下图所示:右键依次点击C$、D$、ADMIN$,停止共享,加固后如下图所示:net share C$ /delnet share D$ /delnet share ADMIN$ /del操作步骤:【位置】运行—regedit进入注册表,在HKEY_LOCAL_MACHINE—SYSTEM—CurrentControlSet—Services—LanmanServer—Parameters下,新增AutoShareServer、AutoShareWks两个键,类型为DWORD(32位),值为0,如下图所示: 2.2         用户权限分配要求:应根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限。目的:如果系统没有对帐号进行严格的权限分配,则黑客可以利用低权限的帐号登陆终端,甚至关闭系统。操作步骤:【位置】开始—管理工具—本地安全策略—本地策略—用户权限分配,“关闭系统”,记录当前配置,默认如下图所示:只保留Administrators组、其它全部删除“允许通过远程桌面服务登录”,记录当前配置,默认如下图所示:只保留Administrators组、其它全部删除 2.3         禁止未登录前关机目的:禁止系统在未登录前关机,防止非法用户随意关闭系统。操作步骤:【位置】开始—管理工具—本地安全策略—本地策略—安全选项—“关机:允许系统在未登录的情况下关闭”,默认如下图所示: 2.4        重命名默认帐号要求:应严格限制默认帐户的访问权限,重命名系统默认帐户,修改这些帐户的默认口令。目的:修改默认帐号,防止攻击者破解密码。操作步骤:【位置】开始—管理工具—计算机管理—系统工具—本地用户和组—用户,可修改成下图所示: 2.5         多余帐号要求:应及时删除多余的、过期的帐户,避免共享帐户的存在。目的:删除或禁用临时、过期及可疑的帐号,防止被非法利用。操作步骤:【位置】开始—管理工具—计算机管理—系统工具—本地用户和组—用户,询问管理员每个帐号的用途,确认多余的帐号,然后右键点击“删除”或“禁用”。可使用net user 用户名  命令查看该用户的详细信息,如下所示: 3      安全审计要求:审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户;审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件;审计记录应包括事件的日期、时间、类型、主体标识、客体标识和结果等;应能够根据记录数据进行分析,并生成审计报表;应保护审计进程,避免受到未预期的中断;应保护审计记录,避免受到未预期的删除、修改或覆盖等。 3.1         审核策略设置目的:开启审核策略,若日后系统出现故障、安全事故则可以查看系统日志文件,排除故障、追查入侵者的信息等。操作步骤:【位置】运行—管理工具—本地安全策略—本地策略—审核策略,策略建议设置为: 3.2         安全日志属性设置目的:防止重要日志信息被覆盖操作步骤:【位置】开始—管理工具—事件查看器—Windows日志,“应用程序”、“系统”、“安全” 依次如下操作:4      剩余信息保护4.1         不记住用户名和密码目的:应保证操作系统和数据库管理系统用户的鉴别信息所在的存储空间,被释放或再分配给其他用户前得到完全清除,无论这些信息是存放在硬盘上还是在内存中。操作步骤:【位置】开始—管理工具—本地安全策略—本地策略—安全选项“交互式登录:不显示最后的用户名”,默认如下图所示:选择“已启用” 4.2         清理内存信息要求:应确保系统内的文件、目录和数据库记录等资源所在的存储空间,被释放或重新分配给其他用户前得到完全清除。目的:及时清理存放在系统中的用户鉴别信息,防止信息外泄,被黑客利用操作步骤:【位置】开始—管理工具—本地安全策略—本地策略—安全选项—关机:清除虚拟内存页面文件,设定如下所示: 4.3         关闭调试信息目的:系统启动失败时,为了分析启动失败的原因,内存信息会自动转储到硬盘中。其中数据对普通用户无用,及时清理存这些信息或禁止出错转储,防止外泄被黑客利用。操作步骤:【位置】开始—计算机—右键“属性”—高级系统设置—高级—启动和故障恢复—设置,设定如下所示: 5      入侵防范5.1         卸载冗余组件要求:操作系统遵循最小安装的原则,仅安装需要的组件和应用程序,并通过设置升级服务器等方式保持系统补丁及时得到更新。目的:卸载WScript.Shell, Shell.application这两个组件,防止黑客通过脚本来提权。操作步骤:【位置】运行—cmd,执行如下信息: 5.2       关闭不必要服务目的:关闭与系统业务无关或不必要的服务,减小系统被黑客被攻击、渗透的风险。操作步骤:【位置】开始—管理工具—服务,可禁用如下服务:IP Helper             (Ipv6技术   启动类型:禁用   服务状态:停止)Remote Registry       (Ipv6技术   启动类型:禁用   服务状态:停止)Themes                (主题管理   启动类型:禁用   服务状态:停止) 6      恶意代码防范6.1         杀毒软件要求:应安装防恶意代码软件,并及时更新防恶意代码软件版本和恶意代码库。目的:安装杀毒软件,对恶意代码等进行防范及查杀。推荐杀毒软件:卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe大蜘蛛:http://free.drweb.ru/download+cureit+free火绒安全软件:https://www.huorong.cn360杀毒:http://sd.360.cn/download_center.html 7      系统资源控制7.1         屏幕保护要求:应根据安全策略设置登录终端的操作超时锁定。目的:设置屏保密码,提高服务器的安全性操作步骤:【位置】开始—控制面板—显示—更改屏幕保护程序,如下所示: 7.2         设置会话超时锁定策略要求:设置会话超时锁定功能,提高服务器的安全性。操作步骤:【位置】运行—gpedit.msc—计算机配置—管理模版—Windows组件—远程桌面服务—远程桌面会话主机—会话时间限制—设置活动但空闲的远程桌面服务会话的时间限制,设定如下信息:~ end ~关注公众号:HACK之道如文章对你有帮助,请支持点下“赞”“在看” 本文始发于微信公众号(HACK之道):Windows安全加固手册
阅读全文
移动安全(九)|TengXun加固动态脱壳(上篇) 移动安全

移动安全(九)|TengXun加固动态脱壳(上篇)

yi移dong动an安quan全0x00背景本文是团队新加入的大佬咸湿小和尚在研究腾讯加固动态脱壳的一些总结经验,篇幅较长,希望各位大佬在细品之下有所收获~由于之前未声明原创,无法加入《移动安全系列专辑》,为保证此系列完整性,特此重发一遍,看过的大佬跳过直接看下篇即可~0x01本文目录0x02实验目的通过动态分析调试对腾讯加固进行脱壳尝试0x03实验开始1、分析so壳目标so文件:libshella-2.8.1.so1.1、使用IDA打开时候若会提示:这时候注意关键在sectionignore如果强行打开,则会出现混淆情况因为elf文件可以没有section,所以我们就可以把section改为001.1.1强行打开全程OK,强行读取,发现文件始终还是可以被反汇编但是函数部分全部变成sub_xxx1.1.2使用010editor修改打开010editor,若未激活最好先激活1.1.3使用ElF解析器,导入bt文件,然后启用然后选中section_header_table使用tool中的and操作改为hex的001.1.4另存为并重新放入ida已经正常显示,这时候就可以静态分析了1.2、jni函数被加密由于我们知道so文件加载的时候会首先查看.init或.init_array段是否存在,如果存在那么先运行这段内容,如果不存在那么就检查是否存在JNI_onload(),如果存在则执行jni_onload()。所以我们可以推测,解密jni_onload()应该就在.init或.init_array处。因为动态调试so的时候,jni_onload()是可以显示,但是.init或.init_array是无法显示的,所以必须通过静态分析出这两段偏移量然后动态调试的时候计算出绝对位置,然后再makecode(快捷键:c),这样才可以看到该段内代码内容1.2.1获取so文件中的.init或.init_array其中两个方法我未尝试成功,不过可以通过linux读取:readelflibshella.so -a1.2.2分析.init_array找到.init函数执行位置,使用IDA查看:(使用快捷键g)直接搜索接下来进入到sub_14D4F5编译一下:2、启动IDA动态调试adbshell su /data/local/tmp/as -p31928adb forwardtcp:31928 tcp:31928adb shell am start -D -ncom.qianyu.app/.LoginActivityadb forward tcp:8700jdwp:15127jdb -connectcom.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8652如果出现错误查看serverSocket所监听的端口netstat-nao关键地址:基址+偏移地址这时候将基址加上偏移地址即base的值加上2748(查看文章偏移量计算)4003C000+ 2748 =4003E748找到位置即可用快捷键C3、下断点启动:运行后在节点处停下进行下一步分析4、流程式查看F9到运行在BL      unk_400405F4          使用F7进去看到第一个初始化函数;这里需要注意,可以看到前面是libshella.so而不是其它的so文件,其中几次调试会出现libBugly.so的so文件进入libshella.so前:由于没有逻辑处理,紧接着F8回来,再一次F9再一次F7进去:这里点击P键恢复原函数可以看到第二个初始化函数:同步SP寄存器查看就可以看到程序执行流程了在这里可以跟随函数不断往下走,也可以试试脚本staticmain(void){  do {       step_over();      wait_for_next_event(STEP,-1); }while(PC!=0xEEDAFC2C);//停在何处}单步跟踪法查询到查询执行死亡的位置,然后定位进入后,点击P分析代码5、nop掉反调试定位寻找函数create()相关的创建线程的反调试函数;而定位后需要对其进行nop,即将16进制的hex数据改为0000 A0 E1每一个create函数都会被隐写,因此都需要c键去分析一下,如下unk_7822835C进去后,按下C键,从而确定为create函数,然后esc键返回。然后定位create改为nop函数然后根据libdvm.so计算偏移量:414CE000+手机本机偏移量计算得偏移量得值=4151DFAC(查阅文章arm手机偏移量)定位jni_onload()的调用文件点:运行到此处后F7进入:P一下后F5查看伪代码查询逻辑,发现调用dlopen打开动态链接库和dlsym返回符号地址因此这个函数不仅仅是获取函数地址,还可以获取变量地址在反汇编窗口,运行完程序后找到一个关键跳转点:在这里return返回前进行了一个逻辑处理:选择F7跟进处理查看,这里可见需要关注的大多为寄存器的存储值,除此之外,还需要每个函数跟进分析:在判断以后执行最后一个:而进去后为:找到了Android的大多数信息:却不是执行程序,然后就看第二个函数:第二个函数传入v4,而v4为:loaddone!为何load?肯定是用了一些基址函数去读取,继续跟随可见,v4相当于a1传入,如果是成功的,执行了第五行程序,而第五行程序为什么程序呢?跟踪查看:可见,传入的4个值均为注册,而v1程序里,未知的那个值就是读取的dex文件因此可以推理出,如果这个时候secshell加载成功,dex文件就会被隐藏我们dump点只能在执行过程后的那一刻,而必须是在执行过程,因此,对v1程序里的那个未知参数进行跟踪:点D键分析或直接跟踪:由于篇幅过长,剩余内容敬请阅读下篇详解~往期经典推荐:漏洞笔记|记一次与XXE漏洞的爱恨纠缠深入探究浏览器编码及XSS BypassApache Solr远程命令执行复现“最后”的Bypass CDN 查找网站真实IP渗透实战(一)|BSides Vancouver 2018 (Workshop)移动安全(一)|Android设备root及神器Xposed框架安装内网信息收集篇MSF 下域内渗透>>关于我们:WhITECat安全团队是起源实验室合作安全团队,主要致力于交流分享团队成员技术研究成果、即时发布最新的漏洞新闻资讯、各大厂商内推通道以及各种安全相关延伸。团队成员目前由起源实验室核心成员、一线安全厂商攻防实验室、某研究院、漏洞盒子TOP10白帽子等人员组成。团队内有不定期的技术交流,(不可描述)工具分享等活动,致力于实现“开放分享”的hack精神。欢迎各位大佬关注^_^关注我们开放共享扫描上方二维码添加关注一起分享安全狮的日常 本文始发于微信公众号(WhITECat安全团队):移动安全(九)|TengXun加固动态脱壳(上篇)
阅读全文
中间件安全之Tomcat安全加固 安全博客

中间件安全之Tomcat安全加固

tomcat安全加固 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统被普遍使用,Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上是作为一个与Apache 一样独立的进程单独运行。Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器。
阅读全文