1.你是怎么判定快速判定样本黑白的?
根据样本类型来进行相应的判断
- 脚本类的程序
打开后能够直接查看脚本的代码内容,看样本是否有易于正常样本的行为,
比如以最小化或者静默方式运行,样本中包含C2地址,或是采用混淆,这里的混淆比如说是采用大小写绕过,或者是url的拼接之类的,或是脚本内容本身就是加密或进行过某种编码。
- 文档类样本分析
打开之后诱导用户输入账户密码等
诱导用户手动接触宏或者解除编辑功能的禁用状态
文档钓鱼,作为跳板,在文档中存在恶意链接
- exe可执行文件
是否存在解密过程,比如说自身解密释放文件
查看是否存在可疑字符串
- DLL文件
导出函数的异常
- 多函数的地址相同
- 函数具体内容为0,或是无意义的指令
- 函数名称与杀软或安全厂商有关
- 函数名为随机乱码
2.给你大量的样本,不使用沙箱或虚拟机,怎么快速的判定?
3.反调试、反沙箱有遇到过什么新颖的手法吗?
1.时间规避类
-
- 延时执行——sleep
- 沙箱加速
- getTickCount——
- 针对沙箱的加速机制
- 沙箱hook掉计算时间间隔的api(GetLocalTime,GetSystemTime)
- 从外部服务获取时间NTP
- API-flooding无限循环调用正常的API,将延时和正常的业务结合在一起,如何规避的?
- 限制API调用频率
- 设置API配额(允许使用的次数)
- 内联汇编,在循环中执行无效操作
- 沙箱应对措施:设置相似的延时代码为恶意代码
- 延时执行——sleep
- 环境检测类
- 屏幕分辨率
- 系统语言
- 主机名,用户名
- 注册表——沙箱中有特定的注册表路径
- 进程:检测正常主机应该有的进程,检测沙箱中特有的进程
- 最近使用文件——近期是否有用户使用过的痕迹
- 相似的还有临时文件夹,特定目录
- 开机时间
- 系统正常运行时间太短
- 系统正常运行时间太长
- wifi检测——windows虚拟机将所有网络连接识别为有线连接
所以没有任何wifi连接记录的主机很可能就是虚拟机
9.检测活跃窗口的数量
3.硬件检测类
4.用户交互类
4.沙箱内部检测规则编写,写的是什么规则啊?
5.yara写过吗?如果给你一个后门或勒索病毒你会怎么写规则?你写的时候可能会关注什么东西提取出来写yara规则?
文件的哈希值
文件中的特定的字符串
导入函数
行为特征
6.简单讲一下windows进程是怎么加载的?
答:
- 创建进程的虚拟地址空间
- 初始化进程的虚拟地址空间
- windows装载器开始装载PE文件
- 读取PE文件,按照PE格式进行解析
- 先判断PE头中的imagebase所定义的加载地址是否可用,如果已经被占用,则重新分配一块大小为sizeofimage的空间
- 根据节表信息,基于内存对齐,将文件的各个节映射到分配的空间中。
- 如果文件被加载的地址不是imagebase定义的地址,则修正imagebase(基于重定位表修改内存)
- 你说一下是怎么实现重定位表的过程的?
- 在应用程序中根据重定位表(DataDirectory[6])定位到硬编码的偏移
- 根据偏移定位到硬编码的值,减去ImageBase(RVA-ImageBase)
- 加上实际的加载地址,将偏移处硬编码的值更新。
- 解析导入表:根据PE文件的输入表加载所需要的DLL到进程空间,然后替换IAT表内的数据为实际调用函数的地址
- 根据PE头内的数据生成初始化的堆和栈
- 最后加载器将控制权交给PE文件的入口点,address of entrypoint
- windows装载器开始装载PE文件
7.添加shellcode的时候32位和64位有什么区别吗?
1.寄存器大小不同
2.内存地址不同
3.指令集不同
4.栈对齐不同
8.讲一下hook吧,你了解的有什么?
- IAThook有什么缺点吗?
如果目标函数在内核模式下执行,IATHook无法触发
只能针对导入表中的函数进行HOOK
IAT HOOK 和InlineHook的本质区别是什么?
IAT修改函数指针,InlineHook修改函数体
8.DLL注入有哪几种方式啊?
1.创建远程线程注入
2.注册表注入
3.setWindowsHookEx
4.DLL劫持
9.简单说一下远程线程dll是怎么实现注入的?
10.接下来你的研究方向和职业规划能简单讲一下吗?
11.编程语言哪一个是比较擅长的?
12.威胁情报呢?威胁情报感兴趣吗?如果给你一个攻击事件或是报告,你能从报告里提取出什么有价值的信息?