Duke Yin
Duke Yin
2022年4月27日

当本地网络有公网IP之后,我们为了方便会将电脑暴露在公网,甚至开启Wake on Lan以供远程开机。

这时候防御外部入侵变得尤为重要,网上有很多很无聊的人时时刻刻在找漏洞,远程打开你的电脑,一旦本地防御被破解,有一些会给你安装恶意程序,有一些会盗取你存储在本地的密码进行勒索。如果没有通知机制,可能等你的电脑都被Rua得不成形了你才会发现,届时为时已晚。

本文将介绍一种方法,每当有人成功登录Windows,隐蔽地自动发送一条通知到手机。

虽然不能做到杜绝威胁,起码能在最不得已的时候提醒你采取必要的最后措施。

注册Pushover

Pushover是收费的,iOS和安卓客户端都是5美金,选其一在手机应用商店购买即可,无其他费用。

然后通过手机客户端或者其官网进行注册,登录之后就可以看见你的“User Key”,这个Key相当于你的身份ID,不可对外公开。

Pushover用User Key判断是哪一个用户在发送通知。

紧接着我们在这个页面底部创建一个Application,填写名称、描述,上传一个图标,就可以获得一个APP TOKEN。

我们所发送的通知一定会有不同种类,Application的概念就是为了分门别类,比如NAS的通知用一个Application,Windows的通知用一个Application,以此类推,你只需要创建新的Application,上传新的图标即可。这样收到通知的图标也会不一样。

APP TOKEN就是告诉Pushover是哪一个Application的通知,同样,它也是不对外公开的。

我在《使用Pushover推送群晖系统消息》一文中也有描述获取这两个密钥的步骤,可供参考。


Powershell脚本

因为windows7和windows10/11的Powershell版本不一样,支持的语法不一样,所以需要分别对待。如果你的系统是Windows7,需要通过在线更新到最新。

不支持Windows7以下的系统。

Windows7

$parameters = New-Object System.Collections.Specialized.NameValueCollection
$parameters.Add("token", "APP_TOKEN")
$parameters.Add("user", "USER_KEY")
$parameters.Add("message", "hello world")
$client = New-Object System.Net.WebClient
$client.UploadValues("https://api.pushover.net/1/messages.json", $parameters)

Windows10 / 11

$uri = "https://api.pushover.net/1/messages.json"
$parameters = @{
token = "APP_TOKEN"
user = "USER_KEY"
message = "hello world"
}
$parameters | Invoke-RestMethod -Uri $uri -Method Post

将脚本中的

APP_TOKEN 替换成你的APP TOKEN;

USER_KEY替换成你的User Key;

Message的值填写你要发送通知的内容,可以在其中加入所在电脑的名称以便分辨是哪一部电脑。

然后保存成 notify.ps1 。文件名可以随意,但后缀一定要是.ps1,将脚本暂时保存起来,下一步将会用到。

但是,Windows 为了安全,默认会禁止没有签名的Powershell脚本执行,如果现在你直接运行这个脚本,是不会有任何效果的,所以我们要关掉这个安全策略。

Windows 搜索 Powershell 以管理员运行,然后输入:

set-executionpolicy remotesigned

执行后会有一个询问确认,输入 Y 回车即可。

成功之后当你点击运行中这个脚本,手机就会收到通知。

自动执行

使用Windows Run 或者 搜索 gpedit.msc 打开“本地策略编辑器”:

有人登录Windows时发送Pushover通知
gpedit.msc
  1. 左侧定位到第二大项:用户配置(User Configration);
  2. 点击子项 “脚本(登录/注销)”
  3. 双击 “登录”
有人登录Windows时发送Pushover通知

在弹出的窗口上方选择第二个Tab,“PowerShell脚本”,然后点击右侧 “添加” ,粘贴在上一步准备好的.ps1脚本文件。

如果不成功,检查.ps1脚本文件是否放置在默认的位置,即: C:\Windows\System32\GroupPolicy\User\Scripts\Logon

同时建议将下面的运行顺序选项选择为“最后执行此脚本”,以免执行阻塞造成通知发送失败。

最后点击确定 OK 即可。

这样一来,不论是有人在你电脑上手动登录,或者远程访问登录,你都会收到一个推送通知,告知你有人登录。

有人登录Windows时发送Pushover通知

后续

除了防范Windows密码泄露或遭破解,这个功能也能防范人为的登录,当发现非主动的登录行为后,我们可以在远程使用向日葵或Windows Remote Control对自己的电脑进行远程控制,或者联系附近的人切断电源及时止损。

@生活

本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可.