安全基础
配置靶场
DVWA
php_dest/php.ini
;包含路径,删除注释
extension=gd
allow_url_fopen=On
allow_url_include=On
DVWA/config/config.inc.php
$_DVWA[ 'db_user' ]     = 'dvwa';
$_DVWA[ 'db_password' ] = 'toor';
$_DVWA[ 'recaptcha_public_key' ]  = '6LejsJMaAAAAABhdAwAlYxNVJJC6xDEfN6qpWm4Y';
$_DVWA[ 'recaptcha_private_key' ] = '6LejsJMaAAAAAOh9Twp7x6CMgRBD0AfmzzeykYrs';
QA
mysql setup:创建同名数据库和用户,赋予用户全部权限
php_gd:apt install php-gd
PHP Study 卸载phpstudy后80端口仍存在:使用everything搜索phpstudy,删除‘D_Dev_Tools'开头两个文件
C:\Users\QY_Kyana\AppData\Local\Packages\Microsoft.Windows.Search_cw5n1h2txyewy\LocalState\AppIconCache\150
适用于win10_20h2最新版
隐写知识
常用加密:base64、base32、MD5、字符串搜索解压密码
音频隐写
- 观察频谱图
- 放大波形,高位为1低位为0,转换ASCII
- MP3stego
- LSB(最低位有效)
- 摩斯电码
图片隐写
- 
查看属性 
- 
检查标志(用hxd等文本编辑器打开),如果不正确修改恢复图像,未完全显示时候修改图像宽高使图像恢复完全;图像结束标志后加入数据 
- 
检查是否是多张图,binwalk 
- 
不影响图像效果情况下,修改像素数据,加入信息 
- 
利用隐写算法(F5、Guess等),只限于jpg # png 89 50 4E 47 0D 0A 1A 0A:文件头标志 00 00 00 0D:表示IHDR头块长13 49 48 44 52:IHDR标识,ASCII码为IDHR XX XX XX XX:图像宽度,单位像素 XX XX XX XX:图像高度,单位像素 XX:图像色深,XX:颜色类型 00 00 00 XX XX XX:CRC校验位 00 00 00 00 49 45 4E 44 AE 42 60 82:文件尾标志 # gif 47 49 46 38 37/39 61:header入口,前三个是GIF,后三个是版本87a/89a 00 3B:文件尾标志,XX XX XX XX:图像渲染区域和宽高 XX:压缩字节,XX:背景色在全局颜色表索引,XX像素宽高比,多数0 P.S.需要分帧查看各帧组合数据是不是 # jpg FF D8 FF:文件头标志 FF D9:文件尾标志 # rar 52 61 72 21 1A 07 00:文件头标志 # zip ## 压缩源文件数据区
50 4B 03 04:文件头标识
14 00:解压所需pkware版本
00 00:全局方位标记(有无加密),只有第二个数字为奇数时候加密
08 00:压缩方式
XX XX:文件最后修改时间
XX XX:文件最后修改日期
XX XX XX XX:CRC32校验
压缩源文件目录区
50 4B 01 02:目录中文件头标记
3F 00:解压文件所需pkware版本
00 00:全局方式位标记(有无加密),真加密两个都是0900、假加密文件目录0900、不加密0000
   
   ## 常见套路
   
   
   
   ### strings工具使用
   
   获取的编码通常需要base64等解码
   
   ```bash
   -a # 扫描整个文件
   -f # 显示字符串前先打印文件名
   -t # 输出字符位置,odx
   -e #选择字符大小和排列顺序
binwalk或者winhex16提取zip
binwalk file -e
选中头到尾,复制选块到新文件
MP3Stego
encode -E hidden_text.txt -P pass origin_sound output_sound.mp3
decode -X -P pass hidden_sound.mp3
常见文件头标志
| 文件名 | 头标志 | 
|---|---|
| JPG | FF D8 FF E0 00/FF D8 FF FE 00 | 
| GIF | 47 49 46 38 39 61/47 49 46 38 37 61 | 
| BMP | 42 4D | 
| ZIP | 50 4B 03 04/05 | 
| GZ | 1F 8B 08 | 
| ICO | 00 00 01 00 00/100 | 
| 25 50 44 46 2D 31 2E | |
| JAR | 5F 27 A8 89 | 
| HTML1 | 3C 68 74 6D 6C 3E | 
| HTML2 | 3C 48 54 4D 4C 3E | 
| HTML3 | 3C 21 44 4F 43 54 | 
| MIDI | 4D 54 68 64 | 
| MPEG | 00 00 01 B3/BA | 
| PNG | 89 50 4E 47 0D 0A | 
| RAR | 52 61 72 21 | 
| RPM | ED AB EE DB | 
| XML | 3C 3F 78 6D 6C | 
| TIFF | 49 49 2A 00 | 
| PSD | 38 42 50 53 | 
| RTF | 7B 5C 72 74 66 | 
| DocXls | D0 CF 11 E0 | 
| WAV | 57 41 56 45 | 
| AVI | 41 56 49 20 | 
| MOV | 4D 54 68 64 | 
| DWG | 41 43 31 30 | 
一点外挂
01|CheatEngine PVZ 0cd
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
add dword ptr [edi+24],10000
mov eax,[edi+24]
exit:
jmp returnhere
"PVZ原版启动程序.exe"+8728C:
jmp newmem
nop 2
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"PVZ原版启动程序.exe"+8728C:
add dword ptr [edi+24],01
mov eax,[edi+24]
//Alt: db 83 47 24 01 8B 47 24
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="38">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"No description"</Description>
      <LastState Value="0" RealAddress="1566453C"/>
      <VariableType>4 Bytes</VariableType>
      <Address>1566453C</Address>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"0cd script"</Description>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
add dword ptr [edi+24],10000
mov eax,[edi+24]
exit:
jmp returnhere
"PVZ原版启动程序.exe"+8728C:
jmp newmem
nop 2
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"PVZ原版启动程序.exe"+8728C:
add dword ptr [edi+24],01
mov eax,[edi+24]
//Alt: db 83 47 24 01 8B 47 24
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
02|CCL反软件查杀
multiCCL定位原理图示
        by niu-cow in NE365
         2996-04-22
1.假设一种比较极端的情况:
  某杀毒软件针对某样本
  抽取了如下 a  b  c  d  e 的五个特征码片段
  而其中的任何一个单独的片段都不构成完整的特征码
    更极端的情况是可能有两套这样的组合。
  却以其中任何两处来识别。(见 图1)
这样,如果用原来的CCL就很难定位了,就算能定位,操作也
   变得很复杂。
(图1)
..............................aaaaaaaaa........................
...............................................................
.............bbbbbbb.........ccc...............................
...............................................................
...................ddddddddd...............eeeee...............
2.针对这种情况
    有个思路是从一端开始盖零(考虑到PE文件文件头的重要性
  multiCCL选择了从尾端开始往前盖)。
  直到如图2所示时,杀毒软件才不能识别
     (b片段被破坏了一个字节)
    这样b尾端就出来了。
(图2)
..............................aaaaaaaaa.........................
................................................................
.............bbbbbb000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
------------------------------------------------------------------
下面是定b片段的头端了
     看看图3 图4 图5 ,注意看b片段中间那个字节的零的移动
(图3)
..............................aaaaaaaaa.........................
................................................................
.............bbbb0bbb0000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
----------------------------------
(图4)
..............................aaaaaaaaa.........................
................................................................
.............0bbbbbb00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
----------------------------------------------------------------------
(图5)
..............................aaaaaaaaa.........................
................................................................
............0bbbbbbb00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
--------------上图的a 和 b 两个片段都暴露了--------------------------
   图5 中,暴露出完整的a b 两个片段,这下又被杀毒软件认出来了
这样就定位出b段了。
接下来把b希用0盖掉作为新的样本,用杀毒软件检测一下是否被杀,还杀就
重复前面的步骤定 c 段,如图6
(图6)
..............................aaaaaaaaa........................
...............................................................
.............0000000.........ccc...............................
...............................................................
...................ddddddddd...............eeeee...............
-----------------------------------------------------------------------
如果定好c段盖掉后还是被杀就再定 d 段
  如图7
(图7)
..............................aaaaaaaaa........................
...............................................................
.............0000000.........000...............................
...............................................................
...................ddddddddd...............eeeee...............
-----------------------------------------------------------------------
这样重复,直到片段d e ……都被找出盖掉后,杀毒软件再也不认了
-----------------------------------
    一个字节一个字节来显然太费时间,效率很低的,一次性
生成上千个文件也是不现实的。
  所以考虑先用二分法粗定。到范围小时再逐字节替换。
-----------------------------------
从尾端开始数,以1.2.4.6.8……的大小往前盖
      即取2的指数阶 , 2^n <  文件尺寸就行了。
         一次生成20个左右的样本文件,用杀毒软件检测
以例图说明吧(见 图8图9)
下面这个盖了128 bytes 的还被识别
(图8)
..............................aaaaaaaaa........................
...............................................................
.............bbbbbbb.........ccc...............................
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
-----------上面这个盖了128 bytes的还被识别-------------
--------------下面这个盖了256 bytes 的不被识别了--------------------
(图9)
..............................aaaaaaaaa........................
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
--------------------------------------------------------------------
那就说明距文件末尾256--128之间有个特征码片段,
下一步就以图8为样本,
       定位的范围是 图10 中经XXXX标记的区域
(图10)
..............................aaaaaaaaa........................
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
---------------------------------
如此反复,当范围缩小到32字节或更小,二分法就显得效率低下了,
  改用逐字节替换法,一次生成最多32个文件。
-----------
另外,
图8 图9 图10 之外,还有一种情况,
         就是某次用二分法生成的所有文件
     杀毒软件都不识别,那就说明特征码集中在最大盖0范围之前
   即图9中 未盖0的区域,这时只要以图9为样本,
     定位图11中以YYYY标记的区域
(图11)
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
------------
尾端定出后,再用 图3图4图5 所示的方法把0还字节前移,一次生成32个
文件用杀毒软件检测,如果32个全不被杀时,就取这32个字节作为定位结果
对于这种大尺寸的片段,没必要完全定位出片段的头端。
    (因为一个片段中只要修改一个字节就够了)
----------------------------------
==================================
----------------------------------
  基本原理就如上面所述,其实就什么简单。
  不管杀毒软件用几套组合,用复合还是单一特征码,都照样搞定它。
当然,以后杀毒软件使出什么新招就说不准。~~~~~~~~~~~~~~~~~
  (本文仅作思路上的探讨,若有人因应用本文的思路带来某些后果,均与
本文作者无关。)
           若有不当之处,请各位指正,谢谢
----------------------------------------------------------
补充说明:
2006-04-24 :
      刚刚发现有的杀毒软件开始用检测文件的某几处是否被填充0来反定位了,
        一旦被检测到某几处被盖0 ,就把位置更先前的干扰码激活。这时就算
     牺牲效率一直往前盖,也只能定位出干扰码(假的特征码)。
      现在暂时可用随机数据串填充应付,不知道以后还会有什么招。
   另外,NDD32的特征码用的是代码与输入表关联,对付这种特征码的方法是,
      先普通定位,然后把找到的输入表上的特征码片段保护起来再定位,
       这样就能找到代码里的特征码片段了。
2005-05-22 :
     通过实际测试发现等分法比二分法效率更高,于是又改用等分法了。
病毒免杀技术
- 加花指令:添加一段不影响程序运行的指令,使特征码偏移
- 加壳:先运行壳,再由壳运行程序
- 修改特征码:病毒库匹配不到

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号