[系统安全] 四十七.Powershell恶意代码检测系列 Powershell基础语法和注册表操作
Posted Eastmount
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[系统安全] 四十七.Powershell恶意代码检测系列 Powershell基础语法和注册表操作相关的知识,希望对你有一定的参考价值。
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~
前文分享了Powershell基础入门知识,涉及基础概念、管道和重定向、执行外部命令、别名用法、变量定义等。这篇文章将从Powershell条件语句、循环语句、数组、函数 、字符串操作、注册表访问等方面讲解。Powershell被广泛应用于安全领域,甚至成为每一位Web安全必须掌握的技术。本文参考了Bilibili的Hack学习老师的课程,同时也结合了作者之前的编程经验进行讲解。作者作为网络安全的小白,分享一些自学基础教程给大家,希望你们喜欢。同时,这些大佬是真的值得我们去学习,献上小弟的膝盖~fighting!
- 只有更深入的了解PowerShell基础及用法,才能更好地检测恶意代码
文章目录
- 一.Powershell操作符
- 二.Powershell条件语句
- 三.Powershell循环语句
- 四.Powershell数组
- 五.Powershell函数
- 六.Powershell字符串及交互
- 七.Powershell注册表操作
- 八.总结
希望这些基础原理能更好地帮助大家做好防御和保护,基础性文章,希望对您有所帮助。作者作为网络安全的小白,分享一些自学基础教程给大家,主要是在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!
作者的github资源:
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 网络安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!
接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~
- 推荐前文:网络安全自学篇系列-100篇
前文分析:
- [系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向
- [系统安全] 二.如何学好逆向分析及吕布传游戏逆向案例
- [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战
- [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向
- [系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
- [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
- [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
- [系统安全] 八.Windows漏洞利用之CVE-2019-0708复现及蓝屏攻击
- [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度提权
- [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现
- [系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析
- [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
- [系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理
- [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析–病毒释放过程(下)
- [系统安全] 十五.Chrome浏览器保留密码功能渗透解析、蓝屏漏洞及某音乐软件漏洞复现
- [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
- [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
- [系统安全] 十八.病毒攻防机理及WinRAR恶意劫持漏洞(脚本病毒、自启动、定时关机、蓝屏攻击)
- [系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析
- [系统安全] 二十.PE数字签名之(上)什么是数字签名及Signtool签名工具详解
- [系统安全] 二十一.PE数字签名之(中)Signcode、PEView、010Editor、Asn1View工具用法
- [系统安全] 二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析
- [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
- [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
- [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
- [系统安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及病毒解析
- [系统安全] 二十七.WannaCry勒索病毒分析 (3)蠕虫传播机制解析及IDA和OD逆向
- [系统安全] 二十八.WannaCry勒索病毒分析 (4)全网"最"详细的蠕虫传播机制解读
- [系统安全] 二十九.深信服分享之外部威胁防护和勒索病毒对抗
- [系统安全] 三十.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门普及
- [系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
- [系统安全] 三十二.恶意代码检测(2)常用技术详解及总结
- [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术
- [系统安全] 三十四.恶意代码检测(4)编写代码自动提取IAT表、字符串及时间戳溯源地区
- [系统安全] 三十五.Procmon工具基本用法及文件进程、注册表查看
- [系统安全] 三十六.APT系列(1)APT攻击溯源防御与常见APT组织的攻击案例
- [系统安全] 三十七.APT系列(2)远控木马详解与防御及APT攻击中的远控
- [系统安全] 三十八.APT系列(3)恶意代码与APT攻击中的武器(强推Seak老师)
- [系统安全] 三十九.APT系列(4)APT攻防溯源普及和医疗数据安全防御总结
- [系统安全] 四十.APT系列(5)APT组织常用WinRAR漏洞复现(CVE-2018-20250)及恶意软件劫持
- [系统安全] 四十一.APT系列(6)Python解析PE文件并获取时间戳判断来源区域
- [系统安全] 四十二.APT系列(7)基于溯源图的APT攻击检测安全顶会论文总结
- [系统安全] 四十三.APT系列(8)Powershell和PowerSploit脚本渗透攻击手段详解
- [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理
- [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解
- [系统安全] 四十六.Powershell恶意代码检测系列 (1)Powershell基础入门及管道和变量的用法
- [系统安全] 四十七.Powershell恶意代码检测系列 (2)Powershell基础语法和注册表操作
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
一.Powershell操作符
常见的比较运算符包括:
- -eq 等于
- -ne 不等于
- -gt 大于
- -lt 小于
- -le 小于等于
- -contains 包含
- -notcontains 不包含
67 -eq 50
50 -eq 50
1gb -gt 1tb
(1,2,3) -contains 1
(1,2,3) -contains 2
(1,2,3) -contains 4
求反运算符:
- -not
$a=89 -gt 50
$a
-not $a
逻辑运算:
- -and 与运算
- -or 或运算
- -not 非运算
- -xor 异或运算
$true -and $true
$true -and $false
$true -or $false
$false -or $false
-not $true
$true -xor $true
比较数组和集合,从中筛选出不等于0的数字。
1,5,8,0,9 -ne 0
二.Powershell条件语句
1.if条件判断
if-elseif-else条件判断,执行操作用大括号表示。
$num=100
if($num -gt 90) "大于90" else "小于等于90"
if($num -gt 100) "大于100" else "小于等于100"
注意,if-else中间可以增加新的判断elseif,如下所示:
if($num -gt 100) "大于100" elseif ($num -eq 100) "等于100" else "小于100"
2.switch语句
Switch语句主要用于多种情况的判断,这里在本地创建一个test01.ps1文件,并执行该代码。
传统的if判断如下:
$num=56
if($num -gt 50 -and $num -lt 60)
"大于50并且小于60"
elseif ($num -eq 50)
"等于50"
else
"小于50"
去到桌面1019文件夹,输入“.\\test01.ps1”执行代码,再打印该文件的源代码。
switch语句如下:$_表示对变量取值。
$num=56
switch($num)
$_ -lt 50 "此数值小于50"
$_ -eq 50 "此数值等于50"
$_ -gt 50 "此数值大于50"
三.Powershell循环语句
1.foreach循环
这里定义数组采用“$arr=1…10”实现,表示1到10的数字,在调用foreach循环输出。
$arr=1..10
foreach ($n in $arr) $n*$n
定义文件“test03.ps1”,只输出偶数内容。
$arr=1..10
foreach ($n in $arr)
if (($n%2) -eq 0 )
$n
接着利用foreach操作文件目录,将C盘python34文件夹下的路径全部提取出来,赋值到file中输出。
foreach ($file in dir c:\\python34)
if($file.length -gt 1kb)
$file.name
$file.length
原始文件内容如下所示:
也可以定义变量来指定路径
$path_value = dir c:\\python34
foreach ($file in $path_value)
if($file.length -gt 1kb)
$file.name
$file.length
2.while循环
while循环需要注意循环的终止条件,防止出现死循环,而do_while循环是先执行一次循环体,再进行判断。
下面这段代码是经典运算:1+2+3+…+99,文件名为“test05.ps1”。
$i=1
$s=0
while($i -lt 100)
$s = $s + $i
$i = $i + 1
$s
$i
do_whlie先执行循环体,再进行条件判断,如下所示:
$num=15
do
$num
$num=$num-1
while($num -gt 10)
3.break和continue关键词
break跳出整个循环,停止执行;continue跳出当前循环一次,继续执行下一个判断。
break: 下面这个代码当数值小于6继续执行,当其等于4停止循环。
$i=1
while($i -lt 6)
if($i -eq 4)
break
else
$i
$i++
continue: 跳过了中间等于4的内容。
$i=1
while($i -lt 6)
if($i -eq 4)
$i++
continue
else
$i
$i++
4.for循环
利用for循环实现1+2+…+100的代码如下(test09.ps1)。
$sum=0
for($i=1;$i -le 100;$i++)
$sum=$sum+$i
$sum
学习Powershell基础语法之后,更重要的是解决实际问题,后续作者将继续深入学习。
5.switch循环
使用switch循环实现输出数组1到10,并进行奇数和偶数判断。
$num=1..10
switch($num)
default"number=$_"
$num=1..10
switch($num)
($_ % 2) -eq 0 "$_ 数值是偶数"
($_ % 2) -ne 0 "$_ 数值是奇数"
四.Powershell数组
1.数组定义
数组定义一种方法是逗号隔开不同的元素,另一种是通过两个点来定义数组。
$arr=1,2,3,4,5
$arr=1..5
判断是否是一个数组,使用如下语句。
$arr -is [array]
数组可以接受不同的数值。
$arr=1,3.14,"yangxiuzhang"
$arr
$arr -is [array]
空数组定义如下:
$arr=@()
$arr
$arr -is [array]
下面简单比较只有一个元素数组和变量的对比。
$arr=,"hello"
$arr
$arr -is [array]
$arr=1
$arr
$arr -is [array]
数组也可以是一个变量或命令,此时它仍然是一个数组。
$arr=ipconfig
$arr
$arr -is [array]
2.访问数组
首先定义一个多钟类型的数组。
$arr=1,"hello world",(get-date)
$arr
访问数组特定元素,第一个元素,获取两个元素,获取最后一个元素。
$arr[0]
$arr[0,1]
$arr[-1]
//提取部分元素
$arr[0..2]
获取数组元素大小调用count实现。
$num = $arr[0..2]
$num.count
如何将数组倒序输出呢?如下所示。
$arr[($arr.count)..0]
数组添加一个元素代码如下:
$arr=1,"hello world",(get-date)
$arr+="csdn"
$arr
$arr.count
更多数组操作,推荐读者结合实际应用进行学习。
五.Powershell函数
1.自定义函数及调用
函数通常包括函数名、参数、函数体,下面是定义及调用一个myping函数的代码(test11.ps1)。
function myping()
ping www.baidu.com
myping
同样,上面的代码可以修改为指定参数。
function myping($site)
ping $site
myping www.baidu.com
下面这个代码是接收两个参数并显示的功能。
function myinfo($name,$age)
$info="I am $name, and i am $age years old."
write-host $info
myinfo yxz,28
2.函数返回值
函数返回值通过return实现,可以返回多个值。下面是test13.ps1例子。
function add($num1,$num2)
$sum=$num1+$num2
return $sum
add 2 4
function fun($num1,$num2)
$sum=$num1+$num2
$sum.gettype()
$sum.gettype().fullname
return $sum
fun 2.2 4.3
//多个返回值
function other($num1,$num2,$num3)
$value=$num1,$num2,$num3
return $value
other 2.2 4 6
六.Powershell字符串及交互
1.定义文本及转义字符
表达式中可以定义只,如下所示。同时,单引号和双引号可以相互嵌套,这和JAVA、php、Python中的变量套接类似。
"hello world $(get-date)"
"hello world $(5*7)"
"hello, my name is 'yangxiuzhang'"
输出结果如下图所示:
在Powershell中,转义字符不再是斜杠(\\)而是(`),如下所示。
- `n 换行
- `r 回车符
- `t tab键
- `b 退格符
- `’ 单引号
"hello,`n my name is `'yangxiuzhang`'"
2.用户交互
read-host 读取用户的输入。
$input = read-host "请输入您的姓名"
"您好!您输入的姓名是:$input"
3.格式化字符串
传统的多个变量输出方法:
$name="yangxiuzhang"
$age=25
$body="strong"
$height=1.72
"My name is $name, i am $age years old, and my body is $body, my height is $height"
格式化字符串输出方法:
"My name is 0, i am 1 years old, and my body is 2, my height is 3" -f $name,$age,$body,$height
4.字符串操作
任何编程语言,都绕不过字符串操作,在网络安全领域,获取ip地址、URL拼接、图片或脚本文件获取等都涉及字符串操作,下面进行简单分享。
字符串分割
$str="c:\\windows\\system32\\demo.txt"
$str.split("\\")
//数组类型,可以通过数组下标访问
$str.split("\\").gettype()
获取图片名称
$str="https://blog.csdn.net/Eastmount/102781411/logo.png"
$str.split("/")[-1]
是否以某个字符结尾和是否包含某个字符。
$str.endswith("png"以上是关于[系统安全] 四十七.Powershell恶意代码检测系列 Powershell基础语法和注册表操作的主要内容,如果未能解决你的问题,请参考以下文章
[系统安全] 四十二.Powershell恶意代码检测系列 论文总结及抽象语法树(AST)提取
[系统安全] 四十二.Powershell恶意代码检测系列 论文总结及抽象语法树(AST)提取
[系统安全] 四十三.Powershell恶意代码检测系列 抽象语法树自动提取万字详解
[系统安全] 四十三.Powershell恶意代码检测系列 抽象语法树自动提取万字详解