前言:

  因为工作的原因,要写windows下的基线检查脚本。之前没接触过,在网上找了半天也没找到现成的,无奈只好自己研究,最后还是成功完成了工作。

在我编写之后发现windows下的基线基本就是检查注册表表项。但也有例外。windows组策略有些并不存在于注册表中,那么就要用到组策略命令行工具secedit

在powershell中获取secedit用法

举个例子:如果需要对审核策略进行检查,那我们的思路是先读取审核策略,然后判断是否符合策略,通过

secedit /export /cfg config.cfg /quiet

读取组策略到该目录下的config.cfg文件中,截取一部分config.cfg文件如下

那么我们只需知道这里面的参数名和对应的值所代表的含义就能够编写检查脚本,我在网上找了一下关于参数的含义,只找到一篇,不过也够用了

[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0 //密码最短留存期
MaximumPasswordAge = 42 //密码最长留存期
MinimumPasswordLength = 0 //密码长度最小值
PasswordComplexity = 0 //密码必须符合复杂性要求
PasswordHistorySize = 0 //强制密码历史 N个记住的密码
LockoutBadCount = 5 //账户锁定阈值
ResetLockoutCount = 30 //账户锁定时间
LockoutDuration = 30 //复位账户锁定计数器
RequireLogonToChangePassword = 0 *下次登录必须更改密码
ForceLogoffWhenHourExpire = 0 *强制过期
NewAdministratorName = "Administrator" *管理员账户名称
NewGuestName = "Guest" *来宾账户名称
ClearTextPassword = 0
LSAAnonymousNameLookup = 0
EnableAdminAccount = 1 //administrator是否禁用
EnableGuestAccount = 0 //guest是否禁用
[Event Audit]
AuditSystemEvents = 3 //审核系统事件 成功、失败
AuditLogonEvents = 3 //审核登录事件 成功、失败
AuditObjectAccess = 3 //审核对象访问 成功、失败
AuditPrivilegeUse = 2 //审核特权使用 失败
AuditPolicyChange = 3 //审核策略更改 成功、失败
AuditAccountManage = 3 //审核账户管理 成功、失败
AuditProcessTracking = 2 //审核过程追踪 失败
AuditDSAccess = 2 //审核目录服务访问 失败
AuditAccountLogon = 3 //审核账户登录事件 成功、失败 --------------------- 本文来自 yongping8204 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/yongping8204/article/details/7471627?utm_source=copy

那么现在就简单了,如果我们审核账户登录事件的标准策略为失败。那么只要AuditAccountLogon = 2就满足策略标准了

代码如下:

 $config = Get-Content -path config.cfg
for ($i=0; $i -lt $config.Length; $i++)
{
$config_line = $config[$i] -split "="
if(($config_line[0] -eq "AuditAccountLogon "))
{
$config_line[1] = $config_line[1].Trim(' ')
if($config_line[1] -eq "2")
{
$projectdata = @{"msg"="审核账户登录事件策略符合标准";}
$data['project']+=$projectdata
}
else
{
$projectdata = @{"msg"="审核账户登录事件策略不符合标准";}
$data['project']+=$projectdata
}
}
}

而不在secedit组策略中的基线要求可以读注册表,这里很简单,先百度一下该策略所在的注册表的位置,使用powershell读取注册表,判断是否符合标准即可。

举个例子:

#安全日志查看器大小设置
$Key = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security'
$name = "MaxSize"
$config = (Get-ItemProperty -Path "Registry::$Key" -ErrorAction Stop).$name
if($config -ge "8192")
{
$projectdata = @{"msg"="安全日志查看器大小设置策略符合标准";}
$data['project']+=$projectdata
}
else
{
$projectdata = @{"msg"="安全日志查看器大小设置策略不符合标准";}
$data['project']+=$projectdata
}

除了windows之外还有windows下中间件基线脚本的编写,思路比较清楚。

无非就是读取配置文件,通过正则匹配确认策略是否符合标准。

或是通过Test-Path判断是否存在敏感目录或文件:

if(Test-Path %systemroot%\system32\inetsrv\iisadmpwd){
$projectdata = @{"msg"="删除风险实例文件%systemroot%\system32\inetsrv\iisadmpwd策略不符合标准";}
$data['project']+=$projectdata
}

2019/11/26 update

把去年写的基线放在github上了

https://github.com/Echox1/windows_baseline

windows基线检测脚本编写指南-powershell版的更多相关文章

  1. Windows操作系统安全加固基线检测脚本

    一.背景信息 在我们的安全运维工作中经常需要进行安全基线配置和检查,所谓的安全基线配置就是系统的最基础的安全配置,安全基线检查涉及操作系统.中间件.数据库.甚至是交换机等网络基础设备的检查,面对如此繁 ...

  2. pyspider脚本编写指南

    注意,虽然在本文中会涉及调度策略等内容,但实际执行效果取决于具体策略实现. project 脚本分为不同的 project,不同的 project 之间的任务互相独立,建议为不同的站点建立不同的 pr ...

  3. 如何利用PowerShell完成的Windows服务器系统安全加固实践和基线检测

    0x00 前言简述 最近单位在做等保测评,由本人从事安全运维方面的工作(PS:曾经做过等保等方面的安全服务),所以自然而然的与信安的测评人员一起对接相关业务系统的检查,在做主机系统测评检查时发现了系统 ...

  4. 完整的WindowsServer服务器系统初始化配置、安全策略加固和基线检查脚本等保2.0适用

    转载自:https://www.bilibili.com/read/cv14326780?spm_id_from=333.999.0.0 0x00 前言简述 最近单位在做等保测评,由于本人从事安全运维 ...

  5. windows bat脚本编写

    windows批处理 (cmd/bat) 编程详解 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码 ...

  6. 编写 unix和 windows的 Scala 脚本

    编写 unix和 windows的 Scala 脚本 今天在看<Scala 编程>的时候看到附录了,里面提到了怎么在 unix 和 windows 下面编写 scala 脚本. 之前我也一 ...

  7. Ladon内网渗透扫描器PowerShell版

    程序简介 Ladon一款用于大型网络渗透的多线程插件化综合扫描神器,含端口扫描.服务识别.网络资产.密码爆破.高危漏洞检测以及一键GetShell,支持批量A段/B段/C段以及跨网段扫描,支持URL. ...

  8. CCleaner 垃圾文件清理规则 编写指南

    以下内容的英文版本来源于 CCleaner 官方论坛,仅供参考.欢迎大家编写并分享针对常用国产软件的垃圾文件清理规则!需要说明的是规则文件(Winapp2.ini)需和程序文件放于同一文件夹下,才能被 ...

  9. Web安全学习笔记之Nmap脚本编写

    0x00 Nmap脚本简介 夜无眠,看了一下Nmap官方的英文API文档(全是English),瞬间心态崩塌,不想吐槽它们的nmap官网前端太丑了=.=,但是都是大牛啊,挺敬佩开源开发者的. Nmap ...

随机推荐

  1. 洛谷 P1429 平面最近点对(加强版) (分治模板题)

    题意:有\(n\)个点对,找到它们之间的最短距离. 题解:我们先对所有点对以\(x\)的大小进行排序,然后分治,每次左右二等分递归下去,当\(l+1=r\)的时候,我们计算一下距离直接返回给上一层,若 ...

  2. CodeForces - 1250J The Parade 二分

    题目 题意: 一共n种身高,每一个士兵有一个身高.你需要把他们安排成k行(士兵不需要全部安排),每一行士兵身高差距小于等于1.你要找出来最多能安排多少士兵 题解: 这道题很容易就能看出来就是一道二分, ...

  3. 01.原生态jdbc程序中问题总结

    1.数据库启动包配置到工程目录中(mysql5.1) mysql-connector-java-5.1.7-bin.jar 2.jdbc原生态操作数据库(程序) 操作mysql数据库 1 packag ...

  4. Linunx系统引导过程及MBR/GRUB故障

    Linunx系统引导过程 系统初始化进程 init进程 Systemd Systemd单元类型 允许级别所对应的systemd目标 修复MBR扇区故障 解决思路 操作 修复GRUB引导故障 解决思路 ...

  5. K8S(13)监控实战-部署prometheus

    k8s监控实战-部署prometheus 目录 k8s监控实战-部署prometheus 1 prometheus前言相关 1.1 Prometheus的特点 1.2 基本原理 1.2.1 原理说明 ...

  6. codeforces 1045I Palindrome Pairs 【stl+构造】

    题目:戳这里 题意:给1e5个字符串,问有多少对字符串组合,满足最多只有一种字符有奇数个. 解题思路:每种情况用map存一下就行了.感觉这题自己的代码思路比较清晰,所以写个题解记录一下 附ac代码: ...

  7. codeforces 1036B - Diagonal Walking v.2【思维+构造】

    题目:戳这里 题意:起点(0,0),终点(n,m),走k步,可以走8个方向,问能不能走到,能走到的话最多能走多少个斜步. 解题思路:起点是固定的,我们主要分析终点.题目要求走最多的斜步,斜步很明显有一 ...

  8. Android 神奇的SpannableStringBuilder

    一 无图言屌 先看看神奇的效果 仅用一个TextView实现 二 SpannableStringBuilder Google官方介绍 This is the class for text whose ...

  9. 如何将多个 Apple 设备中保存在 iCloud 里面密码同步

    如何将多个 Apple 设备中保存在 iCloud 里面密码同步 iCloud 钥匙串 密码同步 数据迁移 iOS iCloud 钥匙串会记住一些信息,因此您就无需记忆这些信息. 它会在您批准的任何设 ...

  10. js function arguments types

    js function arguments types https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functi ...