2017比特币勒索病毒: WannaCry(想哭)

先来看一下中毒后的截图吧,似乎还挺有服务意识,考虑挺周到,但是当事人真的会WannaCry. 除了杀毒软件的网站,这会儿云端存储的网站也会是流量大增吧。只有当痛苦发生了,大家才会想起来云端同步的重要性。

本轮敲诈者蠕虫病毒传播主要包括 Onion、WNCRY 两大家族变种,本次感染事件首先在英国、俄罗斯等多个国家爆发,新闻报道有多家企业、医疗机构的系统中招,损失非常惨重。安全机构全球监测已经发现目前多达上百个国家遭遇本次敲诈者蠕虫攻击。从 5 月 12 日开始,国内的感染传播量也开始急剧增加,在多个高校和企业内部集中爆发并且愈演愈烈。

WNCRY 变种一般勒索价值 300~600 美金的比特币,而 onion 变种甚至要求用户支付 3 个比特币,以目前的比特币行情,折合人民币在 3 万左右。此类病毒一般使用 RSA 等非对称算法,没有私钥就无法解密文件。WNCRY 敲诈者病毒要求用户在 3 天内付款,否则解密费用翻倍,并且一周内未付款将删除密钥导致无法恢复。

病毒原理

病毒一旦被不知情的用户点击并激活后,可以通过用户所在的局域网自动传播,使用的是445 端口 (用于文件共享) 在内网进行蠕虫式感染传播。

本次感染急剧爆发的主要原因在于其传播过程中使用了前段时间泄漏的美国国家安全局 (NSA) 黑客工具包中的“永恒之蓝”漏洞 (微软 3 月份已经发布补丁,漏洞编号:MS17-010)。和历史上的“震荡波”、“冲击波”等大规模蠕虫感染类似,本次传播攻击利用的“永恒之蓝”漏洞可以通过 445 端口直接远程攻击目标主机,传播感染速度非常快。

如何预防 – 可防不可解

  • 关闭Windows的SMB/CIFS文件共享功能,关闭用户共享和 445 端口。
  • 谨慎打开不明邮件文档,禁用 office 宏,钓鱼邮件是勒索病毒传播的一个重要渠道。
  • 启动Windows系统自动更新服务或安装微软官方补丁NSA 泄漏漏洞的安全补丁:https://technet.microsoft.com/zh-cn/library/security/MS17-010
  • 尽快开通云端文件存储,并要有历史文件恢复功能。

不要付钱的方法 – 文件救回

如果你使用了Onedrive, Dropbox或者是Google Drive,您可以在线登陆Web云端,使用历史版本(History Version)或类似的功能,恢复到没有被感染前的文件。这也是晚上流传的不要付钱的回复办法。

如果是小企业,不想使用这些公开云,可以联系ITGeeker技术奇客,帮助你建立属于公司的私有云文件存储。

检测和杀掉勒索病毒-永恒之蓝

  1. 腾讯电脑管家免疫补丁:https://guanjia.qq.com/wannacry/
  2. 360官网页面:http://special.btime.com/37h7sasi85f95tpt54acpcir37b.shtml
  3. 360免疫工具下载地址:NSA武器库免疫工具: http://dl.360safe.com/nsa/nsatool.exe
  4. ESET Online Scanner
  5. Windows系统补丁下载地址
    Windows XP(32位系统)补丁:http://url.cn/499Z92O
    Windows7(32位系统)补丁:http://url.cn/499TgUP
    Windows7(64位系统)补丁:http://url.cn/499QOql
    Windows8(32位系统)补丁:http://url.cn/499UfBn
    Windows8(64位系统)补丁:http://url.cn/499XgR5
    Windows8.1(32位系统)补丁:http://url.cn/499XgSg
    Windows8.1(64位系统)补丁:http://url.cn/499XgSm
    Windows8 Vista(32位系统)补丁: http://url.cn/499TgW8
    Windows8 Vista(64位系统)补丁: http://url.cn/499RJx3
    其它操作系统请访问:http://url.cn/492HwRJ,选取相应补丁版本下载
    如果您不确认自己的操作系统,请使用电脑管家敲诈者病毒免疫工具离线版(链接http://url.cn/496kcwV)

应急脚本.bat

rem 关闭智能卡服务        
net stop SCardSvr        
net stop SCPolicySvc        
sc config SCardSvr start=disabled        
sc config SCPolicySvc start=disabled        
rem 开启服务        
net start MpsSvc        
rem 开机启动        
sc config MpsSvc start=auto        
rem 启用防火墙        
netsh advfirewall set allprofiles state on        
rem 屏蔽端口

netsh advfirewall firewall add rule name=”deny udp 137 ” dir=in protocol=udp localport=137 action=block

netsh advfirewall firewall add rule name=”deny tcp 137″ dir=in protocol=tcp localport=137 action=block        
netsh advfirewall firewall add rule name=”deny udp 138″ dir=in protocol=udp localport=138 action=block        
netsh advfirewall firewall add rule name=”deny tcp 138″ dir=in protocol=tcp localport=138 action=block        
netsh advfirewall firewall add rule name=”deny udp 139″ dir=in protocol=udp localport=139 action=block

netsh advfirewall firewall add rule name=”deny tcp 139″ dir=in protocol=tcp localport=139 action=block

netsh advfirewall firewall add rule name=”deny udp 445″ dir=in protocol=udp localport=445 action=block        
netsh advfirewall firewall add rule name=”deny tcp 445″ dir=in protocol=tcp localport=445 action=block        
pause

 

WordPress REST API 定制化输出

WordPress 自4.7 版本后与时俱进推出了REST API,如此一来想象空间又扩展了许多,如今WordPress 可以完全作为后端数据驱动了。本文通过几个例子展示如何定制化输出WordPress REST API 的相关数据。

文章数据(posts)禁止某些字段显示

默认的,当请求类似 your-site.com/wp-json/wp/v2/posts?per_page=5&page=1 的接口来获取文章列表,展示的不少字段对一般人来说是没有必要。

秉承“如无必要,勿增实体”的原则,减少请求时候的数据量,可以通过下面的代码移除:

function dw_rest_prepare_post( $data, $post, $request ) {
	$_data = $data->data;
	$params = $request->get_params();
	// if ( ! isset( $params['id'] ) ) {
		unset( $_data['excerpt'] );
		unset( $_data['author'] );
		unset( $_data['featured_media'] );
		unset( $_data['format'] );
		unset( $_data['ping_status'] );
		unset( $_data['comment_status'] );
		unset( $_data['sticky'] );
		unset( $_data['template'] );
	// }
	$data->data = $_data;
	return $data;
}
add_filter( 'rest_prepare_post', 'dw_rest_prepare_post', 10, 3 );

文章数据(posts)中输出 post meta 所有字段

可能考虑到数据隐私,文章数据(posts)默认并不显示post meta的相关字段,如果你需要输出对应文章下所有 post meta 字段,可以用下面的代码启用:

register_rest_field( 'post', 'metadata', array(
 	'get_callback' => function ( $data ) {
 		return get_post_meta( $data['id'], '', '' );
 }, ));

输出 post meta 特定字段

接上,如果你在REST API 中仅仅想输出 post meta 特定字段而非全部,则通过类似下面代码:

function dw_rest_prepare_post( $data, $post, $request ) {
	$_data = $data->data;
	$params = $request->get_params();
	$thumb =  get_post_meta( $post->ID, 'thumb' );
		if($thumb){
			$_data['thumb_image'] = $thumb;
		}	
	$data->data = $_data;
	return $data;
}
add_filter( 'rest_prepare_post', 'dw_rest_prepare_post', 10, 3 );

上面的代码展示的是如何输出thumb 这个 post meta 字段,请按需使用。

借助 Nginx 控制 /wp-json 的访问

这个倒与WordPress 本身无关了,your-site.com/wp-json 的路由默认是所有人皆可访问。如果你基于服务器负载,或安全等方面考虑选择性输出,可以借助 Nginx 控制访问。先看下面的例子:

location /wp-json {
      if ($http_user_agent !~ '(iPhone|Android)'){
        return 403;
       }
        try_files $uri $uri/ /index.php?$args;
}

如果你熟悉Nginx 语法,就知道上面的代码实现了:除了iOS 跟Android 设备(通过判断请求头的UA 信息),其它访问 /wp-json 的路径均返回403 状态码。这在一定程度上起到了保护作用。


原文链接:来自 DeveWork | https://devework.com/wordpress-rest-api-dynamic-output.html

via Jeff的阳台 https://devework.com/wordpress-rest-api-dynamic-output.html