Quantcast
Channel: GFW BLOG(功夫网与翻墙)
Viewing all 1645 articles
Browse latest View live

聊聊墙的未来

$
0
0
不管是在网络或者现实生活中,我亲身看到听到越来越多的国人觉得墙的存在是必要的,理由不外乎是如下三点:一是国家发展时期的维稳需求;二是给中国企业足够的发展空间和机会;三是墙内的网络资源已经能满足国内居民的生活需求,外网是不需要的。其中第三条严格来说不是理由,而是被墙多年的结果,再被他们用于说服自己和别人。

最近兔主席在《病人香港——从黑衣人破坏MTR说到斯德哥尔摩综合征》里分析说普通香港市民目前患上了斯德哥尔摩综合征,我倒是觉得有心人也可以好好分析一下为墙说话的人所患的、更严重的斯德哥尔摩综合征。
但我写这篇文章的目的不是批判,毕竟我们都没有预知未来的能力,也没有代替墙内居民判断他们生活是好是坏的权力。我想要讨论的是墙的未来以及其可能造成的影响。以下是个人一些不算太成熟的观点,放到这里来和大家讨论。希望可以通过此文与各位一起学习进步。
我觉得墙的未来有三种可能。
一是在中国共产党执政的整个时期,墙都会存在。
在这种情况下,就算人口红利继续为中国的实体经济发展作出贡献,但整体国民经济也不会有太大的上升空间,毕竟人口基数在那里,出生率又在减少,而死亡率增加。如果悲观估计一大部分人的工作会被机器和AI取代的话,物质需求还有可能因为工作和收入的流失而减少。相比之下,国民的精神文化需求几乎可以看作有无限的上升空间。可是在墙内的创作者,为了满足日新月异的审查监管制度,会丧失培养创造力的机会,不能够持续创造出有新意的精神文化产品。而同时,墙外的精神文化产品所蕴含的价值观和表现方式,不论是社会科学研究成果、文学著作,还是影视作品、媒体资讯,正在不断试错并愈发进步创新,一有机会就能够越来越轻而易举地吸引看够了墙内统一声音的大众,而这些成倍增长的内容,将越来越与既定的社会主义基本价值观背道而驰,变得越来越“不适合”广大国民接受,是有可能造成社会不稳定的,是“必须”被墙阻挡的。在对外贸易方面,墙的存在也给了国际竞争中的对手足够多的理由抨击中国政府对人权的侵犯,在贸易战中吃亏,还不能取得良好的国际声誉,这些问题在全球化趋势下都是政府必须重视的。既然中国起步晚,国门打开得迟,就不得不遵守既定的游戏规则,而不是一来就想大刀阔斧地制定新规则,或者固步自封,完全不做改变,一副暴发户的模样四处用钱撑腰,仅依靠目前庞大的消费者市场做谈判筹码,这不仅换不来真正意义上的国际尊重和自身创造力的提升,也是不能够应运社会和人类发展规律的。
第二个可能是,待时机成熟,政府主动将墙推倒。
拥有全球四分之一的网民人口,墙内的网络生活跟墙外相比就是一个平行世界。随着出国旅游及海外留学经商人数的增多,已经有一定比例的中国居民对墙有了重新的认识,对政府来说,这有好有坏,经常这部分人(特别是在国外待过一段时间的留学生)就走了两个极端。不是变得完全反党觉得中国无望想方设法移民逃离,就是变得无条件爱国并理解共产党的忍辱负重,坚信西方媒体一直欺负祖国母亲,属于唯恐天下不乱之流。这两个极端也出现在身居国内有条件网络翻墙的人群中。这其实是很有意思的现象,说明已经有一部分国民都能够理解墙的存在,并且赞同政府的做法。如果政府选择将墙推倒,这批理解政府的人会起到推波助澜的作用。对于已经成见颇深的那部分人,推倒墙更是一个唯一能够有可能改变他们想法的机会。在国际关系中,推倒墙带来的挑战是特别巨大的,会有很多历史遗留问题需要政府去面对,但也给政府很多机会以更透明的身份被世界及其国民所认识。同时,政府会有机会培育出更广泛更牢固的群众基础,主动配合国家去占领国际舆论阵地(关于这一点,这篇文章讲的更详细一些)从品牌营销的角度来说,这是一个建立国际形象的问题,需要宣传部和外交部整合资源,广纳贤才,建立一个世界一流的创意公关公司协助国家度过难关。这个可能性下的未来,对中国及世界的发展都会产生良性的推动力,有机会能让两种价值体系和政治制度慢慢磨合。虽然这个未来需要等待合适的时机,但它也受时效性的控制,如果一直等下去,可能会有更多人走向跟政府对立的那一面,促成以下要提到的第三个可能的未来。
我觉得墙的第三个未来是,在强大的墙外势力支持下,国民站起来去推倒墙。
这将不会是特别和平的一个结局。虽然从感性上来说,谁都不愿意看到这个未来,它发生的可能性也极小,但不代表没有可能。这里所说的墙外势力可以是西方国家的社会组织或者西方国家政府居心叵测的政治谋划,也可以是有条件翻墙的国民所建立的组织。为什么一定要依靠墙外势力?集权威慑下人民内心的恐惧限制了发起抗争的能动性,而墙的存在就是为了把国民任何抗争的可能性杀死在襁褓之中以求大范围的相对稳定,所以我不看好自发的民粹主义在墙内的发展。但同时,墙的存在导致大部分国民形成了习惯性的二元对立思维,而这部分占人口很大比例的群体也是特别容易被煽动的,特别是在国家经济发展遇到瓶颈,个人生活也不如意的时候。这是最初维稳的原因,也是这个手段最坏的副作用。
我最希望墙能够实现第二个可能,但我特别怕的是,为了不实现第三种可能,政府会极力促成第一种可能。毕竟在有生之年,我最想看到的是中华文化在和平年代,在科技高速发展的新时代,能够吸取世界多元文化的精髓而发扬广大,再次受世界瞩目,并为后世流传。我相信这并不是少数人的梦想,也希望最后这不只是我们这代人的一个梦而已。

《數字極權時代生存手記》1.不记名號碼的選擇

$
0
0
1 為什麼使用不記名號碼
網絡服務或是在註冊時強制要求提供手機號碼(比如包括 Telegram 和 Signal 在內的大部分即時通訊應用),或是支持添加手機號碼用於安全驗證(比如 Gmail 和 Twitter)。使用個人真實號碼註冊或綁定帳號存在很大的風險,他人可循此追蹤用戶本人;使用不記名的預付費電話卡/太空卡或虛擬號碼並不能完全實現匿名,但可以提高追蹤的難度和成本。
中國大陸用戶應避免使用自己的個人手機號碼註冊 Telegram 等牆外服務。由於中國實施手機實名制,每個號碼都有與之對應個人身份信息,國安、公安可以借助中國大陸的實名制手機號碼實現對牆外 ID 的「實名制」,甚至通過攔截一次性驗證碼 (one-time password, OTP) 短訊侵入帳號。此外,2017 年以來中國政府部門在微信等牆內平台對「區塊鏈」話題實施管制,「幣圈人士」大量湧入 Telegram,此類人士使用 +86 開頭的中國大陸手機號碼註冊的賬號普遍存在發送 spam 信息等濫用行為,使 Telegram 官方不得不限制 +86 號碼新註冊的 Telegram 賬號主動發起聊天。

2 不記名號碼的類型
不記名號碼分為不記名實體電話卡號碼和虛擬號碼,按用途可分為一次性號碼和可長期保留的號碼,按持有方式可分為自持和代持。
2.1 不記名實體電話卡
2.1.1 香港太空卡
在深水埗鴨寮街和全港 7-11 和 OK 便利店可買到香港本地電訊商/運營商的太空卡。記得使用現金支付,刷卡或電子支付可被追溯。香港電訊商的可靠性請自行判斷。
2.1.2 美國:KnowRoaming
KnowRoaming的 Travel SIM Card 提供一個美國手機號碼,支持在 200 個以上國家和地區漫遊。該卡每次充值的最小金額是 25 美元,餘額自最近一次充值起有 9 个月的有效期,到期餘額清零;此外還提供每月 3-12.5 美元的其他國家號碼。儘管 KnowRoaming 提供的國際漫遊服務反響不佳,但如果只是將號碼用作網站註冊接收 OTP,KnowRoaming 還是不錯的選擇。
2.1.3 美國:Lycamobile
Lycamobile 是一家跨國移動虛擬運營商(MVNO)。Lycamobile 的預付費 SIM 卡已取消現用現付 (Pay As You Go) ,性價比不高。号码需要每 90 天使用一次或充值一次,否则号码会被回收。配送中國需要轉運。
2.1.4 美國:Google Fi
Google Fi(原稱 Project Fi)是 Google 旗下的移動虛擬運營商,通過 T-Mobile 和 Sprint 的 Wi-Fi 和蜂窩移動網絡向美國以及超過120個國家的漫遊用戶提供語音及數據服務,已擴展至支持所有較新的 Android 手機和 iPhone。
Google Fi 的套餐分為無限套餐 (Unlimited) 和彈性套餐 (Flexible),無限套餐的月費為 70 美元另加 10%-20% 的稅費和附加費,提供無限制的通話、短信和流量;彈性套餐的月費為 20 美元另加 10%-20% 稅費和其他費用,流量費用每 GB 10 美元,超過 6 GB 後免費;另提供 1-6 人的多人團購優惠。
Google Fi 更適合頻繁出國的商旅人士,如果只是用於接受短信或者電話卡翻牆,選擇 Google Fi 的性價比不高。 Google Fi 的電話卡寄送美國以外地區需要轉運。
2.1.5 英國:Three
英國電訊商 Three 提供 Pay As You Go 的 SIM 卡。SIM 卡本身免費且無期限,只要求用戶每 6 個月通話、發送短訊或使用流量來保持號碼活躍,使用時可搭配有效期 30 日(最長 90 日)的流量套餐。
2.1.6 其他境外實體電話卡
出境時在機場或者便利店購買的預付費 local SIM 卡號碼通常都有使用期限,如用於註冊網站只能一次性使用。此類卡也可從電商平台購買,但線上交易會破壞匿名性,不如線下現金交易可靠。
2.2 Google Voice
Google Voice 是由 Google 推出的 VoIP 服務,在美國和加拿大提供的免費語音通話和短信服務。Google Voice 的最大優勢在於允許用戶以零成本長期保留號碼。
2.2.1 Google Voice 號碼的獲取
改版後的 Google Voice 已經取消了在線直接申請虛擬號碼的做法,要求用戶在申請前必須綁定並驗證一個真實的美國手機號碼,你可以使用上文提到的美國實體電話卡號碼。
除官方渠道外,你可以從電商平台或 Telegram 賣家(比如 Google Voice 靚號,可靠性請自行判斷)那裡付費購買一個 Google Voice 號碼。進行在線交易可能導致號碼被溯源追蹤,相關風險請自行判斷。從淘寶賣家處購買 Google Voice 號碼風險較大,不作推薦。 部分 Google Voice 號碼賣家允許你修改密碼和驗證郵箱後直接使用;部分賣家需要回收其 Gmail 賬號,會要求你將 Google Voice 號碼移轉到自己的賬戶上。
2.2.2 Google Voice 的使用
你需要擁有 Google 賬號(Gmail 賬號)才能登錄 Google Voice 服務。建議在手機 Gmail 客戶端應用註冊新賬號以提高成功率,註冊完成後建議立即添加「驗證郵箱」以確保變更代理 IP 後還能正常登錄。 除網頁版 Google Voice 和谷歌環聊(Hangouts)移動應用外, 你可以使用 Gmail 接收來自 Google Voice 的短信消息。
2.2.3 長期保留 Google Voice 號碼
Google 會回收超過半年未使用的 Google Voice 號碼。為保持號碼活躍,你可以使用 IFTTT 腳本 Keep Google Voice Active每月自動撥打你的號碼。參見:長久保留申請的 Google Voice 號碼除 IFTTT 的腳本外,你還可以將自己的 Google Voice 號碼與其他網絡服務相綁定,定期接受商家的通知短信,避免號碼被回收;或者定期撥打電話或發短信。參見:印象筆記|科技 NEWS|活躍 Google Voice,防止被回收的方法:定期撥打電話或發短信出去

2.3 其他虛擬號碼
TextNow等虛擬號碼服務只提供臨時號碼。 Telegram 每次登錄賬戶都需要接收短信驗證碼,如果你使用臨時性虛擬號碼或者出境時購買的臨時電話卡號碼註冊 Telegram,當號碼過期被回收或者臨時電話卡到期後你若中途登出 Telegram 賬戶,再次登錄時就會因收不到短信驗證碼而無法登錄。
iYouPort 推薦了 4 款適用於 Android 和 iOS 的虛擬號碼應用:Hushed (Android | iOS)、Burner (Android | iOS)、CoverMe (Android | iOS) 和 TextMe Up (Android | iOS)。這類虛擬號碼應用程序的好處是不限制號碼數量,你可以將多個號碼用於不同的活動。虛擬號碼可供一次性使用,如果需要長期保留號碼可以付費訂閱。相類似的應用程序或服務還有:VoxoxPingerFreeTone等。
2.4 代持號碼
Telegram 頻道 抗爭者網絡安全DIY / HK Protestor Privacy & Health提供了一種他人代持式使用的不記名電話卡號碼獲取渠道:在 Telegram 上聯絡賣家,通過 FPS/轉數快或者 ATM 現金入帳支付 HK$200 購卡費,之後由賣家代持一張烏克蘭 Vodafone 的 SIM 卡並轉發註冊網站所需的 OTP 短訊。可靠性請自行判斷。

数字隐私和流量分析那些事儿

$
0
0
流量分析能为网站提供关键运营数据,大型成熟的网站都有不同类型的流量分析。互联网行业常用Analytics来描述流量分析,实现方式有多种:浏览器端、网页端、网络环节、服务器端。本文只是简单扫盲,欢迎各位行家拍砖。
浏览器端
比如你的浏览器安装了某种流量分析插件,那么这个插件可能将你的所有浏览数据传到分析公司的数据库,常见的如 SimilarWeb. 如果你的浏览器装有流量分析插件,那么无论你是通过代理、VPN、Tor访问网络,你的真实IP地址、操作系统、浏览器指纹等信息都会被分析公司搜集。很明显浏览器端的流量分析危险等级最高,这也是为什么某些极权政府热衷于推广国产浏览器的原因。详见这里。
Cookies
网页端的流量分析通常是通过cookies和网页插件来实现的。Cookies是很多网站必不可少的元素,但凡要你登录操作的网站都需要cookies,它是网站分发给你的一个临时记号。
打个比方,你晚上去兰桂坊这样的夜店街玩,每进一个场子,夜店保安就会在你手臂上盖一个他们特有的图案,这样你出去吃完烧烤或打个电话回来,门口保安检查你有这个章就可以直接让你进去,而不是让你重新买票。Cookies就是网站给你的浏览器盖的章,但网站不会像夜店那样给每个客人盖同样的章,而是会给每人一个唯一的临时号码,这样网站不但知道你什么时候来的,还知道你是你而不是同时登录网站的张三或李四。人类保安能根据外表和声音来区别你跟张三李四不是同一个人,而你的长相声音具有唯一性。
Cookies有什么危险呢?想象一下你在夜店街从9点玩到6点,回家刚好撞见你老爸出门晨练,你刚打算拿出事先练得滚挂烂熟的瞎话说自己昨晚同学聚会喝醉了住远近闻名的老实人刘帅家,结果你老爸二话不说一把拉起你的袖子,露出手臂上十多家不同夜店的章…… 所以,为了防止发生这种隐私泄露的尴尬,你得用一个关闭窗口就自动删除所有cookies的浏览器,你爸拉起你袖子的时候只能看到白白的手臂。
夜店章时间久了会自动消失,cookies同样会有长短不同的有效期,某些cookies能保存很长时间这样你每次打开这个网站都不需要再输入一次帐号密码,方便,但问题是隐私。而某些网站则给cookies设置了一个寿命,过期就不认了,就像夜店章一样,否则你买一次票就能天天免费去玩,夜店老板不亏死了?
Http Cookies也分不同总类,详见维基百科.
网页插件
有很多网站不需要使用Cookies,比如你现在正在看的这种根本不需要登录的静态页面。但网站是怎样知道自己的客流量多大,包括详细到具体内容的流量呢?通常有网页插件和服务器端两种方法。
网页插件可以是javascript或者图片。网站使用网页插件来分析流量的原因无外乎以下两点:
1. 方便 网页插件好用啊,比如Google Analytics能直接提供各种分析数据、图表,部署也比自己在服务器端安装分析软件方便多少倍。
2. 权威 你自己服务器上的流量分析只有你自己知道,遇到那种吹牛逼的人怎么办?明明浏览量只有1000它说是一百万,而第三方插件则可以在必要时,比如面对投资人或广告投放商直接展示出你的Google Analytics。
3. 不是自己的服务器 现在很多网站都可以不用自己的服务器就能搭建,比如你现在正在看这个就是托管在Github Pages上的。这种情况Github知道我的流量,但我自己不知道,所以我只能装网页插件来分析流量了。
网页插件很容易识别,你只需要在网页上点击鼠标右键,查看网页代码,就能看到插件了。好吧你不会读代码,当我没说。不过市面上有很多浏览器插件专门检测或屏蔽网页插件,常见的广告屏蔽器(Ad Blocker)或脚本屏蔽器 no script, 或者跟踪插件屏蔽器 uBlock Origin,都可以告诉你哪些插件有问题,或者直接帮你屏蔽掉它们。这样,你对于流量分析来说就是隐形的了。Cheers~
Note: 用户跟踪流量分析的网页插件的使用是一个极为普遍的现象,请在顶部导航栏查看本站所作的 简要统计
服务器端
你打开一个网站的过程大致如下:
1. 你的浏览器要先问DNS服务器你输入这个网址的服务器在哪里,DNS服务器告诉你的浏览器一个IP地址。
2. 然后你的浏览器就向那个IP地址的服务器发出请求,那个服务器在收到你的请求之后把网页文件传送给你的浏览器。
3. 你的浏览器把接收到的网页文件 渲染 成你看到的漂亮网页。
好吧,上述过程有点长,不过你反复读两遍就会发现这个过程有两个“服务器”知道你访问过这个网站的事儿。假如你访问的是pornhub,那么DNS服务器知道你曾经问过pornhub的网址在哪里,虽然你只是问了它pornhub怎么走,不代表你一定就去了pornhub,但,呵呵,come on,大家都知道问pornhub怎么走的人里头有99.99%都去了。第二个知道你访问过pornhub的当然就是pornhub自己啦,你向它要了网页呢,那还能赖掉?
不过,你对pornhub很信任,因为你知道pornhub绝对不会出卖你,否则这事儿传出去以后谁还敢去它那儿?DNS服务器就没办法了。
你是不是在想“我这次知道pornhub怎么走了,下次再去的时候就不用问DNS服务器了,这样DNS服务器就不知道我看过多少”。这个理论上是可以的,不过因为各种原因并不现实。像pornhub这种人民群众喜闻乐见的网站,至少有成千上万台服务器,名副其实的连锁店。你访问pornhub更像是在一个大城市里找中石化的加油站,你上次加油的地方现在可能排着长长的队,所以你每次加油前都得先查查哪个加油站不用排队。用夜店比喻的话,就是pornhub每次都会让接待你的服务生带你去一个空的卡座。所以一般来说,你还得每次都问DNS服务器pornhub怎么走。
服务器端的流量分析是无法避免的,服务器知道你在这里干的一切,如果你每次都换IP且不登录的话还好,服务器认不出你是同一个人,但如果你登录帐号的话……
网络环节
互联网是一张网,前面描述的打开过程只是在应用层面,看上去只有DNS服务器和网站服务器(Pornhub)知道这事儿。实际上在更底层的网络,你发送的和接收到的每一个数据包都是经过很多服务器层层接力转发,就像你在淘宝剁手之后包裹是由网店老板交给快递收件员,途经收件站,经货车转运到机场或火车站,经铁路或航空送到你的城市总站,再经两三次转发送到快递门店,再由快递小哥送到你(或者小区门卫大爷)的手上。这中间很多人都可能打开你的包裹偷看一下你买了个啥好东西,这中间的每个环节都可能记录下你买了多少东西,比如快递门店一查这个月给你发了多少条短信就能统计你这个流量了。互联网上的数据包传输在本质上跟上述实物包裹是一样的,只不过各种中转站是由各种昂贵的路由器、网关等设备构成,整个过程时间短一点而已(好吧,短几个数量级)。
所以,网络中除了DNS服务器能做流量分析外,还有很多环节可能做流量分析。顺便说一句,看到这里,你大概明白防火长城是怎么封锁你的吧?一种方法是像机场安检,一扫你的包裹里有把枪或者一个炸弹,直接就拦下来了。第二种方法,看到你的发件地址是不允许的地方(比如收件人:台湾总统府)直接拦下,第三种也是最廉价的方法就是当你问DNS服务器pronhub怎么走的时候直接告诉你一个错误的地址(DNS污染)。
好啦,回到正题,除了DNS方的分析,你的ISP服务商(就是每个月收你网费的公司,或者给你网用的组织)通常会分析你访问了哪些网站,因为你所有的流量都会经过它控制的服务器。用前面送快递来比喻,你的ISP服务商就是专门负责你那个片区的快递门店,你的公司或机构网络则相当于负责收发件的门卫大爷。
总结
前面这些分析无外乎是想告诉大家,不是只有你登录或访问的网站能够分析你在互联网上的活动,而且你的活动是否被记录和分析绝不仅能通过看一个网站的源代码发现。整个网络里有无数个环节可以用来分析和跟踪你,服务器有你的所有信息,网路中间设施有很多环节可以监听、审查你的信息流。当你凝视深渊的时候,深渊也在凝视你。保护隐私要从自己的电脑这边源头做起,而不是仅仅去指望或指责别人。

微信远程攻击面简单的研究与分析

$
0
0

微信远程攻击面简单的研究与分析

https://mp.weixin.qq.com/s/yMQN3MciI-0f3mzz_saiwQ

在完成了对 FaceTime 的一系列漏洞挖掘与研究后,我们决定对微信的音视频通信做一些分析。经分析后发现,当微信语音通话连接建立成功之后,微信客户端将解析远端发来的网络报文并还原成多媒体流。在还原解析的过程中,如果处理远端数据的代码存在问题时就会形成一个远程的攻击面。
在针对这个攻击面进行深入挖掘后我们发现了若干可以造成远程内存破坏的漏洞。本篇文章我们将选择一个比较有趣且复杂的漏洞进行深入的分析。该漏洞可以造成远程写溢出从而导致崩溃,其root cause隐藏的非常深,触发流程也比较复杂。研究与分析该漏洞无论是对安全研究还是软件开发的角度都有一定的价值。我们将在文章中详细的分析漏洞成因和触发流程。微信已经在最新版7.0.12中修复了该漏洞。

开胃小菜

首先我们先介绍两个比较简单的漏洞,一个属于本地代码执行,一个属于远程溢出。

本地代码执行

Mac版本的微信客户端处理粘贴操作时,没有有效检查粘贴板对象中内容,导致不安全的对象反序列化。当本地其他恶意应用设置粘贴板时,用户在微信客户端粘贴操作时,会导致任意对象的创建。
如下面截图所示,Mac 版本的微信在反序列化粘贴板对象的过程中,并没有使用secure coding 以及白名单等设置,导致任何可以响应 [initwithcoder:] 函数的 objective-c 对象都能被创建并使用,会引起很大的攻击面。

Mac版本微信对剪切板的处理

具体攻击结果可以参考[Google Project Zero在iMessage中发现的大量不安全反序列化攻击] (https://www.blackhat.com/us-19/briefings/schedule/#look-no-hands—-the-remote-interaction-less-attack-surface-of-the-iphone-15203).
Mac版本微信已经对该漏洞进行了完全正确的修复,调用了 setRequiresSecureCoding: 函数,并作出了安全设置。
修复后的剪切板处理

远程下溢出


微信视频通话接通后,通话两端建立网络直连传递RTP报文。微信客户端传输RTP包过程中,采用了一套加密机制。但是微信客户端在RTP解密之前,没有很好验证RTP包长度。当攻击者发送很短的RTP包的时候,会引起接受端处理RTP包过程中长度计算的整数下溢出,进而导致内存越界访问。
RTP包长度验证减法下溢出
有趣的是,GP0 研究员在微信 CAudioJBM::InputAudioFrameToJBM 函数中发现了类似的错误 (https://bugs.chromium.org/p/project-zero/issues/detail?id=1948)。这说明微信在在包长度验证时存在一定共性缺陷。
这是一个非常明显的下溢出,但是通过对这个问题的分析,我们认为远程的攻击面中可能存在风险更高的漏洞。

远程写溢出成因与分析

跳过前期复杂的协商互联流程,我们在已经通过微信语音通话的状态下,微信客户端将收到远端发送来的音频数据。收到的原始数据会被层层分解处理,并根据不同的类型分发到不同的处理函数上。

RecvRtpPacketCng

在收到远端的网络数据后,RTP 数据包将被 RecvRtpPacketCng(__int64 XVEChannel, unsigned int *pData, __int16 len, void *a4) 函数处理,这里的参数 pData内容是语音通话的远端完全可控的。该函数会根据网络包中指定的过不同的代码解析
当pkType类型为7或8时,该网络包的类型为 RTPwithRsMd


当网络包头部的 subpkt 解析完成后会调用 ParaseRemoteLostRateParam 函数:


ParaseRemoteLostRateParam 函数中,根据远端的 pData 中数据设置了XVEChannel+72 处对象的内部数据。通过参数 a2,在 pData 中读取两个字节,并最终设置到 m_RemoteLrParam 和 nFrmCnt 两个成员变量中。


DevPutProcessRsMdCng

在接收远端的语音数据的同时,也需要将自己的语音数据通过`XVEChannel`对象发送给远端。

在 readRemoteLrParam 函数中,会将刚刚设置的 m_RemoteLrParam 和 nFrmCnt 读取到栈上变量v92中。


在读取`RemoteLostRateParam`到局部变量v92后,需要设置到相应的本地成员变量中


当数据准备好后将调用函数 CAudioRS::RsMdEncProcessCng,写溢出就发生在这个函数中。

当 CAudioRS::RsMdEncProcessCng 刚开始执行时会通过 XVEChannel_72+9 作为 index 写一个 byte.


并在 RsMdEncQueueSourcePktCng 函数中 XVEChannel_72 + 9 将做一次自增。

当 CAudioRS::RsMdEncProcessCng 退出前会根据当前的状态更新成员变量。

[1] 通过`update_data`根据`LocalExpectRSPara`的值修改成员变量

[2] 如果XVEChannel_72+9处的值与XVEChannel_72+4处的值相同,则会发[3]处的代码将XVEChannel_72+9处写0.
因为 XVEChannel_72 + 9 可以根据 pData 中的数据设置成攻击者可控的数据,当 XVEChannel_72 + 9 被设置为大于 XVEChannel_72 + 4 时,就必须一直自增且产生整数溢出后重新与 XVEChannel_72 + 4 相等时, 才能将 XVEChannel_72 + 9清零。
所以 XVEChannel_72 + 9 的取值范围是0-255。又因为` *(_BYTE *)(XVEChannel_72 + *(char *)(XVEChannel_72 + 9) + 1668) = a7;` 使用的是有符号数作为`index`。最终覆盖范围是 `XVEChannel_72+1668`处的`-128`到`127`处超过原本数据结构包含的内存。

触发流程

  • RecvRtpPacketCng 从网络报文中获取 lrParam
  • DevPutProcessRsMdCng 根据`lrParam 设置 LocalExpectRSPara
  • RsMdEncProcessCng 根据 LocalExpectRSPara 中的参数修改成员变量作为数据修改的index (XVEChannel_72 + 9 )
  • 修改成功后会对index自增并与本地的max值做比较,如果index达到最大值index_max时(`XVEChannel_72 + 4`)将index清零
    • 如果通过远数据端将index设置为大于index_max的情况,则index会一直自增直到发生整数溢出后才能满足index==index_max的条件进入清零的逻辑
    • index在(-128,127)范围内遍历,产生越界写。越界写的范围在 (-128,127)之间。

感谢

要特别感谢 TSRC 的认真负责。他们在我们上报漏洞后对漏洞响应及时,收到报告的次日就确认了漏洞并给出危险评级。并且在后续的漏洞修复与修复版本更新的工作中和我们保持联系。

TimeLine

2019/11/28 发现漏洞
2019/12/02 完成漏洞分析并上报TSRC
2019/12/03 TSRC确认漏洞并修复
2020/03/23 文章发布
Credit:漏洞由盘古实验室黄涛、王铁磊发现和分析。

《數字極權時代生存手記》2.個人信息保護的一般性建議

$
0
0
1 系統安全
不用中國產操作系統
桌面級操作系統比移動操作系統安全
桌面級操作系統中,安全性 Linux > macOS > Windows
對技術小白而言,用 iOS 比 Android 安全
盡可能用新款設備,及時更新最新版系統
建議使用中國產 Android 手機的用戶通過刷機使用原生 Android 操作系統或者 LineageOS 等類原生的第三方 ROM。中國廠商定制的安卓 ROM 存在監控用戶的安全隱患,此外還有越權收集用戶信息、推送安全補丁不及時、閹割原生系統功能、推送垃圾廣告和信息等諸多缺點。
Android 的優點是系統開放,有能力的用戶可以全面地掌控各應用程序的權限和活動,但學習成本較高;缺點是系統碎片化,非原生系統的手機無法及時接收系統安全更新,使用戶面臨長期暴露在系統漏洞下的風險。iOS 的優點在於沙盒運行機制及嚴格的 App Store 審核規則,遏制了惡意應用程序和流氓軟件的滋生;但其封閉的系統特性和不明確的隱私權限設置使得用戶無法完全知曉應用程序在後台對個人信息的調用活動(iOS 13 已作一定改善)。對於小白級用戶而言,只要及時更新系統,iOS 至少可以在簡捷易用的前提下保證相對的安全。
2 病毒防護
2.1 一般性建議
iOS 設備:不建議從第三方應用市場(例如 PP助手、愛思助手等)下載破解版應用。如果不具備相應的技術能力,不要盲目「越獄」。
Windows PC:微軟提供的 Windows Defender 軟件基本可以滿足日常的安全保護需要,你也可以選擇 Avira(俗稱「小紅傘」)、Norton Security等國外殺毒軟件或者 火絨安全軟件等口碑較好的中國產安全防護軟件。360 安全衛士、騰訊電腦管家和百度衛士是中國產毒瘤軟件的代表,以竊取用戶信息、捆綁安裝全家桶(如 360 安全瀏覽器、360 手機管家等)、佔據大量內存加重卡頓見長,建議盡早將其刪除。
2.2 預防釣魚
不要點開任何通過電子郵件、SMS 短信、即時通訊軟件、SNS 私信等渠道發送的可疑鏈接和文件。

3 數據安全
3.1 定時備份
建議定期使用外置移動硬盤備份電腦、手機中的數據。
3.2 硬盤加密
你可以給電腦硬盤加密來進一步增強數據安全性。macOS 和 Windows 操作系統均內置了硬盤加密工具。在 macOS 下你可以開啓「文件保險箱(FileVault)」(設置 > 安全性與隱私 > 文件保險箱),在 Windows 下你可以選擇 BitLock。 開源的硬盤加密軟件 VeraCrypt可用於創建虛擬加密硬盤或加密分區,在 Windows 系統下還支持在開機前授權全盤加密。VeraCrypt 支持隱藏加密分區,用戶可以將無害的文件放在外部分區用密碼 1 加密,將真正敏感的文件放在隱藏分區用密碼 2 加密。
3.3 文件加密
對於文件和郵件文本內容都可以採用 PGP (Pretty Good Privacy) 加密。PGP 分為公鑰和私鑰,公鑰用於加密,私鑰用於解密。PGP 還支持給文件添加加密的數字簽名以驗證真偽。使用 PGP 需要使用的軟件是 GnuPG(GNU Privacy Guard,GPG)。
3.4 刪除數據
對於現在高度普及的固态硬盘 (SSD) 而言,數據寫入後無論是刪除文件還是格式化磁盤,都可以被技術手段加以恢復。原先對機械硬盤使用的在刪除文件後填充文件並多次格式化的方法已經難以見效,因此只能轉向全盤加密來保護數據。 若打算轉售或者淘汰未存儲過敏感信息的電子設備,應將設備恢復出廠設置,或循官網指示操作。
4 隱私權限設置
除了不開啓定位就無法使用的地圖類應用外,建議一律關閉定位和通訊錄權限。 對於微信、QQ 、微博、貼吧、知乎、抖音、淘寶等中國產應用,建議在平時關閉調用相機和麥克風權限。
如果你對應用開啓了相冊權限,理論上該應用可以掃描你的整個相冊。如果間歇性開啓相冊權限,其效果與保持開啓並無二致。如果你對於隱私保護要求較高,建議徹底關閉微信、新浪微博等中國產軟件的相冊權限。新版 iOS 系統已經在相冊權限上對讀取和寫入權限做了區分,但社交類軟件的讀寫權限通常是合二為一的,關閉相冊權限的同時意味著你無法將微博上的圖片保存到相冊中,對此你可以使用抓圖應用通過網頁鏈接抓取圖片,或者在瀏覽器中打開鏈接後直接保存。如果你覺得這些額外步驟過於繁瑣影響生活質量,可以考慮同時使用兩部或更多部設備,在其中一部設備上集中安裝、使用中國產軟件。

5 加密郵箱
使用中國的 163、126、QQ、新浪、搜狐郵箱服務必然伴隨中國政府對電郵內容的監視。因此無論是使用電子郵件本身,還是使用郵箱註冊 Twitter 等網站賬號,都建議使用國外郵件服務。此外在傳輸敏感信息時,可以考慮使用支持端對端加密的郵箱服務以保證安全。 端對端加密匿名郵箱有ProtonMailTutanotaDisroot.orgMailfenceMailbox.orgRunbox等。 值得注意的是「端對端加密」只適用於相同郵箱服務的賬戶之間,如果你用 ProtonMail 向 Gamil 用戶發送加密郵件,你還需要通過其他通訊渠道向對方提供解鎖郵件的私鑰。
*「零收件箱」策略
對於高度敏感的郵件往來,可以使用「零收件箱」策略,即雙方閱讀郵件後即時刪除郵件。
6 瀏覽器
6.1 瀏覽器的選擇
首選 Tor 瀏覽器,其次是 Brave、Firefox。 不要使用中國產安卓手機系統內置的瀏覽器,以及 BAT 出品的百度瀏覽器、QQ瀏覽器、UC瀏覽器等,理由同樣是存在植入後門監視用戶的可能。以小米 MIUI 國內版瀏覽器為例,該瀏覽器直接屏蔽了 Github 的網址,在信息封鎖上比 GFW 更進一步。
6.2 瀏覽器的使用
使用瀏覽器時可以使用隱私模式(也稱「無痕瀏覽」),即不保留歷史記錄,以免受到網站追蹤。 盡可能使用 HTTPS (Hypertext Transfer Protocol Secure,超文本傳輸安全協議) 連接的網頁。HTTPS 經 HTTP (HyperText Transfer Protocol,超文本傳輸協議) 進行通信,並使用 TLS/SSL 對傳輸數據進行加密,它的URL以「https://」作為開頭,瀏覽器往往在其 URL 前顯示鎖的圖形,可憑此對 HTTPS 和不加密的 HTTP 進行區分,部分瀏覽器會直接將 HTTP 標記為「不安全」。不要在 HTTP 連接的網頁中輸入賬號、卡號和密碼等敏感信息,這些數據一旦被攔截會直接以明文形式呈現,進而可能造成信息洩露、財產損失等嚴重後果。

7 Tor 瀏覽器
VPN 等傳統代理工具只提供一層代理,如果與 VPN 的連接因意外斷開,你的真實 IP 就會暴露。Tor 瀏覽器的多重代理則有助於降低前者發生的風險,同時保障上網的匿名性和安全性。
Tor 瀏覽器的使用門檻較高,其帶來的安全性提升建立在犧牲一定效率的基礎上。編者建議在網絡上積極發表政治觀點的指導級受眾使用 Tor 瀏覽器,以訪問國際互聯網為主要需求、平時只瀏覽資訊的參考級用戶可根據自身需求來判斷是否使用 Tor。
Tor 瀏覽器可以從 Tor 官網下載,該網站在中國大陸已被 GFW 封鎖,訪問時需要使用代理工具。
7.1 Tor 网络设置
初次打開 Tor 瀏覽器時應用會先要求用戶進行 Tor 網絡設置,身處中國大陸的用戶應該勾選「我所在的國家對 Tor 進行了封鎖」,之後選擇「內置網橋」,目前有「obfs4」、「obfs3」和「meek-azure」三種網橋可選。 如果你沒有使用 VPN 或者其他的代理工具,可以選擇中國可用的 meek-azure 網橋(即把 Tor 混淆成訪問微軟 Azure 雲服務的流量)實現僅限於 Tor 的「單重代理」。使用 meek-azure 網橋確實可以連接,但網頁的加載時間太過漫長,所以不作推薦。「obfs4」網橋的速度要比 meek 快不少。香港用戶可以直接使用 Tor,也可搭配代理工具和網橋使用。
7.2 使用雙重代理
如果利用已有的代理工具 + Tor 實現雙重代理,你需要在「內置網橋」選項中選擇「obfs4」網橋,然後勾選「使用代理訪問互聯網」。
接下來你需要填寫自己的代理信息,包括代理類型(SOCKS 4、SOCKS 5、HTTP / HTTPS)、地址、端口、用戶名和密碼(可選)。 如果選擇「SOCKS 5」作為代理類型,則「地址」欄填寫本地 Socks5 監聽地址 (Local Socks5 Address) ,通常為「127.0.0.1」(可以在 Shadowsocks、V2Ray 客戶端查看,下同),「端口」欄填寫本地 Socks5 監聽端口 (Local Socks5 Port),如「1080」。 如果選擇「HTTP / HTTPS」作為代理類型,則「地址」欄填寫本地 HTTP 監聽地址 (Local Http Address) ,仍為「127.0.0.1」,「端口」欄填寫本地 HTTP 監聽端口 (Local Http Port)。
8 搜索引擎
百度以競價廣告和詐騙信息著稱,已是公認的業界毒瘤,建議早日棄用;搜狗、360搜索、必應國內版等搜索引擎也是信息封鎖政策的執行者,同樣建議棄用。 國外的搜索引擎,在搜索內容質量上 Google 是首選。如果你對 Google 的監控資本主義商業模式感到擔心,可以使用承諾不監控、不記錄用戶搜索內容的 DuckDuckGoStartPage等作為替代品,值得一提的是 StartPage 提供 Google 的搜索結果,同時支持基於網頁代理的匿名訪問 (Anonymous View)。DuckDuckGo 和 StartPage 在中國被 GFW 封鎖,需翻牆使用。 在牆內你還可以嘗試使用未被 GFW 封殺的、更小眾的國外搜索引擎,比如來自俄羅斯的 Yandex
9 密碼管理
9.1 密碼設置
使用大小寫字母、數字、符號隨機組合成的長密碼,如果擔心自己記不住可將其記在實體紙張上或者密碼管理器中。
不要使用「123456」等簡單密碼或者「admin」等默認密碼,不要將自己的姓名拼音、出生日期用作密碼。 對不同的賬號設置不同的密碼,不要重復使用同一密碼,以免其中一家網站的數據庫遭遇黑客攻擊「脫庫」後導致其他賬號隨之一並洩漏。
9.2 密碼管理器
使用密碼管理器的好處在於用戶只要記住密碼管理器自身的主密碼,就可以在需要時由密碼管理器應用自動填充你的各類網絡賬戶的複雜密碼,免去了自己記憶密碼的麻煩,也有利於減少在公共場所輸入密碼時被他人旁窺竊取密碼的可能性。
常見的密碼管理器應用有 1PasswordKeePassLastPass等,iCloud Key Chain(鑰匙串)也可用作密碼管理器。
切勿使用盜版、破解版密碼管理器應用。
*密碼特殊保存
可以考慮將重要的帳號密碼與一般生活所用的帳號密碼分開存放管理,將密碼文本用 PGP 加密後偽裝成其他文件與其他文件混放,然後一併存放於雲端或者移動存儲設備中;或者用紙筆記錄密碼,尋一安全隱秘之處保存。
10 輸入法
輸入法應用為了擴大詞庫,通常會將用戶的個人詞庫上傳到服務器,對中國政府來說獲取本國互聯網企業存儲在境內服務器上的數據易如反掌;有些國內廠商以明文上傳用戶信息,增加了用戶隱私被黑客劫取的風險。
在輸入法的選擇上應同樣遵循盡量不用中國軟件的原則,建議盡量使用系統原生輸入法或由知名國外廠商開發的輸入法:
iPhone/iPad :蘋果原生輸入法、Gboard
Mac:蘋果原生輸入法、鼠鬚管 Squirrel
Android 手機:Gboard
Windows PC:微軟原生輸入法、小狼毫 Weasel
常見中國產輸入法:搜狗輸入法、科大訊飛輸入法、百度輸入法、QQ輸入法、各大中國手機廠商預置的輸入法……

11 智能家居
安全性:none > Apple > Google、Amazon 等美國廠商 > 小米、阿里等中國廠商
對於像 Amazon Echo 這樣搭載智能語音助手、能夠控制智能家居設備的智能音箱,能不用盡量不用。
12 多設備策略
如果你有相應的經濟條件,建議同時使用兩部或更多部手機。 日常使用時,在一部手機上安裝支付寶、微信、新浪微博、抖音/TikTok 等中國產應用(能不用儘量不用),以及 Facebook、Instagram、WhatsApp 等高度普及但私隱保護不佳的應用,不要存儲任何政治敏感性文件;另一部安裝 VPN、Telegram 和 Twitter 等「發夢」用應用,以防服務商收集出賣用戶數據,以及中國政府等第三方利用後門監視手機用戶。
多設備策略可以應對在中國可能發生的警察檢查路人手機的情況(新疆警察檢查路人手機是否存有「暴恐」內容已成常態,網傳北京、蘇州等地警察層在地鐵口掃描路人手機內容)。

13 虛擬機或 Live USB 系統
使用虛擬機或者 Live USB 模式運行 Linux 操作系統的目的在於將該系統與用戶日常使用的主系統相隔離,這樣即使虛擬機/Live USB 系統受到攻擊或監視,主系統中的文件不會洩露。此外,Linux 系統的特性也使它相比更常用的 Windows 和 macOS 更安全。
虛擬機 (virtual machine, VM)指通過主系統中的虛擬機軟件(如 VirtualBox)中運行虛擬操作系統實例。Live CD/Live USB 指將操作系統文件刻錄到光盤、移動 USB 存儲設備或者 SD 卡上,將其製作成系統啟動盤後插入個人計算機獨立運行,這樣可以實現與主系統的物理隔離。 除了保護主系統安全,一些以 Live USB 模式運行的特別定制的 Linux 發行版還可以強化隱私保護的作用。
Tails基于 Debian,所有流量都经过 Tor。
Kodachi同樣基於 Debian,通過強制所有流量經過 VPN + Tor + DNScrypt 來實現匿名,並且系統只在內存/隨機存取記憶體 (Random Access Memory, RAM) 上運行,後者一經斷電就會失去所有數據,不會在存儲介質上留下任何痕跡。
antiS基於 Slackware Live,特色是中文、粵語、藏語、維語友好,預裝了 Shadowsocks 等能應對中國特殊網絡環境的軟件。你還可以下载 Slackware 的官方源,加入需要的第三方軟件,定製自己的 LiveSlak 系统。
由於 Tor 在中國被封鎖,強制使用 Tor 的 Tails 和 Kodachi 無法直接利用,加之 live 系統不能保存文件和設置,每次使用時重複下載安裝用作前置代理的 Shadowsocks 或 V2Ray 顯然十分不便。對此,除了使用 antiS或者自行定制系統外,你可以考慮使用路由器翻牆,或者通過 privoxy 將另外一部已經開啟代理的設備作為前置代理。

14 自由軟件
參見:
https://www.privacytools.io/
https://prism-break.org/
https://www.f-droid.org/en/ (for Android)

小結
基礎:遠離一切中國產硬件設備、中國大廠開發的軟件和提供的網絡服務,如不得已而用之時可在虛擬機、Live CD/USB 或者獨立設備中隔離進行,避免數據「送中」。
進階:使用開源自由軟件,遠離五眼、九眼、十四眼聯盟的大規模監控項目。

大陆IPFS构建无监管网络理想实验

$
0
0
[注意] 全文为一篇理想化的思维实验记录,以“理论上”为前提,为作者提出的一种可能技术方向;暂不讨论实验付诸实践时的各种奇葩问题,毕竟作者个人没有足够的精力。

现状关键字:微博删帖,微信封号,#言论自由 tag海啸般言论被清除,视频图片会根据md5码、图像识别等技术削除。
解决问题:大陆信息流动被限制在主流网站上,信息自由很容易切断,“冲塔”等什么的行动仅为饱和式攻击,仅在言论监管的边缘游走,传播效应略低。
本文解决方式:直接跳出主流网站,构建另一种信息流动方式(工作量可见一斑)
技术基础:IPFS。本文中只需了解的特征:p2p,无中心服务器。详情请查阅文档。
过去的相关解决方案:将资源上传至IPFS托管(pinning)服务商,例如https://globalupload.io/。然后用IPFS网关进行内容寻址(例:https://ipfs.globalupload.io/QmcXNhZudyazkPWqfgSbApPXUjUCXB9RnGoxSnt2g8Zhfj)。Matters上一键将文章转化问国内可访问网址也是这个原理。
解决方案漏洞:实质上根本没有使用IPFS核心功能。通过中心服务器的IPFS网关寻址,和用浏览器访问baidu.com的集群服务器没什么两样。只要GFW动动小手,一个可用的网关就报废了。
新解决方案:自然是真正使用IPFS,让每个访问者成为节点。目前ipfs-core两种实现:go 和 js,go可以用在搭建恒久节点,js则可以嵌在网页中,使设配成为节点。
大体原理:网页中的js-ipfs core启动,连接至DHT分布式哈希表网络(国外),在swarm环路上发现节点,也同时会广播发现。获取资源时向已连接节点广播hash码,这里我把资源托管在pinning服务商的服务器上做的实验,速度略慢3-5s,在增加节点数量后一定会改善。https://gateway.pinata.cloud/ipfs/QmZL2ajZE5NewYaSELTuexPLGGkJTAM6Uzy7k9vDDH4dvH/
未设想充分的地方:关于嵌有节点的网页分发问题,用传统的服务器国内会喝茶,国外会被墙,作者只是想到用H5App。欢迎大家讨论补充。
未来可预见问题:首先是IPFS连接国外DHT问题,这里感觉可以通过部分节点翻墙来处理;IPFS内容寻址,只能制作静态网页,网页更新也是个问题,或许可以通过rss广播更新hash码什么的,IPNS真心不推荐;js-ipfs需要在本地生成仓库存取文件,可能会涉及跨域访问问题;app的分发可能会有点小问题;至于政府为了断绝IPFS,会不会疯狂到直接物理断网,就不是技术要讨论的范围了。
最后补充:以上技术尚不能实现用户留言评论,达到真正的“言论自由”;官方给出的解决方案是orbit-db分布式数据库,实现动态网页构建。不过我试了试比ipfs版本号0.4.23还低的这个数据库后,感觉一言难尽,暂时不能列入可行技术方案(暂时不能画这么大的饼)。
以上

Github 中间人攻击原理分析

$
0
0
原文链接: https://zhuanlan.zhihu.com/p/119030756
Github 中间人攻击原理分析

Github 中间人攻击原理分析

序言

3 月 26 日,国内多个地区访问 Github 以及 Github pages 的时候,谷歌浏览器提示“您的连接不是私密连接”的错误信息,不少用户想知道为什么会这样。在这起事件中,我得出的结论是由于 BGP 劫持,国内受影响的用户访问到的是错误的 Github 服务器。为了了解整个事件的全貌,我们先从一些基础知识开始:

为什么会出现这样的提示

如果你使用的是谷歌浏览器,那么除了“您的连接不是私密连接” 之外,你可能还见过其他提示
  • 此网页包含重定向循环
  • 此网站无法提供安全连接;网络连接错误发送的响应无效
  • 您的时钟慢了,您的时钟快了
  • 服务器的瞬时 Diffie-Hellman 公共密钥过弱
  • 无法显示此网页
  • 您计算机上的软件导致 Chrome 无法安全地连接到网络
  • 删除过期的 DigiCert 证书
你可以猜测到,要正确地连接到服务器并不像看起来那么简单,而是需要经过一系列谨慎地校验,既要保证你访问的是正确的服务器,也要保障访问过程中数据不被监听或者篡改。我们需要知道:
  1. 用户访问 github.com 的时候, github.com 只允许使用 HTTPS 进行加密连接(你可以使用浏览器的开发者工具,看到 github.com 的请求带有 HTTP 头部 Strict-Transport-Security: max-age=31536000; includeSubdomains; preload )
  2. 当使用 HTTPS 建立加密连接的时候,浏览器会要求服务器提供 SSL/TLS 证书,然后浏览器使用自带的数字证书认证机构(简称 CA)的公钥,对服务器提供证书中的 CA 的数字签名进行验证。《图解 HTTP》中有一个非常形象的插图描述了整个流程。
《图解 HTTP》插图
3. 之所以会出现“您的连接不是私密连接”的错误,是由于服务器提供的证书没有通过验证。以下几种原因会导致证书没有通过验证:
证书过期或者不符合要求
如果 github.com 的证书过期或者没有使用合适的加密算法,证书也无法通过浏览器的验证(会根据具体的原因显示上面提到的提示信息)。不过根据提示信息以及这次事件只发生在国内,而国外能够正常访问 github.com,所以排除这个原因。
DNS 解析出错
当我们访问 github.com 的时候,需要首先将域名转变成 IP 地址,浏览器会优先查找本地的 hosts 文件,如果没有找到对应的记录,就会向 DNS 服务器请求解析(这里省略了一些与本文无关的细节,具体整个流程可以参考 what-happens-when)。如果 DNS 服务器解析出错或者受污染,将 github.com 解析到错误的 IP 地址,就会导致用户访问错误的服务器。而错误的服务器无法提供正确的证书。不过根据网友提供的截图,DNS 解析到正确的 Github 的 IP 地址,同样排除此原因。
正确的 IP 地址,错误的服务器
即使知道了正确的 IP 地址,也不能代表你连接的就是该 IP 对应的服务器,什么意思呢?回忆下当你使用 SSH 协议以及 IP 地址连接一个从未访问过的远程服务器的时候,会出现这样的提示:
The authenticity of host '138.197.19.xxx (138.197.19.xxx)' can't be established. 
ECDSA key fingerprint is SHA256:qwR9naUT7NA6RrLSnu9RQ/jR1fJ2K5eakv52ONEyuOE.
Are you sure you want to continue connecting (yes/no)?
大多数人会直接选择 yes 并且忽略此信息,但是为什么 SSH 协议会有这个“多余的提示”呢?简单来说,IP 协议并不可靠,恶意服务器可能通过 ARP 欺骗或其他手段来伪装自己是某个 IP 地址的服务器,不能因为服务器说它是某个 IP 地址就相信它。为了防止这个问题,第三方 VPS 服务器商例如 DigitalOcean 会在网页提供对应服务器的 fingerprint,在你第一次连接的时候就可以对比提示中的 fingerprint 与网页的 fingerprint 是否一致来保证没有连接到错误的服务器。而第一次连接成功之后,客户端会把这些信息保存在本机的 known_hosts 中,代表以后会信任这个服务器。ARP 欺骗不在本文的讨论范围之外,因为 ARP 只能在子网中进行欺骗,我们主要讨论的是另外一种手段,称为 BGP 劫持。
什么是 BGP
BGP 是一种路由协议,我们知道连接服务器需要使用 IP 协议,而连接过程需要在不同的路由器中进行跳转(也称为 hop),每个路由器只负责自己网段的服务器,其他会根据路由表分发,BGP 协议就是一个路由寻址的最优路径算法,它使用了 Bellman-Ford 算法,能够帮助我们高效地查找 A 服务器到 B 服务器的最佳路由路径。国内的运营商使用它来进行路由路线规划,在终端中,我们可以使用traceroute指令来找到这个路由器路径。
什么是 BGP 劫持
BGP 劫持就是某些 AS 通过宣称自己拥有某个 IP 地址,而将对该 IP 地址的请求引向一些恶意服务器。下图中 AS 指的是一个区域中大量计算机组成的网络,中国各家运营商管理着相应的 AS。用户知道 github.com 的 IP 地址后,从 AS 1 出发,正常来说,应该访问在 AS 4 的 Github 服务器,但是 AS 5 与 AS 6 欺骗 BGP 它拥有 github.com 的 IP 地址并且误导 BGP 的路径经过它,于是用户变成访问 AS 6 服务器,但是用户还以为自己连接的是正确的服务器(根据 IP 地址)。万幸的是,由于 AS 6 的服务器无法提供正确的 Github 证书,所以 HTTPS 连接无法正确建立,而这也是整个事件的真正原因。Cloudflare 有一篇非常好的文章 What Is BGP Hijacking? 解释了什么是 BGP 以及 什么是 BGP 劫持。

总结

整起事件中,有组织或者个人使用 BGP 劫持将 github.com 的 IP 地址指向了使用某 qq 邮箱自签名的证书的服务器,由于浏览器并没有信任该证书,所以出现了“您的连接不是私密连接”的错误信息。这样的事情早就不是第一次发生,2008 年巴基斯坦的 ISP 运营商就使用 BGP 劫持屏蔽用户浏览 Youtube。2018 年,黑客通过 BGP 劫持将重定向了亚马逊 DNS 服务器的流量,然后盗取加密货币。

V2Ray / Trojan 传输方式哪个好?(原理对比)

$
0
0
原文链接:https://www.idleleo.com/02/4064.html
作者: 潘羿 来源: 无主界
前段时间, 有些社群爆出有论文研究V2Ray识别的方法。这让大家开始寻找一些V2Ray可能的替代品。这不,最近Trojan就十分火爆,笔者发现很多油管UP🐷开始着手测试Trojan的性能。笔者前段时间也发表了如何搭建的文章,《替代V2Ray?- Trojan搭建教程》(由于某些原因不得不使用密码,默认密码在输入密码的下面)。那么,我们从原理的角度来简单分析一下,V2Ray与Trojan究竟那个更好,更多详细的分析可见《关于Trojan、CDN、V2Ray的种种问题 (原理分析)》一文。

Trojan是什么?

根据官网给出的解释,Trojan的设计理念与传统协议的设计理念相反,Trojan不使用强加密和随机模糊,而是直接模仿互联网最常见的协议HTTPS,以此来达到设计的目的。




当然,这显然是胡扯。从笔者另一篇文章《V2Ray / SSR 传输协议哪个好? (各种协议对比)》中可以知道,HTTPS协议本身就含有加密,而且TLS 1.3更是强加密,现今无法通过简单方式破解。Trojan本身使用了HTTPS的特性,自带了加密属性,只不过这种加密大家都在用而已,因此官网描述是不准确的。

Trojan比V2Ray更安全?

答案是:不见得。我们从上述描述中可以看出,Trojan本身已经是确定好了自身的协议类型,而V2Ray使用多种协议。笔者之前的文章特意探讨过V2Ray的各种协议区别。因此不能简单的把Trojan和V2Ray进行类比。为了公平起见,我们可以选取V2Ray“最安全”的协议WS+TLS与Trojan进行对比。
我们不难发现,若V2Ray使用了WS+TLS方式,其协议与Trojan本身差异并不大。两者建立连接的过程有区别,但是从流量本身,或者说第三者看流量是难以发现区别的。也就是说,对于第三者的监听,这两类协议与普通流量表现均一致,这是两者的共性。



根据Trojan的官网描述,Trojan在建立连接的过程中考虑了现行加密协议的不足,也参考了传统网站服务器的连接过程,Trojan开发者似乎有意识的将Trojan服务器伪造成只处理 HTTPS流量的Nginx服务器,这点很好,Nginx服务器的高性能与广泛流行能够一定程度让Trojan进行伪装,而V2Ray并不具有这类特性。不过V2Ray本身在连接过程中较之Trojan增加了些许步骤。
在笔者的文章《 V2Ray / SSR 加密方式哪个好? (加密方式对比)》中,笔者介绍了V2Ray的加密形式,V2Ray的加密形式并不局限于一种协议, Vmess加密在各个传输协议中均是存在的。大家可以这么理解,对于一个内容, Vmess会根据客户端支持的加密方式进行加密,在服务端进行解密,这是基础的一层加密,如果使用WS+TLS的协议进行传输这些内容时,会在内容加密的基础上再进行一次 TLS加密,也就是说, Vmess会加密两次。因此,即便在传输过程中遭到中间人攻击,导致传输内容变成明文及 TLS加密失效,V2Ray传输的内容依旧能一定程度保持安全。



从反向代理的角度看,在《关于Trojan、CDN、V2Ray的种种问题 (原理分析)》一文中,笔者提到,V2Ray是支持反向代理的,而Trojan却并不支持。这使得Trojan无法使用CDN这类使用反向代理技术的服务,从而无法隐藏真实IP。无法处理反向代理流量减少了Trojan的安全性,笔者相信这是Trojan团队未来需要解决的问题之一。
所以对于究竟哪个更安全的讨论是仁者见仁智者见智的。实际上,现在的TLS 1.3已经足够安全,像是笔者说的中间人攻击这类手段本身代价很大,笔者觉得不会这么为了普通人动用这类手段。而CDN隐藏IP对于普通使用的安全性影响亦有限,因此从安全性来说,两者协议差别不大。

Trojan比V2Ray更快?

从上述的笔者描述中,我们能知道,V2Ray在使用WS+TLS传输的过程中进行了两次加密,虽然TLS加密对于速度的影响并不大,但是Vmess加密的影响还是有的。尤其在使用一些并不是很友好的加密协议时,影响更大。当然,相信有童鞋会想到在使用V2Ray时把加密方式改成None,但这并不代表能与Trojan保持一致,笔者在《V2Ray / SSR 加密方式哪个好? (加密方式对比)》文章中提到过,V2Ray即便在加密协议设置成None的情况下还是会有加密,具体情况大家可以参考那篇文章。
而对于Trojan而言,在处理与Trojan有关的流量时,Trojan表现优越,但是在处理其他流量诸如正常的HTTPS或者Vmess时,由于多一个流量本身的判断,导致效能低下,笔者认为这是Trojan的致命伤,期望后期Trojan团队能有所改变。
因此,仅从真正使用的流量的传输速度看,Trojan在原理上是一定快于V2Ray的,倒不是Trojan有什么黑科技,而是Trojan比V2Ray更简单,我们可以认为Trojan就是一个只有WS+TLS协议的V2Ray的简化版本(不能简单等同)。这也许就是Trojan的设计理念吧,笔者认为把Trojan介绍成: 以简单的方法利用互联网最常见、最安全的形式完成连接的一种协议,这样的介绍或许会更好。



从各个UP🐷的测评看,Trojan的连接速度确实快于V2Ray的WS+TLS,当然这种提升不会非常明显。原因很简单,毕竟AES之类的加密如果对于性能影响很大,又怎么会是现在主流的加密方式呢?

应不应该改用Trojan?

对于使用Trojan,根据Trojan的教程《替代V2Ray?- Trojan搭建教程》,普通人需要解决域名、解析的问题。这与V2Ray使用WS+TLS的门槛差不多了。如果仍有使用SSR的童鞋,笔者建议你赶紧改成Trojan或者V2Ray。
对于已经使用WS+TLS协议V2Ray用户,现在由于Trojan本身还算“年轻”,各个平台的客户端是远不及V2Ray来的完善,因此,为了提升一些些的传输速度,而选择改为Trojan是需要三思的。
那么是否需要从未来安全角度改用Trojan呢?笔者认为,若是V2Ray使用WS+TLS最终被封锁,那么其实离Trojan被封锁也不远了。毕竟Trojan不是一个具有革命性的新协议,两者本质上说均是采取了现在流行的TLS协议,因此没必要担心未来V2Ray是否安全而改用Trojan。

SSRoT 概要

$
0
0
序言
好吧! 也许是时候公布新功能了. 关心这个项目的人, 绝大部分懂中文, 咱也就不装了, 不飙英文了, 累.
据说 SS 和 SSR 被 GFW 精准识别了, 有2019年6月初的梯子大屠杀为证, 咱也没有必要去辨别真伪了, 此后 根本不重要 .
因为俺憋了个大招.
GFW 不是老在搞 深度包检测(Deep packet inspection, DPI) 吗? SS/SSR 与 GFW 在这一点上斗了好多年, 我加点伪装, 你加大侦测力度, 我再加点混淆, 你再加点AI识别算法, 此消彼长, 犬牙交错, 无穷无尽. 看得人厌倦透顶.
咱不装了, 咱来真的, 我们给 GFW 带来全新礼物, 给 SSR 添加了 over TLS 特性, 用真的 HTTPS 数据包翻墙! 简称 SSRoT. 您 GFW 慢慢算去!
补记: 时维2019年10月2日, 经过空前严酷的 国殇 日前后的 GFW 封锁, 我本人没发现 SSRoT 运行状态有任何异常, 此前也只有一例电邮报告被墙, 具体原因估计是 GFW 针对某一网段的无差别封杀. 此外再无任何报告. 这证明 SSRoT 的越墙能力是毋庸置疑的.
补记2: 2020年2月1日, 新冠瘟疫 横行, 墙再次加高, SSRoT 依然从容穿越 GFW 向兲朝猪圈传递未经审查的自由资讯.
在正式开始前, 介绍一个概念: 反向代理.

反向代理
反向代理(Reverse Proxy)是指, 服务器 根据 客户端 的请求,从其关联的一组或多组后端服务器(如 Web 服务器)上获取资源,然后再将这些资源返回给 客户端,客户端 只会得知 反向代理 服务器的 IP 地址,而不知道在 代理服务器 后面的 服务器 集群的存在。
与前向代理不同,前向代理作为 客户端 的代理,将从互联网上获取的资源返回给一个或多个的 客户端,服务端(如Web服务器)只知道代理的 IP 地址而不知道 客户端 的 IP 地址;而 反向代理 是作为 服务端(如Web服务器)的代理使用,而不是客户端。客户端 借由 前向代理 可以间接访问很多不同 互联网服务器(集群)的资源,而 反向代理 是供很多 客户端 都通过它间接访问不同 后端服务器 上的资源,而不需要知道这些 后端服务器 的存在,而以为所有资源都来自于这个 反向代理 服务器。




举个例子,某用户访问 http://www.example.com/readme ,但是 www.example.com 上并不存在 readme 页面,它是偷偷从另外一台服务器上取回来,然后作为自己的内容返回给用户。但是用户并不知情这个过程。对用户来说,就像是直接从 www.example.com 获取 readme 页面一样。这里所提到的 www.example.com 这个域名对应的 web 服务器 就设置了 反向代理 功能。

反向代理 在现时的互联网中应用非常广泛。

SSR over TLS 原理
SSR over TLS (简称 SSRoT) 就是直接利用了 反向代理, 在现代 web 服务器( 比如 nginxcaddyapache 等)上, 添加一条设置, 当 SSR 客户端向 web 服务器 以特定 URL 请求资源时, web 服务器 将这个请求直接转发到 SSR 服务器, SSR 服务器再将这条请求以约定算法解包后发送到 目标网站. 见下图.




我们的目的是为了避开 GFW 的审查,当然不能明晃晃地使用 HTTP 明文传输,必须使用 HTTPS 协议进行加密通讯, 我们此前的努力就是伪装成正规的 HTTPS 协议等, 这次我们不装了, 就使用堂堂正正的 HTTPS 协议, 与真正的带域名 和 网站数字安全证书的 web 服务器网站通讯, 这样, 你 GFW 没办法了吧?
当然, 我党 也不是完全没办法, 有几个:

  • 宣布 HTTPS 协议为反党反社会主义的反动协议, 必须坚决予以取缔. —— 你认为会有这么一天吗? 我认为不会, 这完全不具备可操作性. 比较有意思的是, 我党的 政府网站 以及一众徒子徒孙们, 全部是 HTTP, 而不是 HTTPS. 亦可赛艇.
  • 向 朝鲜 🇰🇵 看齐, 偌大中国只有几十数百个国外 IP 可以访问, 其它一概封杀. 那, 我也没办法了, 还翻什么墙啊? 我们 —— 被剥夺了基本 通讯自由 以至于上个破网都是犯罪的十几亿猪民 —— 是不是有比宅家里猥琐地偷摸翻墙更重要的事要做?拥有这数百 IP 管理权的 猪倌 们, 别犹豫, 赶紧把 SSRoT 部署起来, 这是你们一夜暴富的最后机会.

  • 加强 GFW 的识别算法, 当然努力的方向不再是 深度包检测, 而是 域名 字串特征 和 网站 内容判别了, 我党 甚至可能引入 社会工程学 手段进行人肉搜索来确定某人是否在翻墙. —— 这问题不属于本软件所能解决的范畴了.比如域名里出现了 FuckCCP 字样, GFW 肯定会判定为应该封锁的网站. 又如, 如果你网站只是简单的一个示例网页, 却每天有大量数据交换, 那就可以判定为翻墙站点了.

因此, 稳妥的做法是, 为你的翻墙站点, 注册一个 爱党爱国 的域名, 然后在这个网站上放置不算太少的 颂扬 我党 的文字, 图片, 视频 等, 或者干脆充斥着 娱乐至死 的游戏评测视频以及 吃喝玩乐 各种资讯, 等等. 这就伪装得差不多了, GFW 即使启用超强 AI 引擎运算, 应该也判别不出你到底在干嘛.
警告: 不要 放置 黄赌毒 以及 时政 内容, 在 我党 这种 婊子当惯、牌坊耸立 的绝世老流氓跟前,那是在 找死.
这项技术对于 外国 在华 记者 更是重大利好, 不用费劲吧啦地到处找翻墙梯子, 直接在 于中国可访问的 境外自家网站上的 web 服务器上添加一个 反向代理 特殊 URL 条目, 单独部署一 SSRoT 服务器, 就可通过 SSRoT 客户端访问墙外内容了.

SSRoT 技术关键点

  • 客户端是标准的 SOCKS5 服务器, 客户端 与远端 web 服务器 以 HTTPS 协议通讯, 通讯内容是协商升级成 WebSocket 协议, 协商成功后, 就以 WebSocket 协议进行基于长连接的数据交换, 直到某一方关闭连接.WebSocket 简明教程

  • 交换的数据可经过 SS/SSR 加密算法处理, 甚至不用加密, 因为经 HTTPS 协议传输的内容, 包括请求路径URL, 数据等, 都是经过强加密的, GFW 破解不了, 即便 GFW 牛逼到真能破解了, 那 HTTPS 协议本身也就该升级换代了.
  • 充当 反向代理 的 web 服务器必须有正式的域名, 有真正的数字证书. 这些可以通过 freenom.com 和 letsencrypt.org 免费 或 付费 获得, 后续的安装教程有详细讲解.
  • 远端 反向代理 条目 URL 字串必须足够复杂, 足够随机, 以增加 GFW 穷举法猜算出来的难度. 一个随机生成的 UUID 字串就足够 GFW 喝一壶的, 况且我们也可以随时更换.
  • 远端 反向代理 服务器采用市面上常见的 web 服务器软件就可以, 没特殊要求. 这彻底杜绝了 GFW 的被动检测和主动嗅探,因为网站是真实存在的,经得住 GFW 的各种威逼利诱。
  • 与 反向代理 web 服务器进行通讯的 SSRoT 服务器也是基于 WebSocket 协议, 然后它将数据解包后转发到用户试图访问的 目标网站. 在收到 目标网站 的反馈信息以后, 它 将信息进行 加密, 封包后, 以 WebSocket 帧 发送给 反向代理 服务器, 反代 原封不动 地 转发给 SSRoT 客户端.
准备工作
进行 服务端配置工作 的人必须具有一定 Linux 使用经验, 像怎么注册 VPS (Virtual Private Server, 虚拟专用服务器), 怎么用 SSH 登录 VPS, 怎么使用工具软件 vi (文末有教程链接) 编辑文本文件以及一些 Linux 基本命令的使用, 等等. 如果你不会, 建议你去学会了再来尝试搭建 SSRoT.


购买一个 VPS
这可以通过 信用卡, PayPal, 支付宝, 微信支付 等支付手段, 从 谷歌云, 亚马逊云, linode, digital ocean, bandwagonhost, vultr 等 VPS 服务商 购买. 对于个人用户, 一般 选择 年费 30 至 50 美元 档次的 足矣.
警告: 切勿购买 什么 阿里云, 腾讯云, 京东云 等受 我党 控制的 垃圾主机, 哪怕它速度快上天, 外表涂着蜂蜜的狗屎那也是狗屎. 你懂的.
购买之后, 请创建一台 虚拟主机 并让 它 运行起来, 注意防火墙设置, 必须开放 80 和 443 两个端口, 当然 ssh 使用的 22 端口也必须开放 (默认是开放的).
为了减少后续安装 SSRoT 时可能出现的各种奇奇怪怪的问题, 希望统一选择 ubuntu 18.04+ 版本的操作系统.

注册 一个 Domain (域名)
提供 域名 注册服务的商家是很多的, 包括 freenomgodaddycloudflare, 等. 中国也有, 如 马云 家的, 你敢用你就用, 找死的人我绝不拦着.
推荐使用 freenom 家的, 它提供有收费域名注册, 也允许免费域名注册, 更方便的是, 你可以把上一步刚创建的主机 IP 通过简单的设置就在这里与 域名 关联上.
由于蝗虫一般涌入试图薅羊毛的中国人让 freenom 极度不满, freenom 的免费域名注册对中国人并不友好, 极大概率注册会失败. 为了顺利注册免费域名, 请首先用美国 IP 翻着墙, 使用 Google 账号直接登录该站, 不必自主注册账号, 在填写个人资料时, 胡诌个美国住址, 就可以随意注册免费域名了. 参考资料

将 域名 和 虚拟主机 的 IP 关联上
一般 域名 注册商都有域名解析服务, 各家设置界面都不相同, 其中就数 freenom 最简单, 亲民.
设置完成以后, 等待一两分钟, 就可以用 ping 命令试着将这个域名 ping 通. 看看域名和 IP 是不是对应上了.
关联后的域名像下图那个样子。 注意,必须把 www 也关联上,这很重要。否则后面的安装脚本在验证 www 域名时找不到主机,导致安装失败。 




手工安装 SSRoT 服务器全程详解
对于需要定制化安装 SSRoT 服务器的用户, 本文提供了详细的讲解. 几乎涉及到安装的每个细节.
下面的操作全部在你的远程主机 VPS 上进行, 其操作系统最好是 ubuntu 18.04+
使用 ssh 软件从你电脑上登录远程主机 VPS.
ssh root@123.45.67.89 -p 22
上面的 123.45.67.89 是你 VPS 的 IP 地址, root 是远程主机上的账号名, 如果你的 VPS 的 ssh 端口 不是 22, 请替换成你自己的. 然后 盲打 输入 你的 VPS 登录 密码 登入 VPS.
提升操作权限到 root 权限.
sudo -i
预先安装一些必要的工具
apt-get update -y
apt-get install make zlib1g zlib1g-dev build-essential autoconf libtool openssl libssl-dev -y
apt install python3 python python-minimal cmake git wget -y


安装 web 服务器 nginx 软件
安装 web 服务器 nginx 软件. 命令为
apt-get install nginx -y

完毕以后, 可以敲入 nginx -v 查看 nginx 的版本号, 也可以通过命令 which nginx 查看 nginx 到底安装在哪个地方.
nginx 配置文件是 /etc/nginx/nginx.conf, 文件里有如下两行
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
第一行表明 /etc/nginx/conf.d/ 文件夹里所有 *.conf 都会被包含进配置里面, 目前这个文件夹是空的.
第二行表明 /etc/nginx/sites-enabled/ 文件夹内所有文件都会包含进配置, 目前只有一个文件 default, 因此该文件全路径即为 /etc/nginx/sites-enabled/default, 该文件内指明了 web 站点首页文件是 /var/www/html/index.html.
为了避免这个文件对我们以后的操作造成困惑、干扰. 把这个文件删了再说
rm -rf /etc/nginx/sites-enabled/default

创建我们的假站点文件夹 /fakesite, 并把样本主页文件复制到这里.
mkdir /fakesite
mkdir -p /fakesite/.well-known/acme-challenge/
cp /var/www/html/*.* /fakesite

在 /etc/nginx/conf.d/ 文件夹内创建 子 配置文件 ssr.conf, 并用 vi 软件进行编辑
rm -rf /etc/nginx/conf.d/*
vi /etc/nginx/conf.d/ssr.conf

通过 vi 输入如下内容
  server {
    listen 80;
    server_name localhost;
    index index.html index.htm index.nginx-debian.html;
    root /fakesite;
  }
然后使用下列命令让 nginx 重新加载配置使其生效
nginx -s stop
nginx


获取 数字安全证书
Let's Encrypt 是免费、自动化、开放的证书签发服务, 它得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅猛。
申请 Let's Encrypt 证书不但免费,还非常简单,虽然每次只有 90 天的有效期,但可以通过脚本定期更新,配好之后一劳永逸。
以下命令就是配置过程. 注意, 下列命令不能简单地复制粘贴, 请将这些命令复制到文本编辑器里, 将里边的两处 mygoodsite.com 字串替换成你自己的 域名, 然后才可以复制粘贴到 ssh 的命令行终端控制台里.
org_pwd=`pwd`

mkdir /fakesite_cert
cd /fakesite_cert
openssl genrsa 4096 > account.key
openssl genrsa 4096 > domain.key
openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:mygoodsite.com,DNS:www.mygoodsite.com")) > domain.csr
wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py
python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /fakesite/.well-known/acme-challenge/ > ./signed.crt
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem
cat intermediate.pem root.pem > full_chained.pem

cd ${org_pwd}

安装证书失败的绝大部分原因参阅 这里
经过这样一通骚操作, 我们就已经在 /fakesite_cert 文件夹里创建好了数字证书.

将 数字安全证书 部署到 web 服务器
将 原 web 服务器 配置文件 删掉, 再用 vi 软件重新生成 配置.
rm -rf /etc/nginx/conf.d/ssr.conf
vi /etc/nginx/conf.d/ssr.conf

通过 vi 输入如下内容, 注意 替换里边的 mygoodsite.com 字串为您的 域名
  server {
    listen 443 ssl;
    ssl on;
    ssl_certificate    /fakesite_cert/chained.pem;
    ssl_certificate_key  /fakesite_cert/domain.key;
    ssl_protocols     TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers      HIGH:!aNULL:!MD5;
    server_name      mygoodsite.com;
    index index.html index.htm index.nginx-debian.html;
    root /fakesite;
    error_page 400 = /400.html;

    location /5mhk8LPOzXvjlAut/ {
      proxy_redirect off;
      proxy_pass http://127.0.0.1:10000;
      proxy_http_version 1.1;
      proxy_set_header Upgrade \$http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host \$http_host;
    }
  }

  server {
    listen 80;
    server_name mygoodsite.com;
    index index.html index.htm index.nginx-debian.html;
    root /fakesite;

    location /.well-known/acme-challenge/ {
    }

    location / {
      rewrite ^/(.*)$ https://mygoodsite.com/$1 permanent;
    }
  }

注意

  • 其中的三处 mygoodsite.com 字串, 替换成你自己的 域名.
  • 5mhk8LPOzXvjlAut 字串就是 反向代理 的入口, 必须替换成你自己随机生成的字串, 不能偷懒, 否则 GFW 的网络爬虫会爬取到本网页, 将 5mhk8LPOzXvjlAut 加入破解词库, GFW 分分钟将你拿下.
  • 大家可以看到, 该 location 节区有句 proxy_pass http://127.0.0.1:10000; 表明, 为 反代 提供服务的 SSR 服务器必须监听在 127.0.0.1:10000 上, 否则不能联动. 这表明 SSR 服务器也可以安装在另一台主机上监听另一端口, 只要把这里的 proxy_pass 值设置相应的正确值就没问题.
  • 由于 vi 编辑器非常原始, 也不支持鼠标, 编辑文字极其不便, 建议在本地纯文本编辑器里弄好了以后, 一次性复制粘贴到 vi 编辑器里, 然后保存退出.
随机字串 的生成很简单, 如下命令足矣, 注意查看生成的字串, 如果含有斜杠 / 加号 + 或者等号 =, 就再次生成, 直到没有为止.
head -c 12 /dev/random | base64

最后使用下列命令使配置生效
nginx -s reload


证书自动更新 计划任务 设置
用 vi 在 /fakesite_cert 文件夹 创建 计划任务脚本 renew_cert.sh
vi /fakesite_cert/renew_cert.sh

通过 vi 输入如下内容
#!/bin/bash

cd /fakesite_cert/
python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /fakesite/.well-known/acme-challenge/ > ./signed.crt || exit
wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
cat signed.crt intermediate.pem > chained.pem
nginx -s reload
然后给这个文件赋予 可执行 属性
chmod +x /fakesite_cert/renew_cert.sh
将这个脚本写入 计划任务 crontab 中
service cron stop
rm -rf tmp_info
crontab -l > tmp_info
echo "0 0 1 * * /fakesite_cert/renew_cert.sh >/dev/null 2>&1">> tmp_info && crontab tmp_info && rm -rf tmp_info
service cron start


安装 SSR 服务器
使用如下命令安装 SSR 服务器.
wget --no-check-certificate https://raw.githubusercontent.com/ShadowsocksR-Live/shadowsocksr-native/master/install/ssrn-install.sh
chmod +x ssrn-install.sh
./ssrn-install.sh 2>&1 | tee ssr-n.log

中间会要求你输入一些参数. 如果你懒, 一路回车也可以.
安装完毕以后, 用 vi 打开 SSR 配置文件 /etc/ssr-native/config.json
vi /etc/ssr-native/config.json

改成下面这个样子:
找到 server_settings 节区, 将监听端口 listen_port 的值替换成 10000 端口.
找到 client_settings 节区, 将 server_port 的值替换成 HTTPS web 服务器端口 443 端口.
找到 over_tls_settings 节区, 将 enable 的值改成 true, 将 server_domain 的值 mygoodsite.com 替换成你的 域名, 将 path 的值 5mhk8LPOzXvjlAut 替换成你前边生成的随机字串, 注意前后的斜杠 / 必须保留不能删了.
  ...

  "server_settings": {
    "listen_address": "0.0.0.0",
    "listen_port": 10000
  },

  "client_settings": {
    "server": "12.34.56.78",
    "server_port": 443,
    "listen_address": "0.0.0.0",
    "listen_port": 1080
  },

  "over_tls_settings": {
    "enable": true,
    "server_domain": "mygoodsite.com",
    "path": "/5mhk8LPOzXvjlAut/",
    "root_cert_file": ""
  }

然后再用 cat /etc/ssr-native/config.json 命令检查一下, 如果没问题就可以复制粘贴到本地作为客户端的 配置文件了.
最后使用如下命令重启 SSR 服务.
systemctl restart ssr-native.service

到此, 如果一切顺利, SSRoT 安装完成. 可以使用 ssr-client 客户端翻墙了.
当然. 这时候位于 /fakesite/ 文件夹内的网站内容, 还是一个孤零零的示例网页文件, 下一步您得尽快填补一些看起来有趣的内容. 否则, 等 GFW 醒过闷儿来, 就可能封杀这个网站了.

成果汇总

  • web 服务器 nginx 安装后的可执行文件路径 /usr/sbin/nginx
  • nginx 配置文件的根文件夹路径 /etc/nginx/
  • nginx 针对假网站的配置文件全路径 /etc/nginx/conf.d/ssr.conf
  • 假网站的根目录 /fakesite/
  • 假网站的安全证书文件存放目录 /fakesite_cert/
  • SSR 可执行文件的全路径 /usr/bin/ssr-server
  • SSR 配置文件全路径 /etc/ssr-native/config.json
创建假网站
一般在您远程 Linux 虚拟主机上执行如下命令, 就可以把一静态网站下载到您主机上. 注意其中的网址 http://www.xxxyyyz.com/ 要改成您选定的某个已经存在的网站, 并且注意是 http 还是 https 不要搞错了. —— 不能偷懒, 因为 www.xxxyyyz.com 是我随手敲的, 它并不存在.
wget http://www.xxxyyyz.com/ -r --level=5 -p -np -k -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6"
这条命令很长, 我把参数稍微解释一下.

  • -e robots=off 让 wget 耍流氓无视 robots.txt 协议
  • -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" 伪造 agent 信息
  • -r 或者 --recursive specify recursive download. 递归下载
  • --level=5 递归下载的层级, 我这里指定递归到 5 级就停止了, 否则没完没了撑爆您硬盘就不好玩了. 您可以按照您的需要调整.
  • -p 或者 --page-requisites get all images, etc. needed to display HTML page. 下载页面所有文件,使页面能在本地打开
  • -np 或者 --no-parent don't ascend to the parent directory. 不下载父级目录的文件
  • -k 或者 --convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)
  • -m 或者 --mirror shortcut for -N -r -l inf --no-remove-listing
下载完成以后, 用 ls 命令可以查看到名为 www.xxxyyyz.com 的文件夹.
以命令 cd www.xxxyyyz.com 进入文件夹.
再以 ls 命令查看, 可以看到整个网站的文件, 注意看有没有 index.html 文件, 如果没有, 就有可能出错了, 您得换一个获取资源的网站, 再来一次.
如果一切正常, 敲入如下命令将这整个网站的文件移动到我们的假网站文件夹 /fakesite/ 里.
注意头一条命令是把假网站文件夹 /fakesite/ 里的原有文件都删了, 注意命令最后的星号 * 千万不能漏了. 然后第二条命令才是移动刚下载的文件到 /fakesite/ .
rm -rf /fakesite/*
mv * /fakesite/
目前为止, 我们的假网站就弄完了.
在您的浏览器里输入 您自己的网址域名访问这个假网站, 验证一下是否能加载出来.
客户端用法
客户端下载地址
这个客户端可用于 Windows, macOS, Linux 等系统。在 macOS 或 Linux 上可能得额外执行 chmod +x ./ssr-client 命令为软件加上 可执行 属性。

客户端运行命令
./ssr-client -c /your/path/of/config.json

Chrome 浏览器设置
打开 Chrome 浏览器, 点开菜单项 Windows -> Extensions, 在随后出现的 页面上 的 搜索框 里, 键入 SwitchyOmega, 找到这个插件, 安装上. 然后如下图进行设置.




最后在右上角的 那个 圈圈 图标上 点一下, 选择我们设置的条目. Chrome 就可以愉快地翻墙了.

FireFox 浏览器设置
FireFox 浏览器请使用 FoxyProxy 插件, 配置方法类似.





macOS
其实上述的客户端用法已经可以在 macOS 上用起来了。
另外的有个更便捷的方法是,直接下载 macOS 上的专用客户端,ssrMac ,然后按照这个 英文教程 一通骚操作,就可以用起来了。 





iOS
目前 iOS 端还没有弄好。不过有个变通的方法,用 iOS 上的 Potatso lite 以 SOCKS5 客户端的形式连接 台式机 上的 SSRoT 客户端,就可以用起来了。
在台式机上运行客户端, 注意配置文件里的设置
  "client_settings": {
    "server": "12.34.56.78",
    "server_port": 12475,
    "listen_address": "0.0.0.0",
    "listen_port": 1080
  },
监听地址是 0.0.0.0 表明你的手机可以用 连接 socks5 服务器的方式, 连上台式机上的 SSRoT 客户端. 只要在你手机上的代理软件上 的 s5 类型的服务器, 填上 台式机的 IP 和 监听端口 1080 就可以了. 如下图。 





Android
安卓手机上客户端目前没有弄好,也可以用 iOS 类似的方法用起来。 辅助软件是 SocksDroid直接下载apk包 运行起来后如下图。 


在腐烂的网络里,用自己的电脑搭建一片净土

$
0
0
原帖链接:https://matters.news/@Kotri_Lv158/%E5%9C%A8%E8%85%90%E7%83%82%E7%9A%84%E7%BD%91%E7%BB%9C%E9%87%8C-%E7%94%A8%E8%87%AA%E5%B7%B1%E7%9A%84%E7%94%B5%E8%84%91%E6%90%AD%E5%BB%BA%E4%B8%80%E7%89%87%E5%87%80%E5%9C%9F-bafyreihwuzi2yn4sgsveiow655lldu3j6pdm4zg4bhv7xzbftkg6hnmcm4
注:这不是技术贴,只是表达一种生活态度)


翻墙出来的各位想必有时候都会有这种焦虑。万一哪一天,墙不能翻了,怎么办?

无论手里储备多少翻墙工具,也难以完全消除这种恐惧。因为我们内心都知道,网络通断的权力最终是掌握在他们手里。
或许哪一天,他们终于开发了完美的墙,从此所有的境外网站都访问不到了。
或许等不到那一天,他们就开始到处抓翻墙的人,有翻墙软件也不敢翻了。
亦或是,什么时候连境外的网站都被他们污染的乌烟瘴气,充满辱骂和意识形态宣传,变得和现在的墙内没有两样。
回想起来,我也不是一开始就能翻墙的。
墙里的信息污染,早就开始了。贴吧微博的删帖敏感词从建站开始就存在,国外网站被封的越来越多。
污染一天比一天严重,从绿坝到网评员,先审后播到实名认证,从未停下脚步。
而从墙里想要找到翻出来的方法,可谓难如登天。

所以,当我还没有学会翻墙,墙内网络却已经几乎不能用的时候,我采用了更极端的方法,来阻止信息污染影响我的心情。
方法就是在自己的电脑上建立属于自己的互联网。然后,把被污染殆尽的墙内网络隔绝,眼不见为净。
哪怕就是彻底不能翻墙了,这种方法也有效。
首先,在电脑上建立服务器。
需要的软件是Apache, PHP和一个SQL数据库。
数据库当时用的是MySQL,现在流行的好像叫MariaDB和什么PostgreSQL。
好在这不是技术贴,没必要争论谁好谁坏。总之把服务器建起来之后,只要用浏览输入127.0.0.1,就能进入自己建的服务器。

更好的是,只要在电脑上建好网站,自己的手机、平板电脑一类的也可以连进来。
如果电脑拿到公用的环境,其他人也能连进来,比如如果在大学宿舍,相当于建了一个宿舍的内部网络。
而由于这样的网站在外部完全无法发觉,在自己的领地里是真正的自由发言,没有人能审查自机服务器上的言论。

接下来是往上面搭建一些真正的网站。
基本上也就需要三样,论坛、博客和网盘,基本上足以满足自己存放信息的需要。

自己准备在外网(相对于自机网络)发表的文章,先发到自机的博客;比较短的、不重要的,发到论坛;手机和电脑相互传文件,用网盘传递。
由于自己总有备份,不怕作品发到外网被删;在外网论坛被污染到恶心的时候,可以在自己的论坛温暖自己;甚至想要怼人、骂人却怕被封号的时候,自己在自己的论坛里开十几个小号骂个痛快。

要实现这些功能,最简单的就是博客采用Wordpress,网盘采用Nextcloud。
论坛可以用Discuz,但是这个是腾讯的,如果对腾讯背后搞间谍之类的阴谋论比较怕,可以采用Discourse。
当然前文也说了,这不是技术贴,也不需要什么技术贴,看教程做就好了。

网上看到什么有趣却可能被删的观点,赶紧保存网页,放到自己服务器里。
这就相当于用存档网站存了快照,即使原贴被删了,在自己的电脑上还留着一份。
就像区块链一样,保存的份数越多,数据就越安全。
而且无论什么时候需要引用这些观点,只要从地址栏里打开看就可以了。

与此同时我买了一个移动硬盘,2TB。
外网的所有资源,只要见到一律往移动硬盘里装。

当时我在百度云下载了三个星期,下完了自己之前转存的所有文件。
什么游戏啊,小说啊,同人音声啊,本子的,不管有没有用,全往里装。
从此,再也不怕被删资源,不再担心视频被变成教育片而提心吊胆。

在把所有云盘文件存下来的两个半月以后,百度云宣布限速。

现在,这个移动硬盘里已经存了100部以上的游戏。
看到最近一些人为了哪个游戏被封,哪个游戏被整改而悲痛欲绝的样子,我对他们感到庆幸,也感到可怜。
我硬盘里的游戏足够自己玩到世纪末,封删再多我也毫无损失。

这几年互联网公司都喜欢搞一个带云字的,云计算,云盘,云音乐,云游戏。
所谓的云,也就是别人的机器。云计算就是拿别人的CPU算,云音乐就是听别人的歌。
但是在我看来,这一切不过是一个阴谋而已,是一条把你拴在他们的网络里的绳子。
贪图方便用别人的云盘,结果就是资源被删光限速;看别人玩云游戏,随时被封杀禁播。
生活在这样的网络里,表面上一切都方便舒适,实则是如同丧家之犬,任人宰割。

只有自己的地盘才是最安全的,别人的东西终究不靠谱。
最近的动物森林之所以那么火,似乎也是因为能在游戏里建一个自己的家,自己的小岛。
在自己的电脑上搭一个自己的服务器,把数据装进自己的硬盘,就像是在无边无际的互联网汪洋大海里,创建自己的一片小岛,从此成为一个有家的人。


VPN该用哪一款?(经验帖)

$
0
0
ghelper(谷歌上网助手)是一款可以直接访问谷歌、Chrome应用店、Gmail等网站的浏览器插件(免费)。
*付费之后就可以不受限任何网站了。

以Chrome浏览器为例,安装方法如下:
1. 在百度/谷歌搜索ghelper官网后下载文件,会得到一个压缩包,解压;


搜索ghelper


官网下载


解压文件

2. 打开你的Chrome浏览器的“更多工具>扩展程序页面”,或者直接在网址输入:chrome://extensions/



3. 在当前页面,打开“开发这模式”,点击“添加已解压的扩展程序”



4. 选择并加载本次下载包里的“ghelper source”目录



5. 确认后就行了。

1. 此时你需要先注册激活帐号(要用自己的真实邮箱),才可以上谷歌。但是新版Chrome浏览器为保证安全,不支持离线安装的任何插件,所以每次打开Chrome,都会弹出这个界面:


点击取消即刻

这是一个很烦人的问题,要解决这个问题,需要做的是:先启用自己刚刚激活好的谷歌上网助手,确保自己可以上谷歌等网站。然后到Chrome网上应用店找到谷歌上网助手,在线安装该插件。最后再删掉之前离线安装过的插件就行了。
再次输入你刚刚注册激活好的帐号,之后可以根据自己的需要,付费使用(价格好像是16.6一个月)。

2. 正版付费插件的好处:线路数量多且稳定,可自由切换;线路速度快,可以登录YouTube等网站,看视频也没问题(尽管有些卡),基本上所有外网都可以登录;可随时同步自己的Google帐号;有手机线路配置。缺点是免费线路服务有时限,体验过vip服务后,还是需要付费才能继续使用的。

3. 其他浏览器安装方法:
同样到浏览器菜单里找一下“扩展应用程序”等类似字样,然后搜索ghelper或谷歌上网助手,在线安装此插件。如果你的浏览器没有这个插件,就用上述办法,离线安装即可,无需重复其他步骤。

近期安全动态和点评(2020年1季度)

$
0
0
近期安全动态和点评(2020年1季度)
文章目录
★隐私保护
★高危漏洞
★网络与 Web
★移动设备
★言论审查与网络屏蔽
★网络攻击与网络战
★硬件与物理安全
最近两周,没在评论区出没,某些读者以为俺静默了。其实俺这段时间还是很活跃滴——陆续更新了一批电子书到网盘。那些细心的读者,观察俺 Github 页面的更新历史,会意识到这点。


★隐私保护

◇全球疫情导致的隐私问题

《疫情下各国强化监控,健康与隐私不可兼得? @ 纽约时报》
为了对抗现在的大流行病加强监视,可能会为今后进行更具侵入性的窃听打开永久性的大门。公民自由专家说,这是美国人在2001年9月11日恐怖袭击之后学到的教训。
9·11事件发生将近二十年后,执法机构如今掌握着更强大的监视系统,例如细致精确的位置跟踪和面部识别——这些技术可能会被重新用于反移民政策等进一步的政治议程。公民自由专家警告说,公众几乎没有办法挑战这些由国家实施的数字行动。
曼哈顿的非营利组织监控技术监督项目(Surveillance Technology Oversight Project)总干事阿尔伯特·福克斯·卡恩(Albert Fox Cahn)说:“我们很容易陷入这样的情况,即我们授权地方、州或联邦政府采取措施应对流行病,而这一举措从根本上改变了美国公民权利的范围。”
......

大流行病的迅速传播促使各国政府以自身利益为名,制定了一系列数字监视措施,而对其合理性或有效性缺乏各国协同的评估。
在中国的数百个城市,政府要求市民在手机上使用一种软件,可以自动用颜色代码——红、黄、绿——给每个人分类,以显示感染风险。这个软件决定哪些人应该被隔离,或是可以进入地铁等公共场所。但官员们并没有解释系统如何做出这样的决定,市民们也觉得无力挑战它。

《新冠疫情在全球催生独裁和滥权? @ 纽约时报》
在美国,司法部要求国会赋予其更多权力,包括取消对寻求庇护者的法律保护,以及在未经审判的情况下无限期拘禁人民。在共和党和民主党的阻挠下,司法部做出了让步,提交了一份较缓和的提案。
人权组织称,在公民被分心的情况下,政府可能会继续吸收更多权力。他们担忧人们可能意识不到他们让出的权利,等到想收回时已经来不及。
一些紧急法案通过得如此之快,以至于议员和人权组织都没时间阅读,更不用说讨论它们的必要性了。人权活动者也质疑了各国起草冗长立法的速度。
联合国特别报告员奥蕾茵表示,某些政府已为紧急或危机情况“准备好了”一整套所需的权力。他们提前起草了法律,就等“危机出现的机会”,她说。
目前还不清楚危机过后,这些紧急状态法案将何去何从。以往仓促颁布的法律,如9·11袭击后的《爱国者法案》(Patriot Act),在它本来要应对的危机结束后仍然存在着。
随着时间推移,紧急法令会渗透到法律结构中,并成为常态,位于华盛顿的非营利法律国际中心(International Center for Not-for-Profit Law)总裁道格拉斯·鲁岑(Douglas Rutzen)表示,该机构正在追踪大流行期间的新立法和政令。
“塑造紧急权力真的很容易,”鲁岑说。“拆解它们就很难了。”

编程随想注:
再次提醒大伙儿:
不论是在成熟的民主国家,还是在高度专制的国家,都要防范政府滥用公权力。
对任何国家的官僚系统(从高层的政客到基层的公务员),都要保持警惕——因为他们手中握有【公权力】。
借用启蒙思想家【孟德斯鸠】的名言:“一切拥有权力的人,都有滥用权力为自己谋求私利的倾向。”
除了“滥用权力的倾向”,很多政客在滥用权力时,还会为自己找一个非常冠冕堂皇的理由。
当年中共夺权后,毛腊肉说:“为人民服务”
911事件之后,小布什说:“为了反恐”
如今,各国领导人说:“为了防控疫情”
......

◇Chrome 的隐私风险

《Google To Phase Out User-Agent Strings in Chrome @ Slashdot》
编程随想注:
简而言之,Chrome 从 v81 版本开始减低对“User Agent”的支持;到 v85 版本完全不支持 UA 字符串。
(注:关于“User Agent”的讨论,可以参见《如何保护隐私》系列教程的其中一篇)
从表面上看,取消“User Agent”有助于降低“浏览器指纹”的信息量。因此,Chrome 的这个举动是值得表扬滴。
有些同学会感到奇怪:Google 作为一个【在线广告巨头】,为啥会这么好心捏?因为 Google 有了【更好的】追踪手段。请看——

《Google 能通过 Chrome 安装 ID 跟踪用户 @ Solidot》
Google 想要封杀第三方 cookie,想要替换 User-Agent 字符串...Google 会提供很多理由。但最主要的理由它未必会说出来:它有更多的方法跟踪用户。当竞争对手的可用跟踪方法少了之后,它的竞争优势会更大,而 Google 的 Android 和 Chrome 都有无数用户在使用。
在 W3C Technical Architecture Group 上,Google 工程师提出了 User-Agent 的替代。在讨论中,有用户指出 Google 能通过 Chrome 安装 ID 跟踪用户。Chrome 在首次安装运行时会生成 Chrome-Variations 消息头,使用随机选择的种子数生成,如果浏览器禁用了使用统计和崩溃统计,种子数会在 0~7999 之间选择。Google 称这个消息头不包含任何身份信息,但它可以组合收集的其它信息创造一个独特 Chrome ID,即使用户使用隐身模式,这个 ID 也不会发生变化。

编程随想注:
关于 Chrome 的问题,俺已经聊过很多次了。比如这篇《弃用 Chrome 改用 Firefox 的几点理由》
对于重度的 Google 用户,再次唠叨一下:
你越是 Google 的重度用户,你就越【不应该】使用 Chrome 作为你的日常浏览器。对于 Google 的重度用户,Google 已经能通过网站服务,收集到你的很多个人信息。而 Chrome 作为【本机软件】,又可以从【操作系统】层面进一步收集信息。
这两者结合起来,Google 对你的了解就太多了。

◇Brave 浏览器对隐私的保护——浏览器指纹【随机化】

《確保用戶隱私,Brave 提供隨機瀏覽器指紋技術 @ iThome》

编程随想注:
由于隐私意识的提升,对 cookie(尤其是“第三方 cookie”)的限制越来越严格。因此,商业网站和广告商越来越多地依赖【浏览器指纹】来追踪用户。
为了对抗“浏览器指纹”,Firefox(以及 Tor Browser)已经做了很多努力——尽量降低浏览器指纹的【信息量】。
(注:关于“浏览器指纹的信息量”,在《如何保护隐私》系列教程的其中一篇有专门介绍)
而另一款专注于隐私保护的“Brave 浏览器”计划在未来版本提供【浏览器指纹随机化】。这是一个完全不同的思路——它不是为了降低“指纹的信息量”,而是每次都产生【随机的指纹】。该功能会在每一个浏览器会话(session)产生不同的“浏览器指纹”。因此,当你多次访问同一个网站,网站服务端收集到的“浏览器指纹”会完全不同。如此一来,网站端就搞不清楚:是不是同一个人 :)
俺估计,不久的将来,Tor Browser 也会有这方面的举措。
关于“浏览器指纹”的小知识:
网站之所以能通过“浏览器指纹”来追踪用户,关键在于“浏览器指纹”具有如下两个特点:
1、独特性
2、稳定性
降低“浏览器指纹”的【信息量】是为了破坏其“独特性”;而随机化“浏览器指纹”是为了破坏其【稳定性】。
关于“随机化”这招,当年俺写《如何保护隐私》系列的时候,提到过类似的思路——随机化伪装 User-Agent 字符串。

◇新浪微博5亿用户数据泄漏

《Hacker Selling Data of 538 Million Weibo Users @ Slashdot》
《5.38亿微博用户信息泄露,暗网只售不到1万元 @ InfoQ》
《工信部就新浪微博 App 数据泄露问题开展问询约谈 @ 人民网》


★高危漏洞

◇Windows 加密组件的高危漏洞

《微软提前释出补丁修复加密组件高危漏洞 @ Solidot》
微软本周二将释出例行安全更新,而 KrebsOnSecurity 援引知情人士的消息报道,微软将释出补丁修复一个影响所有版本 Windows 的加密组件高危漏洞。而在例行更新释出前,微软就悄悄向美国军方机构和管理互联网基础设施的高价值客户释出了补丁,为防止漏洞信息泄露,微软还要求这些机构签署了保密协议。消息源称,漏洞存在于加密组件 crypt32.dll 中,该模块用于处理 CryptoAPI 中的证书和加密消息函数。它存在高危漏洞将会影响到许多 Windows 重要功能,包括 Windows 桌面和服务器之间的验证,敏感数据保护,以及第三方应用和工具。

编程随想注:
该漏洞(CVE-2020-0601)位于“验证椭圆曲线加密(ECC)”的函数中。ECC 算法本身【没】缺陷,是 crypt32.dll 这个模块对 ECC 算法的实现没做好。漏洞由 NSA(美国国安局)发现,然后上报给微软。
攻击者可以利用这个漏洞,伪造一个貌似合法的数字签名。比如说:把某个木马伪装成带有合法数字签名的安装包,或者利用这个漏洞对加密通讯进行“中间人攻击”,或者搞一个钓鱼网站 ......

◇Windows 字体模块的高危漏洞

《微软警告黑客正在利用一个 Windows 0day 漏洞(Adobe Type Manager) @ Solidot》
微软警告黑客正在利用一个 Windows 0day 漏洞去执行恶意代码。漏洞存在于 Adobe Type Manager Library 中,这个 DLL 文件被应用广泛用于管理和渲染 Adobe Systems 的字体。它由两个代码执行漏洞构成,可以通过不正确处理 Adobe Type 1 Postscript 格式的恶意主字型触发。攻击者诱骗目标打开恶意文档或在 Windows 预览面板浏览文件来利用该漏洞。在补丁释出前,微软建议用户禁用 Windows Explorer 的 Preview Pane 和 Details Pane,或禁用 WebClient 服务,重命名 ATMFD.DLL。采用这些权益方法可能会导致其它问题。

编程随想注:
这个漏洞的危险之处在于——它可以通过“Windows 资源管理器”的【预览】功能触发。
假设攻击者通过某种方式(邮件、IM、网站下载 ......),给了你一个恶意的【数据文档】。当你在“资源管理器”中选中该文件,“资源管理器”就会在右侧的“预览窗格”显示该文件的内容。这时候,漏洞就已经触发了。
换句话说,你仅仅只是【选中】该文件,还没有用任何软件打开它,攻击代码就已经激活了。
提醒一下:
很多网民有个【误解】——误以为只有“可执行文件”才可以发动攻击/入侵。实际上【数据文件】也可以。前提是,处理数据文件的软件本身有漏洞(尤其是“可执行漏洞”),然后攻击者就可以针对该漏洞,精心构造一个特殊的数据文件,从而人为触发这个漏洞。
类似的案例,俺在《如何防止黑客入侵》系列教程的其中一篇介绍过(当时俺举了“浏览器渲染图片”的例子)

◇Windows SMB(Server Message Block)模块的高危漏洞

《Microsoft Patches SMBv3 Wormable Bug That Leaked Earlier this Week @ ZDNet》

《微软释出紧急补丁修复 SMB 漏洞 @ Solidot》
本周早些时候,微软披露了 Server Message Block(SMB)v3.1.1 协议中的一个漏洞 CVE-2020-0796,允许攻击者在目标服务器和终端用户计算机上远程执行代码。SMB 服务被用于在本地和互联网上共享文件、打印机和其它资源,漏洞影响 Windows 10 v1903 和 1909,以及 Windows Server v 1903 和 1909。漏洞涉及到一个内核驱动的整数溢出和下溢,攻击者可利用特质恶意包去触发整数溢出或下溢。微软现在释出了紧急补丁 KB4551762 修复该漏洞。

编程随想注:
很多 Windows 用户喜欢通过【共享目录】的方式跨主机传输文件,这个习惯不好。
“共享目录”这个功能是由 Windows 的某个服务(service)提供滴。这个服务本身就以【管理员权限】运行,而且它在历史上已经曝光了很多高危漏洞。这次曝光的 SMB 漏洞只不过是其中之一。也就是说,未来很可能还会再爆别的漏洞。
如果这个服务出现了【代码执行】的漏洞,攻击者攻击之后就能获得【管理员权限】(然后就可以干很多事情)。

◇Firefox 高危漏洞

《Mozilla Foundation Security Advisory 2020-11 @ Mozilla》

编程随想注:
Mozilla 在本月初(注:4月初)发布 Firefox 74.0.1 & Firefox ESR 68.6.1 版本,修复两个高危 0day 漏洞(编号:CVE-2020-6819 & CVE-2020-6820)。
Mozilla 没有公布太多漏洞细节,但两个漏洞已经被用来发动针对性攻击。因此,那些使用 Firefox 的同学要尽快升级。

《OpenBSD 建议 Firefox 用户切换到 ESR 版本 @ Solidot》
Firefox 本周早些时候(注:1月初)紧急释出更新 Firefox 72.0.1 和 Firefox ESR 68.4.1,修复了一个正被利用 0day 漏洞。OpenBSD 开发者表示他们不会更新稳定版分支,建议其用户切换到 ESR 版本(扩展支持版)。
OpenBSD 开发者给出的理由,由于依赖问题(如 cbindgen 和 rust),给 Firefox 打补丁太复杂了,所以稳定版本不会得到更新,因此正被利用的漏洞仍然存在,但 ESR 版会得到更新,开发者建议用户切换到 ESR 版本。

编程随想注:
俺在如下博文中建议:注重安全性的 Firefox 用户,应该使用【ESR】版本。并分析了 ESR 的安全优势。
《基于安全考虑,如何选择及切换 Firefox 版本?》

◇sudo【又】爆出高危漏洞

《Sudo 漏洞让非特权用户获得 root 权限 @ Solidot》
UNIX 和 Linux 操作系统广泛使用的工具 Sudo 又发现了一个高危漏洞,这个漏洞在启用了 pwfeedback 的系统中很容易利用。漏洞编号 CVE-2019-18634,是一个堆栈缓冲溢出 bug,影响 v1.7.1 到 v1.8.25p1,能通过管理员权限触发,而在启用了 pwfeedback 的操作系统中,该漏洞让非特权用户很容易通过缓冲溢出获得 root 权限,不需要攻击者有 Sudo 使用权限。在 Sudo 上游版本中,pwfeedback 没有默认启用,但在下游发行版如 Linux Mint 和 Elementary OS 中,pwfeedback 被默认启用了。Ubuntu 不受影响。该漏洞是在2009年被引入到 Sudo 中的,直到2018年释出的 v1.8.26b1,受影响的系统应尽可能快的更新到 v1.8.31。
编程随想注:
3个月前的那篇《近期安全动态和点评》,俺已经聊过 sudo 的另一个高危漏洞。
在不到半年时间内,sudo 连续爆了两个非常致命的漏洞——对攻击者而言,这2个漏洞很容易利用,而且都能实现【提权】。
这样的苗头挺危险,很可能预示着——sudo 这个软件包内部还有其它一些高危漏洞没被发现。
有鉴于此,你或许要考虑:【不装或卸载】这个软件包。在需要切换用户权限时,改用 su 命令。当然啦,sudo 命令在很多场合比 su 命令更方便。因此,你需要作出一些取舍。

◇OpenWRT 的高危漏洞

《OpenWRT 使用 HTTP 连接传输更新 @ Solidot》
安全研究员报告,流行的路由器发行版 OpenWRT 容易受到远程代码执行攻击,原因是它的更新是通过未加密渠道传输的,其数字签名验证很容易绕过。OpenWRT 被广泛用于路由器和其它嵌入式系统,安全研究员 Guido Vranken 发现它的更新和安装文件是通过 HTTP 连接传输的,容易受到中间人攻击,攻击者可以用恶意更新文件去替换合法更新文件。除此之外,它的数字签名检查和验证也很容易绕过,验证函数 checksum_hex2bin 存在 bug,在输入字符串前加空格可绕过检查,该 bug 是在 2017 年 2 月引入的。组合这两个弱点攻击者可以向设备发送恶意更新并自动安装。OpenWRT 维护者已经释出了更新部分修复了问题。

编程随想注:
上述安全漏洞会影响到那些玩“路由器翻墙”的同学。
OpenWRT 以【明文】的 HTTP 协议进行升级,这已经很冒险了;然后“验证机制”还存在缺陷 :(
如果攻击者能监控你的网络传输,以上两点堪称完美组合。

◇Tomcat 的“Ghostcat 漏洞”

《Ghostcat 漏洞影响过去 13 年发布的所有 Apache Tomcat 版本 @ Solidot》
Ghostcat 漏洞影响过去13年发布的所有 Apache Tomcat 版本,该漏洞允许攻击者控制系统。Ghostcat 是中国安全公司长亭科技发现的,存在于 Tomcat AJP 协议中,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

编程随想注:
这个主要影响 Web 服务端。与普通用户没啥关系。


★网络与 Web

◇WebAssembly 的安全问题

编程随想注:
不晓得“WebAssembly”的同学可以先看维基百科的“这个页面”。
这玩意儿已经在去年(2019)成为 W3C 的标准。也就是说,它成为继“HTML、CSS、JS”之后的第4种“标准化的 Web 语言”;也是继 JS 之后的第2种“标准化的 Web 编程语言”。
有了它,程序员可以使用其它编程语言编写 Web【前端】应用,然后使用编译器把代码编译成 WebAssembly 并部署到网站上。
它的【好处】至少包括:
1、要想编写(标准化的)Web 客户端应用,可以使用各种语言(以前只能用 JS)
2、WebAssembly 类似于某种“字节码”,浏览器执行它的速度比执行 JS 要快很多
有好处当然也有坏处:因为 WebAssembly 是面向机器,而不是面向人。要理解某个页面上的一坨 WebAssembly 代码是用来干啥,就很困难——“理解 WebAssembly 代码”比“理解混淆后的 JS 代码”还要难。
因此,某些动机不良的人,就会使用 WebAssembly 来干一些动机不良的事情。具体参见如下这篇报道:
《Half of the websites using WebAssembly use it for malicious purposes @ ZDNet》
two categories of Wasm code stood out as inherently malicious.

The first category was WebAssembly code used for cryptocurrency-mining. These types of Wasm modules were often found on hacked sites, part of so-called cryptojacking (drive-by mining) attacks.

The second category referred to WebAssembly code packed inside obfuscated Wasm modules that intentionally hid their content. These modules, the research team said, were found part of malvertising campaigns.


★移动设备

◇Bruce Schneier 谈 5G 的安全性

编程随想注:
Bruce Schneier 是信息安全领域的大牛(搞密码学的应该都知道他)。以下是他的一篇博文,谈“5G 网络的安全问题”。
《5G Security @ Schneier》
他开篇就点到了咱们天朝(中国公司会迫于政府压力,在网络设备中内置后门)。然后他又说:即使完全禁止中国公司参与 5G 网络,依然是【不够】滴。
在文章的后续部分,他指出了 5G 网络可能会有如下三大问题:
问题1——5G 标准太复杂
首先,这会导致软件的实现也太复杂,软件代码一旦复杂,潜在的漏洞就更多,也更难发现/修复。
其次,这会导致软件对标准协议的实现不够完全(只是【部分实现】了协议),同样会导致安全问题。
问题2——向后兼容性
熟悉网络攻击的同学,应该听说过【降级攻击】。这类攻击经常出现在“TLS/SSL、Wi-Fi、移动通讯网络”之类的场景中。
由于 5G 网络必须大量兼容 4G 协议,攻击者可以采用某种技巧,诱导设备降级到 4G 协议,然后再利用 4G 协议的弱点。
问题3——5G 标准中,很多“安全选项”不是强制滴
这个要由“标准委员会”来背锅。由于标准中的一些安全选项属于【可选】选项(非强制性),设备制造商通常不去实现它们。
(对设备制造商而言)实现的选项越少,开发就越简单,开发成本也越低。另外,很多设备制造商还面临竞争压力,为了让产品尽快上市,他们倾向于不完成那些【可选】的协议选项。

◇不靠谱的指纹解锁

《Attackers Can Bypass Fingerprint Authentication With an 80 Percent Success Rate @ Slashdot》

《Fingerprint cloning: Myth or reality?》
What's new? 3-D printing technologies made it possible for anyone to create fake fingerprints. But not only that it also made it possible, with the right resources, to be done at scale. Moreover, with the democratization of the usage of fingerprint authentication, the impact of biometric data copies is even bigger than in the past. We applied our threat models to mobile phones, laptops, padlocks and USB pen drives.

How did it work? We created copies using three different methods, which were defined according to the defined threat profiles. A mold was created using a 3-D printer, which was then used to recreate the fingerprint with textile glue.

So what? Fingerprint authentication is now in common usage, on all kinds of devices. However, its reliability is not the same on all devices. Organizations need to be aware that the security of fingerprint authentication is not secure, despite common assumptions. This means that depending on the threat profile of each user, it may not be advisable to use it. In reality, some companies have the same reliability as they had six years ago. This means that with the advances of technologies like 3-D printing, it's now even easier to defeat them.

编程随想注:
不光是“指纹解锁”不靠谱,“刷脸解锁”也不靠谱。更进一步,汽车的“无线钥匙”也不靠谱(已经有很多破解的案例)。
这几样技术的共同点在于——它们都提供了“便捷性”,而代价是牺牲了“安全性”。
很多时候,你需要进行某种【取/舍】。

◇Google 开始打击“对Android 地理位置的滥用”

《Google 将限制 Android 应用在后台访问地理位置数据 @ Solidot》
Google 宣布打击滥用系统权限访问不必要地理位置数据的 Android 应用。从今年五月开始,Google 将要求所有 Android 应用开发者更新应用,Android 应用只有在需要地理位置信息的情况下才能请求访问此类信息。Google 将逐个审查每一个应用,如果应用请求访问地理位置数据但不在应用中立即使用 Google 会将其从应用商店 Play Store 下架。Google 表示会审查自己的应用。此举旨在打击悄悄收集地理位置数据的应用,此类的后台地理位置数据在收集后会出售给分析公司和广告商。从8月3日起,Google 计划评估每一个新递交的应用,检查是否请求访问后台地理位置数据,是否确实需要这一数据才能工作。


★言论审查与网络屏蔽

◇从“屏蔽”到“传输质量劣化”

《政府如何限制互联网网速 @ Solidot》
相比切断互联网,限制互联网网速更隐秘更难以察觉和确认。印度去年切断了克什米尔邦的互联网接入,至今没有完全解除。此事广为人知。
但没有多少人知道的是约旦政府限制了 Facebook live 直播服务,如果它屏蔽 Facebook 那么确认起来很简单,如果它让网民难以直播视频,那么网民可能只会以为某个线路发生了故障。
政府有很多方法去限制网速:带宽管理/流量控制和策略;QoS(Quality of Service) 可以有效的降低特定通信协议的流量;Inline DPI(Deep Packet Inspection) 可用于引入延迟;NIC (Network Interface Card) /端口分区 可用于影响所有流量;路由寻径可路由流量通过更长或容量更低的网络端点去限制网速。

编程随想注:
如今朝廷对付 Github 的手法也类似。前几年俺在博文及评论区聊过:GFW 会故意产生“传输质量劣化”的效果。
另外,当年还没有彻底封杀 Gmail 之前,GFW 也用这招来对付 Gmail。

◇俄罗斯政府 PK Telegram

《俄罗斯和 Telegram 之间的封锁和反封锁 @ Solidot》
在混沌俱乐部年会上,软件开发者 Leonid Evdokimov 回顾了俄罗斯政府和流行消息应用 Telegram 之间史诗性的封锁和反封锁。
2018年4月,因为 Telegram 拒绝遵守法庭命令交出加密密钥,俄罗斯政府下令对其进行屏蔽,第一天有400万 IP 被封,第二天有1600万 IP 被封,最多有1900万 IP 被封。俄罗斯封掉了云服务商如 Amazon、Google、Microsoft、DigitalOcean 和 Hetzner,涉及了 0.5% 的 IP 地址空间,试图向施压云服务商,让 Telegram 成为这些企业不受欢迎的人。俄罗斯还不小心封掉了本国互联网服务如 VKontakte 和 Yandex 的 IP 地址。
尽管政府否认,但附带损伤是巨大的。到4月底封杀力度开始减弱,到6月8日封杀的 IP 地址减少到400万,而在期间 Telegram 一直能在俄罗斯境内工作。俄罗斯被观察到使用主动探测去识别代理服务器,主动探测已经日益成为一种常用的监测和识别代理服务器的方法。

◇字节跳动旗下的 TikTok 进行歧视性审查

《TikTok 告诉内容审查团队过滤“丑人/穷人/残疾人”上传的视频 @ Solidot 》
The Intercept 援引内部文件报道,流行短视频应用 TikTok 明确指示内容审核团队过滤“丑人、穷人和残疾人”上传的帖子。文件还要求内容审核团队审查直播中的政治言论,惩罚损坏国家荣誉或被禁止直播的国家机构如警察的用户。
今天的社交平台都会向新用户推荐内容,但内容推荐算法通常是一个秘密。TikTok 文件的原始版本是中文,之后翻译到英文,这些指示与内容推荐有关。它建议审核团队移除体型异常、过胖或过瘦、面部表情丑陋或面部畸形的用户内容,因为人长得难看视频也没有多少吸引力,不值得推荐给新用户。文件还建议:移除拍摄环境简陋不吸引人的视频。
TikTok 发言人承认文件的真实性,但表示大部分指示要么不再使用要么从未真正使用过。直播政策文件是在2019年创建的,至少在2019年使用过。


★网络攻击与网络战

◇利用【软件下载站点】传播木马

《国内下载站提供的开源编辑器被发现捆绑了恶意代码 @ Solidot》
安全公司报告,国内下载站西西软件园提供的开源编辑器 Notepad++ 被发现捆绑了恶意代码,而这个恶意脚本代码与勒索软件 WannaRen 有关联,该勒索软件可能通过国内下载站进行传播。在中文搜索引擎百度搜索 Notepad++,排在前几位的都是下载站,而不是官网 notepad-plus-plus.org,如果下载站的版本存在恶意代码,那么可能会有很多中国用户受到影响。

《2345 旗下的下载站被发现传播木马 @ Solidot》
安全公司火绒报告:
2345 旗下“多特下载站”的下载器(所谓的“高速下载”)正在实施传播木马程序的恶意行为。用户下载运行该下载器后,会立即被静默植入一款名为“commander”的木马程序,该木马程序会在后台运行,并根据云控配置推送弹窗广告和流氓软件。即使用户关闭下载器,“commander”仍然会一直驻留用户系统。同时,该下载器还会释放病毒劫持用户浏览器首页,用以推广广告程序。
截至目前,被“commander”木马程序静默推广的软件共有9款,包括趣压、拷贝兔、小白看图等,且这些被静默安装的软件与“commander”木马程序系同源流氓软件。它的一个模块被发现还检测当前 IP 所在城市,被检测的城市包括:北京、上海、广州、珠海、杭州、西安、马鞍山、苏州、武汉、天津、合肥。

编程随想注:
那些使用 Windows 的同学,如果你想用某款第三方软件,要注意如下几点:
1、只用那些成熟度足够高,而且口碑足够好的;
2、总是从【官网】下载;
3、(即使从官网下载)下载完成之后,再校验一下 exe 的数字签名。
有些软件虽然 exe 没有自带数字签名,但会在官网公布该 exe 的散列值(哈希值)或者 exe 文件对应的数字签名文件,以让你进行校验。
如果某个软件既没有自带数字签名,官网页面也没提供任何校验信息,你就得怀疑它是否符合“第1条”(成熟度是否足够高)
引申阅读:
《扫盲文件完整性校验——关于散列值和数字签名》

◇针对 Shadowsocks 的攻击

《奇虎 360 研究员披露 Shadowsocks 流密码重定向攻击 @ Solidot》
奇虎 360 的一位安全研究员披露了流行 SOCKS5 代理 Shadowsocks 的流密码重定向攻击漏洞。流密码是一种对称加密算法,加密和解密双方使用相同伪随机加密数据流作为密钥,明文数据每次与密钥数据流顺次对应加密,得到密文数据流。流行的流密码算法包括 ChaCha、RC4、A5/1、A5/2、Chameleon、FISH、Helix 等。
研究人员发现 Shadowsocks 协议存在漏洞,会破坏流密码的保密性。利用重定向攻击,被动攻击者可以轻松解密所有 Shadowsocks 的加密数据包。中间人攻击者还能实时修改流量,就好像加密根本不存在。受影响的版本包括 shadowsocks-py、shadowsocoks-go 和 shadowsocoks-nodejs;shadowsocks-libev 和 go-shadowsocks2 不受影响,研究人员还建议使用 AEAD 加密算法。漏洞是在2018年12月发现的,2019年3月发布了概念验证攻击。

编程随想注:
看到这个新闻,俺又要再次唠叨【基于 Tor 的双重代理】(关于这招,俺已经唠叨了不止5年)。
以 Shadowsocks 为例,如果你使用 Tor over Shadowsocks 的方式,即使 Shadowsocks 的协议本身出现某种漏洞(比如上述这种),导致攻击者破解了 Shadowsocks 的流量;攻击者看到的也只是【强加密】的 Tor 流量。换句话说,攻击者依然【看不到】你真实的上网流量。
另,
某些网友猜测:去年(2019)六四前后,很多人抱怨 Shadowsocks 失效。可能与上述漏洞有关。
引申阅读:
在《如何隐藏你的踪迹,避免跨省追捕》系列教程的其中一篇,介绍了【多重代理】的玩法。

◇SIM 卡劫持攻击

《SIM Swappers Are Using RDP To Directly Access Internal T-Mobile, AT&T, and Sprint Tools @ Slashdot》
《Academic Research Finds Five US Telcos Vulnerable To SIM Swapping Attacks @ Slashdot》
《PayPal and Venmo Are Letting SIM Swappers Hijack Accounts @ Slashdot》
《一文看懂巨鲸被盗2亿元数字货币始末,找回几无可能 @ 36氪》

编程随想注:
在半年前(2019年3季度)的博文,俺已经提到过这种攻击手法。当时 Twitter CEO 的推特帐号被劫持,攻击者用的就是这招。从上述几篇报道来看,如今这种攻击越来越普及(越来越危险)。
这类攻击的危险性在于——如今很多帐号都绑定手机,并且可以通过手机来【重置密码】。因此,攻击者一旦实现了【SIM 卡劫持】,就可以控制你的【手机号】,进而控制所有绑定到该手机的网络帐号。
关于这种攻击手法的【原理】,请参见如下博文:
《近期安全动态和点评(2019年3季度)》

◇Github 又被朝廷盯上了

《微软 Github 疑被中间人攻击 @ 月光博客》
今天(注:3月26日),有很多中国网民反馈,从中国的 IP 访问知名代码托管平台微软 Github.com、Github.io、Github Pages 等网站会加载一个无效的证书,使用国外的 IP 访问则加载正常的证书,疑似该域名遭到了中间人攻击。
......

目前经测试 DNS 系统解析是完全正常的,例如,pages.github.com 的 IP 地址解析并未出现问题,从中国地区解析的 IP 为185.199.111.153,是属于 Github 的 IP 地址。受影响的主要是部分地区用户但涉及所有运营商。
由于攻击者使用的自签名证书不被所有操作系统以及浏览器信任,因此用户访问这些网站时可能会出现安全警告。

编程随想注:
“中间人攻击”洋文称作“MITM”,维基百科的介绍在“这里”。
根据某些网友当天的网络分析,这次事故很大可能是 GFW 搞的。类似的情况已经不是第一次出现了(前几年也有,也是短暂出现了一下)
不排除 GFW 在进行某种 MITM 的技术尝试,或者在尝试的过程中出现了某种失误,导致上述现象。
这次事件给大伙儿敲了警钟——
很多使用 Github 的网民发现异常是因为——浏览器显示“证书警告”。
浏览器显示“证书警告”是因为——这次攻击使用的是一个随便生成的 CA 证书(浏览器当然不认可这种证书)
试想一下:
如果 GFW 真心要搞 MITM 攻击,它会使用一个很逼真的(看起来合法的)CA 证书;如此一来,浏览器就【不】显示警告信息。基本上很难察觉。
对于普通网民而言,应该尽量把操作系统中(以及浏览器中)那些【不靠谱的 CA】颁发的证书清理干净。所谓“不靠谱的 CA”,除了俺之前专门写博文点名批评的两个老流氓(CNNIC & 沃通/WoSign),至少还包括:【所有】位于朝廷具有司法管辖权的地区的 CA 机构。也就是说:处于“大陆、香港、澳门”的 CA 机构都【不能】信任。
“清理流氓 CA”的招数有个缺点——容易漏网。因为每隔几年,可能又会有某个天朝的 CA 机构的根证书被加入到“Windows 或 Android 或 iOS 或 Mozilla”的信任列表中。如果你对安全性的要求【非常高】,应该采用俺在《近期安全动态和点评(2019年1季度)》中介绍的【证书白名单策略】。考虑到某些读者比较健忘,俺把当时的招数再重新贴出来:
你在某个【专用】的浏览器实例中操作特别重要的帐号(也就是说,这个实例只操作这个帐号,不访问其它网站)然后在该实例中采用【证书白名单策略】——只留下这个帐号对应网站所需的 CA 证书,其它证书全部禁掉。当然啦,你还需要保留一个【通用】的实例,用来进行日常的上网浏览。如此一来,假设你有 N 个重要帐号,需配置 N + 1 个实例。
浏览器的选择:
Chrome 和 Firefox 都可以创建“多实例”,但 Chrome 有个【缺点】——它用的是操作系统的证书。因此,Chrome【无法】使用刚才介绍的招数。
相比之下,Firefox 使用的是【自带证书】。因此,你可以创建多个 Firefox 实例,并通过配置让每个实例的证书都采用各自的【白名单策略】。

◇“俄罗斯电信”也开始玩【流量劫持】

《俄罗斯电信劫持了 Google 和 AWS 的流量 @ Solidot》
上周,两百多家 CDN 和托管商的流量遭到了国有的俄罗斯电信公司的劫持。受影响的公司包括了 Google、Amazon、Facebook、Akamai、Cloudflare、GoDaddy、Digital Ocean、Joyent、LeaseWeb、Hetzner 和 Linode。俄罗斯电信公司是通过 BGP 路由通告劫持了不属于它的网络流量。BGP 劫持未必都是恶意的,很多时候都是因为人为失误导致的。同一机构频繁发生路由劫持则视为可能有恶意。最大的电信公司中国电信频繁发生过 BGP 路由劫持事故。俄罗斯电信也发生过多次。

编程随想注:
在《近期安全动态和点评(2019年3季度)》中,俺正好介绍“中国电信劫持美国国内的互联网流量”。如今“俄罗斯电信”的手法与“中国电信”如出一辙。
关于“流量劫持”的【原理】,当时俺分享了一篇文章。把那篇文章以及中文翻译,再次贴出(如下)
《China Telecom's Internet Traffic Misdirection @ Oracle dyn》
《甲骨文:中国电信误导国际互联网流量(译文) @ Submarine Networks》

◇跨太平洋光缆的变迁

《美已视中港为“一体”,禁止美台高速网缆与香港连通 @ RFI/法广》
根据《华尔街日报》报道,美国官员准许 Alphabet Inc 旗下的谷歌(Google)启动与台湾连接的高速互联网光缆,但不能与香港连通,理由是存在国家安全隐患。报道指这项决定凸显出美中之间越来越紧张的关系。
......

报道指出,这项决定可能会终结香港作为美国互联网电缆首选目的地的主导地位,并危及正在进行的几个项目,其中包括一条由面书(Facebook)支持的连接洛杉矶和香港的光缆,以及一个由谷歌支持的连接香港和美国关岛的项目。
《华尔街日报》的报道指,美国司法部周三宣布决定时说:“许可美国和香港直接连通光缆存在重大风险,有可能严重危害美国国家安全和执法利益。”这一决定得到了美国国土安全部和国防部的支持。

中国政府部门禁止包括面书和谷歌在内的一些美国公司在中国大陆运营,但香港却可以不受限制地接入互联网,从而成为想和中国大陆建立联系的跨国公司的中转站。
华尔街日报指出,然而随着北京方面对香港的立场趋于强硬,美国官员对香港的态度也发生了变化。几个月以来,香港人一直在抵制北京方面推动香港与大陆融合的努力。
华盛顿正在转向台湾这个自治岛屿,虽然北京方面宣称台湾是中国的一部分,但美国通过军售和非官方政治联系向台湾提供支持。

编程随想注:
这条光缆原计划要从美国加州一直铺设到香港,如今只到台湾。
结合刚才提到的“流量劫持”以及最近几年越来越升温的“中美对抗”,你或许能理解——为啥美国佬禁止新的太平洋光缆部署到香港和大陆。


★硬件与物理安全

◇冷战时期的物理安全

《苏俄如何监听美国大使馆的打字员 @ Solidot》
最近出版的一本新书回顾了冷战期间美国和苏联之间的谍报战,讲述了一段尘封已久的供应链攻击案例:神秘的苏联工程师巧妙的替换 IBM 打字机零部件去监听美国大使馆打字员的打字内容,而 NSA 的电机工程师费了多年时间揭开了这一秘密。
1970年代末有多名美国间谍遭到逮捕,但美国情报界不知道他们的身份是如何曝光的。首次突破来自于在(美国驻)莫斯科大使馆无意中发现的假烟囱腔内的八木天线,但天线的用途和无线发射机的下落仍然不明。NSA 工程师 Charles Gandy 对此展开了多年的寻找,他得到了里根总统的授权,将大使馆内的所有电子设备都安全打包运回美国。每个设备都被拆开,用 X 射线进行扫描。在进行了数万次扫描之后,技术人员在一台 IBM 打字机的 on/off 开关内发现了一个小线圈,Gandy 认为它充当了降压器为打印机内的东西供应低电压电。他最终发现,打印机内的有多个零件被替换了,一个外形相同的固体铝棒里面是空的,被放入了一个电路板和六个磁强计,磁强计能感知按键的移动,按键的信息被储存加密然后发送出去。

编程随想注:
上述这个已经是陈年往事。分享它是为了让大伙儿意识到【物理安全】的重要性——如果攻击者能够接触到你的电脑,并且在上面动手脚;那么,软件层面的任何防范都形同虚设。
在之前的《近期安全动态和点评(2019年2季度)》中提到了【邪恶女佣】(evil maid attack)的攻击场景。这个术语就是用来描述此类攻击手法。

◇Intel 芯片的“CSME 漏洞”

《Intel CSME bug is worse than previously thought @ ZDNet》

《英特尔 CSME 漏洞比想象中的要严重 @ NOSEC》
这个漏洞被标记为 CVE-2019-0090,影响了英特尔的 Converged Security and Management Engine 安全管理引擎,以前称为 Management Engine BIOS Extension(Intel MEBx)。
CSME 是所有最近的英特尔 CPU 都具有的一个安全特性。它被认为是在基于英特尔的平台上所有其他英特尔技术和固件的“加密基础”。
......

CSME 是机器中最早开始运行的系统之一,负责对基于英特尔的计算机上装载的所有固件进行密码验证和授权。
例如,CSME 负责加载和验证 UEFI BIOS 固件和 PMC 固件(电源管理控制器)以及管理芯片组电源的组件。
CSME 也是其他 Intel 技术的“加密基础”,如 Intel EPID(增强隐私 ID)、Intel 身份保护、任何 DRM(数字版权管理)技术或基于固件的 TPMs(可信平台模块)。
换句话说,CSME 是运行在英特尔芯片组上的所有其他技术的“可信之本”。
......

在新发表的一项新研究中,Ermolov 表示,攻击者可以利用这个漏洞来恢复芯片组密钥,这是 root 加密密钥,可以让攻击者访问设备上的一切。

编程随想注:
从上述介绍可以看出——CSME 是 Intel 芯片硬件体系的【信任链之锚】。
据初步的研究结果,该漏洞可以被【本地利用】。也就是说,如果攻击者获得了在本地执行代码的机会,并且能够“提权”,就有可能利用该漏洞。
在英特尔硬件体系中,UEFI 的信任链也是基于 CSME 之上。也就是说,UEFI 的安全性并没有某些同学想象的那么好。

◇Intel 芯片的“Zombieload 漏洞”

《Intel Is Patching Its 'Zombieload' CPU Security Flaw For the Third Time》

编程随想注:
关于这个 CPU 漏洞,之前的某期《安全动态和点评》已经提到了。
为了修复该漏洞,Intel 在去年(2019)5月和11月两次放出补丁,但都【没】彻底修复。今年(2020)1月份,英特尔不得不承认:之前的补丁不够完善,攻击者仍然能利用 Zombieload 漏洞;然后发布了第三次补丁。
在《近期安全动态和点评(2019年4季度)》一文中,俺引用了 Linux 内核维护者 Greg Kroah-Hartman 的一次演讲(如下)
稳定版内核维护者 Greg Kroah-Hartman 在欧洲开源峰会上发表主题演讲时指出,英特尔芯片的安全问题将会存在很长时间。这些被称为 MDS、RDDL、Fallout 和 Zombieland 的芯片漏洞从某种程度上说都是相同的问题或者说是相同问题的不同变种,但解决方法各不相同。举例来说,RIDL 和 Zombieload 漏洞能跨应用程序、虚拟机和安全区域(secure enclaves)窃取数据,讽刺的是:英特尔软件防护扩展(SGX)在芯片内本是保护数据安全的,结果本身却有很多漏洞。
Kroah-Hartman 称:为了修复每一个曝出的问题,你必须同时给 Linux 内核、CPU BIOS 和微码打上补丁。这不只是 Linux 的问题,任何操作系统都面临相同的问题。他承认 OpenBSD 给出了解决此类漏洞的最近解决方案:关闭英特尔处理器的超线程,克服带来的性能损失。Kroah-Hartman 称,你必须选择性能还是安全,而这里不存在好的选择。
当时 Greg Kroah-Hartman 提到了“关闭英特尔处理器的超线程”,这是一种玩法。
另一种玩法是:改用 AMD 处理器的电脑。当然啦,AMD 处理器也有不少安全问题(下面会提到),但 AMD 的安全问题比 Intel【少】很多。
更进一步,善于折腾的同学,甚至可以考虑那些【非】x86 架构的处理器(比如 ARM 之类的)。

◇针对 Intel 芯片的“LVI 攻击”

《Intel CPUs vulnerable to new LVI attacks @ ZDNet》

《英特尔处理器新漏洞 Load Value Injection @ Solidot》
研究人员披露了名叫 Load Value Injection(LVI) 的英特尔处理器新漏洞,能窃取英特尔 SGX(代表 Software Guard eXtensions)中储存的秘密信息。LVI 与 Meltdown 和 Spectre 等类似,都属于瞬态执行利用,源自于 CPU 的一项优化技术“预测执行”。与其它瞬态执行漏洞类似,LVI 只能缓解无法修复。
SGX 能在内存中创建一个隔离的环境,使用强加密和硬件层的隔离确保数据和代码的安全,防止被纂改。研究人员演示了他们可以利用 LVI 漏洞窃取 SGX 保护的密钥。受影响的处理器包括了 Sandy Bridge 家族、Ivy Bridge 家族和 Haswell 家族等等,Ice Lake 不受影响。芯片巨人声称 LVI 在现实中很难利用。

◇针对 AMD 芯片的“Take A Way 攻击”

《AMD processors from 2011 to 2019 vulnerable to two new attacks @ ZDNet》
编程随想注:
奥地利的安全研究人员新发现两种针对 AMD 处理器的攻击方式:Collide+Probe & Load+Reload,两者统称为“Take A Way 攻击”。
类似于大名鼎鼎的 Spectre & Meltdown 漏洞,这种“Take A Way”攻击依然属于【边信道攻击】。但其危险性【低于】其它那几个知名的 CPU 漏洞——因为“Take A Way 漏洞”泄漏的信息量很小(这是该漏洞的发现者自己说的)。

翻墙的三个步骤

$
0
0



直连环境下,你的数据会被墙识别阻断,而无法与世界网建立通信。因此,我们需要一个境外服务器作中介(节点),数据经加密传输到中介,再由中介与世界网连接。此过程中两个要素,即加密和节点。目前主流加密技术仍是ShadowSocks及其衍生ShadowSocksR,它们有着为数众多的节点服务商。总之,本文选以SSR为例在手机上展示翻墙过程。
多说三句,与以往内置节点的一键VPN不同,SSR只是一个连接工具,节点须另购买。这样好处是功能更自由,节点更丰富,价格更经济,网上也有很多免费节点。另外,因SS/SSR标志是纸飞机,故其节点服务商被俗称为机场。

第一步 一个暂时的翻墙环境

翻墙资源(机场、软件、教程)多在墙外,因此我们先要处于一个能暂时翻墙的网络环境。实现方法,安卓请先下载安装老王VPN,实测可用。苹果须先退出AppStore内的国区账号,登入外区账号。
关于外区苹果账号,可淘宝自购(约20块),也可使用共享账号出于国区商店日益逼仄的软件政策,本文推荐苹果用户购买自己的外区账号。AppStore登入外区账号后,搜索VPN,得到一些可试用的一键VPN(如ExpressVPN),下载经测试有效即可。



多说三句,第一步完成后,我们其实已经能翻墙了。为何还要继续教程,因为现在使用的这种一键VPN与SSR相比,免费的低速不稳,付费的不很经济,客户端规则也不如SSR灵活自由。同时,相当多一键VPN(如老王VPN)存在安全问题,可能会招来网警。

第二步 选择机场、购买服务、下载软件

2.1第一步实现后,打开谷歌,搜索「机场评测」,点击结果前三即可。这些评测相当于一个机场目录,配有简单评价与套餐价格。如想获取免费节点,可搜索「免费机场」。
2.2根据以上信息选择机场,转到其官网,邮箱注册,购买套餐。付款成功后,你会获得一段「订阅链接」,相当于你使用机场节点的通行证,复制并保存好该链接备用。
2.3安卓用户,机场一般会提供SSR小飞机的下载资源,我们也可通过GitHub官方获取。苹果用户,可用自己的外区账号搜索「Shadowrocket」购买(约20元)下载,也可使用第一步中的共享账号免费下载。





第三步 本地配置

上一步中,我们获取了两样东西,一是节点服务的「订阅链接」,二是软件「小飞机/小火箭」。本地配置就是将「订阅链接」装进「小飞机/小火箭」里。
配置过程,很多机场都有简明教程,比如这一个,SSRShadowRocket,非常适合小白用户。
依上面教程配置订阅完成后更新订阅,我们就能得到机场提供的节点。选中其一,启动软件,确认VPN连接请求,即可成功拥抱地球上其他人正在使用的互联网服务。



然而,翻出来只是开始。墙越来越高,去年六四、十一到今年SARS等重要时间节点,墙都在突然间扫荡了绝大多数机场,却又无法完全切断民间的国际互联网访问。因此,翻墙技术也要时常留意更新。
本文选以SSR为例介绍,只因其为最主流的技术,网上资源也最多,意在让仍不会翻墙的朋友能先翻出来。而近来的V2ray、Trojan等新技术,或其它更高阶翻墙手段,有暇余者可以在墙外自己研究。同时,墙外务必保护个人信息实名数据,时刻注意网络安全,以防留下痕迹为网警所趁。

如何检查您的VPN连接是否实际加密

$
0
0
先关联一个去年底的消息👇



不要使用“TurboVPN”。该vpn声称不保留日志,但这不是事实。其隐私政策中你可以看到(下图),它收集各种用户信息,这与真正的无日志服务完全相反 —— 这个隐私政策非常难以找到,如果你使用电脑基本是找不到的。



Turbo 只有在使用“最快服务器”时的表现才稳定。而一旦连接中断,你的流量很容易因此暴露;同样,所有没有自定义DNS设置的VPN都无法100%保证你的安全。
Turbo VPN 无法在中国下载,这可能是个障眼法。您需要小心:并不是所有被 App Store 下架的VPN都是“安全的”。
我们曾经发布过《如何判断VPN连接安全》的简易介绍;今天介绍的内容是前者的延伸。
很多VPN声称自己是加密的,那么你怎样才能得知它们是不是骗子呢?
其实不需要您学会怎么玩数据包嗅探器和协议分析器,一个网络实用程序就可以做到,它使您可以查看从您的计算机来回传输的数据。
在未连接到VPN时检查一次,并捕获了一些数据包,然后在连接后再做同样的事。很简单就可以看到传输的数据在发送到VPN时是否已经加密。
即便您没有任何技术专长也不用担心。您所需要做的就是按下一个记录按钮,滚动列表并检查一些文本。
您可以忽略其他所有内容,因为除非您对计算机和网络有所了解,否则您不需要那些东西。
在Mac上,使用 CocoaPacketAnalyzer,在PC上,使用 Wireshark

在Mac上验证加密

首先,在Mac上下载 CocoaPacketAnalyzer 并运行它。您应该看到带有四个大按钮的启动屏幕。



点击 Capturing 即可开始捕获网络流量。如果您保存捕获会话,则称为 trace file,稍后您可以使用第二个按钮再次打开它们。
出于本文的目的,我们只希望看到数据是否已加密,因此不需要也不会保存任何捕获数据。
在执行捕获之前,请继续并单击“首选项”以设置如何捕获数据。
单击顶部的 Capture,需要在此处检查的唯一设置是 Capture Interface。





首先请确保按下列表框右侧的刷新小按钮。
当您点击该框时,您会看到几个选项,所有这些看起来都很混乱。不要管它,您唯一需要选择的就是列出了 IPv4 并带有一些数字的那串东西。
您无需选择包含127.0.0.1的那个,需要选择一个具有当前正在使用的连接的IP地址的条目。您可以通过转到“系统偏好设置”,然后单击“网络”来解决此问题。



单击左侧列表框中带有绿点的连接,然后检查右侧部分的IP地址字段。
如您所见,它显示为 192.168.1.x,因此与程序下拉列表中的 en0 — IP4–192.168.1.68 选项匹配。
现在关闭 “Capture Preferences” 窗口,以返回到主屏幕。
继续并单击 “Capturing”,现在将弹出一个新对话框,您可以在其中选择一些设置,然后开始捕获。



在这里您不需要进行任何更改,因此要开始使用,只需按 Start。
但是,在执行操作之前,需要注意一些事项。
首先,您应该尝试关闭所有正在运行的程序和任务栏程序,并仅使浏览器窗口保持打开状态。这是为了尽可能减少数据流让任务变得简单一点。
之后,立即加载一个或两个站点,然后单击“停止”。您只需要捕获几秒钟就够了。您甚至可以直接在浏览器的标签页中输入网址,那么一旦开始捕获,您只需按Enter即可加载页面。
按下 “Stop” 后,您将看到一个类似于下面的窗口:



现在它看起来像是胡言乱语,这就对了。您需要做的就是滚动浏览顶部的列表(表格格式),然后查看在右下角的框中看到的数据,在上面突出显示了该数据。
由于可能有成千上万的行,您只需快速按下向下箭头并查看底部的数据更改即可。



如果您的VPN连接实际上是加密的,那么滚动的每一行都应显示与上图中的数据相似的样子。
由于它不可读,只有一堆随机字符,因此可以判断已加密。
使用加密的连接,那数千行中的任何一行都不应该被读取任何内容。
现在要不要看一下在未加密的连接上(例如未连接到VPN时)看到的内容?就是下面这样:





如上所示,由于没有加密,因此可以阅读到很多的内容。你能看到主人使用了 Mac 和 Safari,访问了aseemkishore.com,以及许多其他数据……
并非每个数据包在未加密的连接上都是可读取的,但是对于大多数数据包来说,您都能够看到实际数据,HTML代码、协议标头等。

在PC上验证加密

在PC上进行检查的过程与上面显示的过程几乎相同,除了您使用的是另一个名为 Wireshark 的程序。
下载后,将其启动,主屏幕应如下所示:



就像在Mac上一样,您需要做的第一件事就是选择要为其捕获数据的接口(网络接口)。点击“接口列表”,您将看到网络接口列表。
我更喜欢 Wireshark,因为您实际上可以看到每个接口上正在传输多少数据,这使您很容易看出哪个是主要连接。



继续并选中相应接口旁边的框,然后单击“关闭”。
现在,您所要做的就是单击“开始”按钮(在“接口列表”按钮下方),您将可以正常使用;您无需更改任何其他选项。完成捕获后您应该会看到如下屏幕:



您可能必须全屏展开,然后相应地调整底部和顶部窗格,但是您可以看到数据的格式与Mac上的 CocoaPacketAnalyzer 完全相同。
滚动浏览顶部的列表,并确保数据部分完全是乱码,这意味着您的连接已加密。
如果您能够阅读任何单词或文字,则表示数据未加密。确保使用箭头键快速浏览至少几百行。
希望您的VPN连接被证实已经安全加密。

Wi-Fi是如何出卖你的?

$
0
0
您的房屋有隔离墙,但Wi-Fi信号会穿过它们,是的它很强大,还没进家门的时候你的手机就知道自己 “回家了”。但是,从这些数据中可以搜集到大量信息,包括:居民出入的时间、附近所有无线设备的制造商、以及在任何给定时间使用的网络资源。
去年我们已经介绍过《为什么你不应该使用Wi-Fi》,演示了一场追踪。
今天介绍的是一个追踪工具:Kismet,⚠️它不仅擅长查找无线接入点(AP),而且还擅长显示设备之间随时间的关系。如果方便的话您可以试试,亲身体验下这件事有多可怕。
在这种情况下,您可以看到的是路由器和连接的设备、人类活动、以及哪些设备属于谁?这足以使您拼凑出比您想象的更多的东西。
⚠️如果您知道追踪者不仅可以看到您是否在家,还可以看到您在任何给定时间是否在 PlayStation 或笔记本电脑上,那么您可能更倾向于切换到有线网络或至少关闭Wi-Fi不使用的设备。




为了发挥其魔力,Kismet 使用处于监视模式的无线网卡以静默方式扫描范围内所有可用的Wi-Fi信道以获取无线数据包。这些数据包可以是自动的信标帧、每秒广播多次的无线AP、从关联设备交换的数据包、或探测附近尚未连接到网络但正在搜索要连接的网络的设备。
通过解码和组合这些数据,Kismet 可以可视化您周围的网络以及连接到这些网络的设备的活动。

Wi-Fi可以告诉您什么?

那么,要想尝试它您该怎么做呢?
一旦确定了您希望监视的网络,就可以探索有关它的细微差别,例如企业或个人已将哪种电子设备和硬件连接到其网络。
通过这种设置,隐藏的3D打印机或连接的水培设备集群就像一堆智能手机和笔记本电脑一样清晰可见。
此数据可以怎么用,要取决于您是谁。
对于小偷来说,他们可以使用这种方法侦听无线范围内每所房屋以发现昂贵的电子产品。
对于普通人来说,由于 Kismet 可以轻松地检测到无线监视摄像机,因此您可以提前避免被监视。
而且因为您可以看到客户端设备何时出现、何时消失、和使用数据,所以很容易推断出何时没有人在家。
⚠️甚至,窃贼只需要在附近走一圈,将GPS数据与Wi-Fi信号数据结合起来,就可以构建每个无线网络所属地址的详细地图。
实际上,该数据可能已经存在,因为 Wigle Wifi 和 Google 都在映射更多的Wi-Fi网络。



应该注意的是,它也可以用作一种邻里监视以检测邻居的可疑无线活动。这可以帮助发现网络犯罪的迹象,可以将其报告给知道如何进行调查的人,因为普通警察通常不会这样做。
无论您打算把它做什么用途,都不需要花太多时间就可以做到直接穿墙窥视……不要做坏事!

您需要什么?

要遵循本指南,您只需要几件事。
第一个是 Kali 兼容的无线网络适配器,第二个是可在其上运行 Kismet 的 Linux 系统。
尽管新版本的 Kismet 可以运行多种无线卡(包括在macOS上的),但本文将介绍较旧的稳定版。建议使用比如远程 Panda Wireless PAU09 双波段适配器,或者在这里介绍的更多选择。
如果您希望在 Raspberry Pi 上运行 Kismet,别忘了它可以在虚拟机上运行。

第1步:安装 Kismet

要在 Kali Linux 上安装 Kismet,首先使用以下git命令:
git clone https://www.kismetwireless.net/git/kismet.git
根据您使用的操作系统,Kismet 可能不需要任何依赖项。但是为了确保Kismet正确运行,应该安装 Kismet 冗长的依赖项列表。
这些都是必需的,因为 Kismet 会在控制无线卡的同时处理大量无线数据的检测,解码,记录和分类,这需要安装多个库。您可以通过在终端窗口中运行以下命令来执行此操作。
sudo apt-get install build-essential git libmicrohttpd-dev zlib1g-dev libnl-3-dev libnl-genl-3-dev libcap-dev libpcap-dev libncurses5-dev libnm-dev libdw-dev libsqlite3-dev
接下来,导航到使用cd创建的 Kismet 目录,并配置安装。
cd kismet
./configure
这将为您的特定OS发行版配置安装。该过程完成后,使用以下命令创建安装:
make
完成上述后运行结果文件以使用 suidinstall 完成安装。这很重要,因为 Kismet 直接接收信号并将数据写入您的计算机。
⚠️以 root 用户身份执行此操作是个糟糕的主意,因为如果其中任何数据是恶意的,都可以 root 用户身份执行。
当无特权的用户想要完成需要特权的任务时,例如控制无线网络适配器,Linux 允许您为程序(而不是用户)赋予特权,因此不必root。
运行以下命令以完成SUID安装。
sudo make suidinstall
安装 Kismet 后,请将您自己添加到 Kismet 组中,以便能够以非root用户身份捕获数据包。确保将 “YourUsername” 替换为您的实际用户名。
sudo usermod -a -G kismet YourUsername

第2步:将无线卡置于监控模式

将无线网卡连接到计算机,如果需要,请使用“ USB”设置将其连接到虚拟机。
要找到您的卡,可以使用 ip a 或 ifconfig 命令。您的卡应命名为“ wlan1”或“ wlan0”。
获得卡名后,可以通过运行以下命令将卡置于监控模式。
sudo airmon-ng start YourCardName
这会将 YourCardName(一定要用您实际的卡名替换)置于监控模式。您的卡将被重命名以在卡名称的末尾添加“ mon”。
因此,如果以前将其命名为“ wlan0”,则现在就变成了 “ wlan0mon”。通过此更改,可以立即识别出卡处于无线监控模式。
我们将使用该卡的新名称来启动 Kismet。

第3步:启动Kismet

启动 Kismet 很简单。要以非root用户身份启动,只需键入以下内容。
kismet -c YourCardNameMon
确保在 -c 后面加上您在无线监控模式下显示的卡的名称。 Kismet 使用 -c 指定捕获源。
您应该看到 Kismet 启动并开始收集数据包。您可以按回车键浏览菜单选项,直到到达控制台窗口。要转到主屏幕,请单击 tab 按钮,然后按 Enter 键以关闭控制台视图。

第4步:持续网络监视

一旦启动 Kismet,您应该会在附近看到所有可以检测到的Wi-Fi设备的列表。
根据要扫描的是 2.4 GHz、5 GHz 还是同时扫描这两者,检测到的设备数量将有所不同。如果您有能力在无线网络适配器中添加天线,那么它可以扩展您的范围和检测到的设备数量。




您可以按名称、信号强度和其他属性排列这些网络。建议您通过信号强度来排列,以便首先查看哪些网络最强(因此最接近)。
锁定目标网络后,请在 Kismet 中单击该网络(或向下滚动至该网络)以了解有关该网络的更多信息。
突出显示目标网络后,首先要注意的是无线客户端列表出现在主窗口中。这些是与该网络关联的客户端。
要了解有关特定网络客户端的更多信息,可以在突出显示网络后单击 “ Windows”,然后单击 “Client List”。




在客户端窗口中可以实时查看有关每个客户端的更多信息。




如果您有一个要持续监视的网络,那么建议您最好记下信道号。由于 Kismet 通过跳频浏览所有信道,因此,当 Kismet 扫描另一个信道时,您将错过一个信道上的所有传输。
因此,为了不错过数据,一旦您确定了要监视的网络,就应该从“扫描”切换到持续监视一个信道。这将允许您捕获该信道上的所有活动。
为此,请单击左上角的 “Kismet”,然后单击 “Config Channel”。




在配置窗口中,选择 “Lock”,然后输入要监视的信道号。




探索你周围

人为的行为会影响您周围的无线信号,而 Kismet 可以让您观察无线环境中通常无法感知的这些变化。
这些网络被加密并不重要,因为它们与数据包的明文部分之间的关​​系已经足够了。
通过观察流经网络的流量的类型,不仅仅可以看到周围的事物,更有已经可以开始了解如何使用这些网络以及由谁使用这些网络。
特别是,Kismet 在 “Windows”下的菜单中有一个“警报”部分,它将警告您任何可疑的无线行为。

隐藏您的活动

你也许已经知道,由于Wi-Fi具有视线,使用定向Wi-Fi天线可以在近一英里外检测到Wi-Fi。这些信号是如此强大,以至于它们是通过 NAVSOP(机会信号导航)进行军用GPS导航的备份。
大多数人只登录一次路由器,并且从不更改超出所需设置的任何设置,这是很糟糕的。
尽管每种品牌路由器的说明都不同,但几乎每个品牌都有功率设置。您可以把它调低 —— 制造商默认将其开到最大,以免您抱怨信号强度;如果您的Wi-Fi范围没有问题,请将其减小,使其仅覆盖所需的区域而不越界。
⚠️您想保密的任何事情都应该硬连线,简单明了。

从 Kismet 列表隐藏设备

对于包括智能手机在内的客户端设备,请在不需要时关闭Wi-Fi设置。
您的Wi-Fi卡不仅可用于在家中和办公室里,也可用于在任何地方跟踪您。即使您未连接到Wi-Fi,也是如此。
智能手机制造商会在走动时尝试随机分配您手机广播的MAC地址,但这会在电话尝试连接到它认识的网络时消失。这意味着它无法经受住真正的攻击。
不相信吗?如果您将手机的移动热点更改为 “Google Starbucks”,则附近的几乎所有智能手机都将与您连接并显示其真实MAC地址,以便您进行跟踪。
这是真的。再一次强调:在不需要的时候关掉它吧!


中国的全球影响力:防火墙之外的监视和审查

$
0
0
所有人都有这般帝国的野心。最终的结果是什么?




大多数人仍然认为通过所谓的GFW实施的只是针对中国国内的审查监控。也许曾经是,但如今已经不同。

GFW是一种监视和阻塞性的系统,可防止中国公民查看国外的网站。中国政府提出使用该防火墙的理由是基于所谓的 “互联网主权” 的概念。中国很早就宣布“互联网在中国领土内属于中国主权管辖”。

如今已经不止中国了《互联网主权的全球崛起:这意味着什么?》
作为 “一国两制” 协议的一部分,香港基本上不在防火墙之内:那里可以使用 Twitter、Google 和 Facebook 等外国服务,而本地ISP则明确表示反对对其开放式互联网进行的直接国家审查。

但是,随着香港抗议活动的持续进行,以及中国大陆在全球范围内广泛破坏这一运动的尝试,中国正在试图将其影响范围扩大到防火墙之外。

为了消灭防火墙外部的抗议活动的声息,中国在全世界范围内全面展示着自己的力量,并揭示了可以用来在世界范围内消除异议或批评的工具。

其中一些工具(例如对包括美国公司NBA和暴雪在内的私人实体的压力)引起了一堆头条新闻,并激怒了这些公司的客户和员工。而其他的则更具技术性和隐秘性,经常被观察家们忽略。

“大炮”瞄准防火墙外的站点
大炮是由中国ISP大规模部署的一种技术,用于将恶意 JavaScript 代码注入客户的不安全(HTTP)请求中。恶意代码为通过这些ISP的数百万个中国大陆互联网连接提供了武器。

当用户访问不安全的网站时,他们的浏览器还将下载并运行政府的恶意 javascript,这将导致他们向“GFW”之外的站点发送更多流量,从而使这些网站对其他用户的运行速度变慢,甚至完全过载。

比如,通过向百度注入恶意的 JavaScript 代码以使从中国大陆以外访问百度网站及广告的流量转换为DDoS攻击发送至目标。

大炮(Great Cannon)在2015年的首次亮相时就摧毁了 Github,中国用户在该处托管反审查软件和《纽约时报》等被禁止的新闻媒体的镜像。在广泛的国际反对之后,这次袭击被制止。

然而去年9月,大炮再次被激活,这次瞄准的是香港示威者。它短暂地捣毁了 LIHKG,这是香港热门的社交媒体平台,它对抗议活动至关重要。

通过恶意软件瞄准全球华人社区
普遍的在线监视是中国大陆公民的现实生活。

但是,如果中国政府想要监视的社区不在国内,中国当局就会越来越愿意在昂贵的零日漏洞上投资,以监视生活在国外的目标群体,或者以其他方式将海外华裔留在国内的家人作为人质。

《危险:监控技术公司正在推动对零日漏洞的利用》
《“零日漏洞”针对全民间谍行为更加肆无忌惮:新型监视车出台,五百米开往能入侵任何设备》
《什么是零日漏洞?间谍们如何使用它?》
《零日漏洞黑市的泛滥》(英语)
这种悲催的现状是怎么造成的?《可怜正义没有钱》
去年底安全研究人员已经发现了一些针对维吾尔族和海外藏族侨民的移动恶意软件攻击活动,这些攻击方式很昂贵,但显然政府当局用得起。

其中一个构成广泛的“水坑”攻击,使用多个零日漏洞来瞄准维吾尔语网站的访问者。







正如我们之前提到的,这代表了零日使用方式的巨大变化;尽管中国当局继续在鱼叉式钓鱼攻击活动中针对特定的知名个人,但他们现在不惧怕投放更广泛的网络,以便将监视软件植入到中国境外的所有华人社区和政治团体。

审查国外的中国应用程序
在中国国内,政府当局不需要使用零日攻击在个人设备上安装恶意软件。因为中国的所有消息传递和浏览器应用程序的制造商都必须在其客户端上包括满足于政府要求的过滤。

这意味着,当您使用由中国大陆公司创建的任何应用时,该应用都可能包含旨在扫描和阻止所谓的 “违禁网站或关键字” 的代码。

这不是中国的特例《“每家公司都有给警察留的后门”,现在它正在被滥用于监视》
《美国和中国在监视公民方面引领全球》
到目前为止,中国在很大程度上一直将这种激活设备端形式的审查制度集中在其国内。微信中嵌入的关键字过滤仅适用于具有中国大陆电话号码注册的用户。

《微信 Is Watching You》
《在中国:TA为什么不使用微信?》
《什么是高峰冷漠?从白宫到微信》
一直以来,中国国内浏览器的中文版本遭到的审查和监视比英文版本要多得多。但是,随着香港的抗议活动和国内侵犯人权行为所引起的国际关注迅速提升,对于中国当局来说,在海外实施中国审查监视政策的诱惑越来越大。

TikTok 是来自北京的最大且增长最快的全球社交媒体平台之一。它极大地调节了其内容,并且据称具有针对不同司法管辖区的本地审查员,就如 Facebook 所做的那样。

《你能从TikTok(抖音)中挖掘到哪些情报线索?》
在去年年初政府对“短视频”平台进行了一波镇压之后,新闻媒体开始报道该平台缺乏与香港相关的内容。当然不会有,因为全过滤掉了。

TikTok 泄露的一般性管理准则明确禁止任何批评中国政府的内容,例如与中国对少数民族的迫害或天安门广场有关的任何内容。

多年来,美国的社交媒体公司已经多次被指控向世界其他地区出口美国的文化和政策:Facebook 甚至在那些与美国相比文化上更宽容的国家/地区均对裸体和性语言进行了全球范围内的审查,即使在拥有替代解决法的国家/地区也是如此。

《裸体抗议者谴责 Facebook 的乳头审查》
和中国一样,政府对科技公司的影响导致这些科技公司对全球产生的影响。

案例《算法殖民:从不知所云的流行语到金钱驱动的流行病》
辩论《数字殖民主义威胁全球南方国家》
在中国,根据2017年通过的所谓《国家网络安全法》,明确要求国内外公司都遵守中国的审查制度,该法为内容审查提供了激进的指南,且措辞含糊边界模糊,为当权者的滥用留下了极大的解释余地。

世界上只有两个国家能影响全球,那就是中国和美国,因为他们各自占据互联网的几乎一半,他们能控制他们各自掌握的部分。(见下面的图)

《图解中国科技巨头 — 半壁“高堡奇人”》
《毒霾 - 监控审查网络的全球蔓延:中国和俄罗斯的共同点与区别(长篇报告)》







上面的大图在这里看到,点开大图哦。

用钱说话:但评论家不能说话
人们已经注意到中国新的全球审查​​工具包中最引人注目的分支:对跨国公司的经济压力。

对于暴雪和NBA这样的公司,中国国内的市场对他们越来越重要。这意味着,当这些公司或与之有联系的人表示对香港示威者的支持时,中国可以利用经济压力来使这些公司或与之有联系的任何人保持沉默。

人们已经在反击中国对跨国公司的审查制度。

暴雪的员工举行罢工抗议,NBA球迷继续表达他们对香港示威活动的支持。但是,随着中国经济影响力的不断增长,所有有能力控制用户发言的跨国公司都将会看到来自中国的更多压力。

结果是什么?
狭隘的 “互联网主权” 论已被证明不足以满足中国的需求:国内政策目标现在要求在境内外均可控制互联网。

需要明确的是,中国政府并不是控制互联网方面的特例:包括美国和欧盟在内的其他国家,都在忙于为各自的国界外行使自己的监视和审查能力提供各式各样的理由。

这一局面的最终结果会是什么?

中国现在通过无限制使用恶意软件和国家支持的DDoS攻击,将其互联网力量投射到国外,还有授权的客户端过滤和监视、限制跨境言论自由的经济制裁、并迫使私人实体充当全球思想警察。

除非立法者、公司和个人用户像香港反抗者一样勇敢地坚持抵制威权主义的行为,否则,我们将不得不看到所有国家都屈服于高堡奇人。

美国华人留学生因发布习的meme推文而在中国入狱:他是如何被抓的?

$
0
0
  • 当事人的推特账户是 “匿名的”




2019年,来自明尼苏达大学的20岁中国留学生在中国被捕,被审判并被判刑,原因是他在美国学习期间使用匿名推特账户发布的推文。
这名学生 Luo Daiqing 在2019年暑假回到中国家中时被捕,并在2019年11月被秘密审判后被正式判刑。
该新闻由 Bethany Allen-Ebrahimian 于2020年1月22日首次报道
这是中国政府首次以这种方式起诉在国外的中国公民,所有迹象均表明,这仅仅是一个开始。




这是个可怕的问题。值得研究。
推特账户是匿名的,中国当局如何知道账户持有者的真实身份?
这个账户在这里,现在已经被屏蔽了。
最初的想法可能是中国政府通过法律要求 Twitter 披露 @ Mq1919801 这个帐户的信息。但是,几乎可以肯定不是这种情况。
根据 Twitter 的透明度报告,来自全球数十个国家的7300个此类请求中,中国在2019年上半年没有任何此类请求。
2018年也没有来自中国的对 Twitter 的数据要求。该请求很可能是在2019年下半年提出的,并有可能在尚未发布的 Twitter 透明度报告中呈现,但是,考虑到拘留和逮捕的时间表 —— 这是极不可能的。
另一个推测是,中国间谍混入了推特公司成为员工,为中国政府搜集了有关异议人士的信息。
尽管这是非常惊人的,但依旧是有可能的,甚至不是外国政府第一次这样做(沙特已经这样做过)。
去年,WaPo 报道说,司法部已指控两名前 Twitter 员工帮助沙特政府窥视异议人士的 Twitter 帐户信息。
就我个人而言,我认为这种可能性不大,因为中国不太可能为了一些有趣的 memes 投入如此高价值的资产。
可以考虑的另一种推测是,使用中国国家控制的应用程序将目标手机中的图像与 Twitter 上发布的图像进行了匹配。
中国许多流行的应用程序(例如微信)已经成为审查传播的重点包括memes。除了图片之外,该应用程序还可以筛选某些文本中的关键字,然后对其进行审查和报告,以供当局将来采取措施。
众所周知,中国的应用会执行这种自动的图片识别、筛选和审查操作,让人们感觉已经发送成功,但对方无法收到。
如果这样的应用程序可以访问包含 Luo 发布的模因的手机相册,则中国就有可能要求腾讯公司检查目标相册中与 Luo 的 Twitter 发布的图像相匹配的图像。
尽管这些都是 Luo 被中国政府抓获事件在技术上可行的方式,但鉴于中国政府仍在使用的陈旧策略,还有一些话要说。
中国仍然依靠传统的、古老的监视技术来识别持不同政见者
不过,最有可能发生的情况是,Luo 在他自己的学校被他的身边人报告给了中国政府。在美国,受到同龄人监视的海外华人学生现在已经是一个简单的事实。
2017年,美国国家学者协会呼吁一百多所大学排除孔子学院,这是中国政府资助的所谓 “文化和语言” 教育中心,被发现对海外华人学生具有影响力。参议员 Mark Warner 评论说,孔子学院 “只是中国间谍监视中国学生并追究他们的工具”。
明尼苏达大学于2019年春季宣布,其校园中的孔子学院将于学期末关闭。Luo 在推特上发布习近平的 meme 时,孔子学院在明尼苏达大学仍在运作。
被发现是这种间谍活动工具的另一个组织是中国学生学者协会(CSSA),该协会仍在明尼苏达大学校园内活跃。
中国对海外华人学生的监视不仅限于​​美国
中国在与世界各地的国际学生保持联系方面有着悠久的历史。近年来,监视和后果已大大增加。
澳大利亚,一名中国学生说,她参加亲民主抗议活动后,她在中国的家人遭到当局问话。在苏格兰,一名中国学生也报告了同样的事。
Nathan Law(罗冠聪)是香港前立法会议员,后来因参加抗议活动而被入狱,现在是耶鲁大学亚洲研究专业的研究生。他报告听说其他中国学生被告知要远离他。他告诉美联社:
“尽管许多中国学生就在这里学习,但有时他们依旧会受到监视。他们在这个国家也没有真正的思想和表达自由。”
人权观察(HRW)也发布了有关中国政府对学术自由的威胁的报告。根据2019年HRW报告,该报告采访了一百多名学者:
“学者告诉《人权观察》,中国学生描述了当局对他们在中国的家人的威胁,只因为他们在教室里所说的话。来自中国的学者详细介绍了中国官员在国外直接威胁要避免在课堂或其他演讲中批评中国政府。其他人则说,来自中国的学生在教室里保持沉默,担心其他中国学生会监视他们说的话,并向中国当局报告。”
Luo 应该在1月初被释放,但是没有媒体能够证实他目前的下落或健康状况。在这一消息传遍全世界的几天之内,中国政府就开始清理互联网上的相关法院文件。
中国政府在世界范围内针对言论自由采取的升级行动所带来的后果,应该不仅困扰着中国公民,它足以令所有人担忧。⚪️
注:这是 privateinternetaccess 的文章。IYP同意它的 *侧重*,即 来自身边人的监视(《中国:为什么要重启笨拙低效的斯塔西式群众斗群众?》);但是,坦白说,我们对寡头公司的透明度报告究竟有多透明的信心不足。
IYP 认为,关键问题在于,这件事不应该被强调为 “海外华人留学生”,而是所有推特华人用户,都应该警惕此案衍生的诸多可能性。可能性不高但在技术上可行的推测也应该被考虑进去。
👉尤其是需要继续强调安全101:您不应该让不可靠的身边人了解您在互联网上的真实存在 —— 分身是最好的办法,为不同等级的用例赋予不同的保密标准;并且,您应该与具备同等安全意识的人结盟,告密只是一种可能性而已,其他可能性还包括安全意识薄弱的队友在毫无防备的情况下暴露您的身份。
如果不能做到上述这些,就无法宣称 “账户是匿名的”。

GFW考古:gfw-looking-glass.sh

$
0
0
我近日被@gfwrev所写的一行脚本深深吸引。尽管它已经失效,但它所流露出来的创意与美感仍值得被纪录。
这行名为gfw-looking-glass.sh的脚本如下:
while true; do printf "\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300" | nc -uq1 $SOME_IP 53 | hd -s20; done
如下图所示,它可以被用来打印出GFW内存中的某一部分。这是怎么做到的呢?


“未找到图片”


nc

nc -uq1 $SOME_IP 53 会把在stdin收到的信息以UDP包的形式发送给$SOME_IP的53端口。如@gfwrev所解释的,$SOME_IP可以是满足以下两个条件的任何IP地址:1)不会回应发送到其53端口的任何信息;2)在防火长城的另一面(比如,如果从中国发送,目的地IP地址则需是在外国)。条件1确保任何回复均伪造自GFW,而非目的IP;条件2确保你精心准备的DNS请求会被GFW看到。

背景介绍

一点点有关DNS格式和DNS压缩指针的介绍对理解这个漏洞利用很有帮助。

DNS通用格式

下图是DNS请求和回复的通用格式:
 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification | flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| number of questions | number of answer RRs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| number of authority RRs | number of additional RRs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| questions |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| answers(varaible number of RRs) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| anthority(varaible number of RRs) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| additional information(varaible number of RRs) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Questions栏格式

以下是Questions栏展开后的样子:
 0                   1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| query name |
\ \
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| query type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| query class |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Query Name栏格式

当查询域名为www.google.com时,它可以被以下格式所表示:
 0                   1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|3| www |6| google |3| com |0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
一个使用压缩指针的例子如下:
 0                   1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|3| www|1|1| offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
我们可以看到www后跟随着一个两字节的指针。这个指针的两个最高位为1,剩下的14位代表offset。当offset == n时,它指向整个DNS请求的n字节。

对精心准备的DNS请求的解释

我们现在来看一看这个精心准备好的DNS请求:
printf "\0\0\1\0\0\1\0\0\0\0\0\0\6wux.ru\300" | xxd -b -c 4
00000000: 00000000 00000000 00000001 00000000 ....
00000004: 00000000 00000001 00000000 00000000 ....
00000008: 00000000 00000000 00000000 00000000 ....
0000000c: 00000110 01110111 01110101 01111000 .wux
00000010: 00101110 01110010 01110101 11000000 .ru.
其前12字节和通常的DNS请求相同:
  • ID=0;
  • Recursion Desired Flag is set;
  • questions 数量 = 1;
  • answer RRs 数量 = 0;
  • authority RRs 数量 = 0;
  • additional RRs 数量 = 0.
最有意思的部分在第12到19字节。
起初我以为\6wux.ru是作者笔误,应为\3wux\2ru。但后来意识到,\6wux.ru是作者故意为之,旨在同时演示GFW是如何处理查询域名的。具体来讲,虽然\6wux.ru不符合协议格式,但却仍和符合格式的\3wux\2ru一样,可以触发GFW的审查。这说明“GFW实际上是先将域名转换为字符串进行匹配的”
如背景介绍中所述,一个指针占两个字节。而我们准备的DNS查询包中的指针只有一个字节。这个缺了一半的指针导致GFW将在内存中的下一个字节当作指针offset的一部分。我们可以知道这个offset的可能值为02^8-1。当offset大于整个DNS查询包的长度时,GFW会跳出查询包,并将内存中的某一部分当作域名的一部分。GFW似乎并没有检查offset已经大于整个DNS查询包的长度的情况。
现在GFW已经把其一部分内存中的内容当作查询域名的一部分,我们要做的就是触发GFW以得到包含查询域名的伪造的DNS应答包。@gfwrev在此使用了wux.ru 作为kw{rnd}类关键词。关键词的匹配模式已经被总结在这篇论文的Table 2 (b)中。

对GFW伪造的DNS应答包的解释

收到DNS应答后,hd -s20会帮我们截去应答包的前20个字节。这前20字节包括了12字节的各种项,以及questions栏的前8个字节:\6wux.ru\300
留下的部分则包含两项:1) GFW内存中的内容 2) 和紧随其后的answers栏。以截图中第一个hexdump举例,其中的2)answers栏为:
c0 0c 00 01 00 01 00 00 01 2c 00 04 cb 62 07 41
  • c0 0c 代表域名。它实际上是一个指向查询域名栏开头部分的指针。
  • 00 01 和 00 01 分别代表回应类型为A(IPv4地址的意思),回应class类型为IN。这很有意思因为在那个gfw-looking-glass.sh还能用的年代,GFW伪造的一型DNS应答包不管查询类型或查询class类型为何,都会把回应类型设置为A,回应class类型设置为IN。
  • 00 00 01 2c 代表DNS TTL为300秒。
  • 00 04 代表数据长度为4字节。
  • cb 62 07 41 是伪造的IP地址:203.98.7.65
除去以上answers栏中字节,我们就得到了GFW内存中的内容。
截屏中的几个应答包questions栏长度很有意思。以截图中第一个应答包为例,questions起始于8个字节\6wux.ru\300,并跟随着122字节的GFW内存中的内容:cb 9e ... 65 61。截图中的两个独立的应答包的questions栏均有130字节。考虑到其不同于域名的最大长度256字节和被.分割的每个子域名的最大长度63字节,我们猜测130字节可能是GFW的人为限定。

备注

  • gfw-looking-glass.sh 之后的故事 @gfwrev在2014年的11月发现 GFW “再也不认真处理DNS域名压缩指针了“。@gfwrev因此想出了一系列利用压缩指针绕过DNS审查的新方法。其测试结果显示截止2014年11月,V2EX和Google的DNS服务器可以成功处理包含压缩指针的DNS查询。
  • 为什么要用不完整的指针? 一个很容易引起的好奇是我们能否自己指定offset来控制要观察的GFW内存的相对位置。随着GFW不再处理DNS压缩指针,除非有更多的证据出土,这一问题的历史真相已不得而知。
  • kw{rnd} like keywords GFW Report在2020年3月测试了几个之前已知的kw{rnd}类型的关键词,但它们都无法触发GFW的审查了。
  • 关于130字节的人为限定的猜测 在2020年3月,GFW可以处理和审查最大长度(256字节)的DNS请求。测试方法如下:
dig $(python -c "print( 'a.'*121 + 'twitter.com')") @"$SOME_IP"

贡献

GFW Report未在此工作的任何阶段中作出任何贡献。一切贡献、成果均来自@gfwrev

如果调查之初你只有一个电邮地址……可以怎么办?– 开源情报经验

$
0
0
在调查开始的时候往往是你拥有的东西最少的时候。想象一下,在您的调查中有一个电子邮件地址:您知道该如何处理吗?
有太多可用的开源情报工具,可能有些让人不知所措。这就需要经验了。例如,您使用哪些工具来验证电子邮件地址?以及如何检查电子邮件地址是否与社交媒体上的帐户相关联?—— 最好能找到,因为社交媒体是情报金矿,从哪里,追踪将最有可能直升式起飞。
本文将 *概述* 调查电子邮件地址的步骤,希望能为您提供一些帮助。

开源情报检查清单:电子邮件地址

以下是一些清单,每个清单都关注可能会提供给您的可用信息。例如,这可以是电子邮件地址、电话号码或数码照片。
清单将指出您可以使用当前信息采取的调查步骤。下面将教您如何执行清单的所有调查步骤。以下是一些示例 —— 从最简单的开始。




用搜索引擎

使用搜索引擎,您可以检查目标电子邮件地址是否存在于所谓的 “表层网络” 上。例如,当在Google上搜索某电子邮件时将向您显示包含该电子邮件地址的网站的结果。
👉不同的搜索引擎的结果将有所不同,请检查多个搜索引擎,并使您选择的搜索引擎与目标相匹配(目标是来自哪里的?在当地哪个搜索引擎最热门,那就选它)。
👉您还可以试试元搜索引擎和Carrot2之类的集群引擎。在下面看到工具包:

搜索深网

当使用普通搜索引擎找不到该电子邮件地址时,并不一定意味着该电子邮件地址未在互联网上被使用。这是因为搜索引擎仅显示来自冰山一角的信息。您应该继续探索深网。
请注意,网站管理员可以通过操纵搜索引擎的索引编制过程以不对其网站进行索引。可以通过在其网站上指定 robots.txt 文件来执行此操作。
搜索引擎被禁止索引的所有信息都位于深网中。社交媒体通常被部分索引,但有时根本不被索引。
那么如何搜索深网?搜索深网的两种方法是调查数据库和调查部分被索引或根本没有被索引的社交媒体。

搜索社交媒体

如何执行此操作取决于您要查看的社交媒体平台是什么。
在 Facebook 上,您可以使用搜索栏检查是否提到了目标电子邮件地址;在 Twitter 上,您也可以直接填写目标电子邮件地址。
通过在搜索栏中输入目标电子邮件地址,您可以查找提到目标电子邮件地址的故事(在 Facebook上)和推文(在 Twitter 上)。
⚠️所以您应该小心 —— 再一次,必须严格区分可公开和私人。比如,如果有读者想要联系IYP,在推特上询问我们的邮箱,我们只会提供公开邮箱(您可以在网站上直接看到的邮箱),这是为避免被挖掘。
👉请始终花几分钟时间思考您的目标。目标的年龄、出生地和其他详细信息,可能与您的调查重点非常相关。
例如,Vkontakte,Nk.pl,Xing 或 Qzon e等社交媒体平台可能是您进行调查的地方;但请确保不要忘记如 Skype、YouTube 和 Spotify 这类平台。每个社交媒体平台都有其有效搜索信息的方式。

搜索数据库

当使用搜索引擎进行搜索不会产生任何结果时,您可能希望查看一下(商用)数据库,例如 Pipl、Yasni 和 ThatsThem。
👉这类数据库如何收集数据并不总是完全透明的,但是现有的数据可能很重要。请确保验证所有结果,因为信息可能已过时,甚至不正确。
⚠️如果您是防御者,请通过这些方法搜索自己,一旦检查到有重要信息包含其中,请迅速更改您的使用习惯。
提示:使用 API 或付费许可时,某些数据库和服务可为您提供更好的结果。API的使用有时是免费的。




搜索被黑的电子邮件地址

常规搜索引擎有时也可以向您显示被黑的帐户详细信息,例如电子邮件地址和密码。但是,有更好的方法来搜索被黑的电子邮件地址。
👉可以使用的选择有 HaveIBeenPwnedDehashed(付费)和 Pastebin。这些网站将向您显示目标电子邮件地址是否因哪个违规行为而受到破坏。
👉这使您可以洞悉目标可能使用的帐户和服务,使用的密码、以及是否有其他与该密码关联的电子邮件帐户。
⚠️作为防御者,请定期使用上述方法搜索自己,一旦发现泄漏,迅速更改凭据和相关绑定。

电子邮件地址是否与社交媒体上的帐户相关联?

对于几乎每个研究人员、调查人员或分析师来说,电子邮件地址都是开源情报难题中非常有趣的部分。
👉使用电子邮件地址,可能会发现社交媒体上是否有与该电子邮件地址相关联的帐户。检查方法取决于您要调查的社交媒体平台。操作演示,见:
此外,使用以下自定义电子邮件搜索工具,您可以确定电子邮件地址是否与LinkedIn上的帐户相关联:www.linkedin.com/sales/gmail/profile/viewByEmail/info@aware-online.com
针对其他社交媒体平台的调查今后会不断发布演示。Android模拟器和移动应用程序起着关键作用。
⚠️对于防御者,强调分身!非常重要!你需要将你的私密生活中的不同领域分隔开,以避免追踪者通过一个线索挖掘到你的全部,操作方法见:

搜寻手机通讯录应用程序

有许多可用的通讯录应用程序,它们可以帮助您找到电子邮件地址的所有者。您可以在这里看到对比《如何快速知道未知来电的真实身份?》。
👉请注意:每当使用 Phone Contact Apps 时,您的联系人都可能会上传到应用程序的数据库中。因此,调查人员请始终使用“干净”的手机(或Android模拟器)。
⚠️对于防御者,建议您的重要联系人不要录入手机通讯录APP,您应该自己记住他们的号码,尤其是在危机时候可以救你命的联系人。记忆力是很重要的武器,在下面回顾我们对记忆力训练的内容 —— 尚未完成的系列:

电子邮件地址是否与网站相关联?

另一种选择是检查是否在网站的WHOIS数据中注册了电子邮件地址。
在注册域名和网站时,将注册有关域名所有者(注册人)和托管提供商(注册商)的详细信息。因此,您可以检查目标是否将电子邮件地址包含于任何详细的联系信息中。
👉可以帮助您进行此调查的网站是 DomainBigData 和 Whoxy.




如何验证电子邮件地址?

👉如何知道该电子邮件地址是否仍处于活动状态?万一它是过时的呢?有可用的不同工具可以帮助您解决此问题。例如,尝试使用 Mailtester 或 Hunter




从电子邮件地址到用户名?

在某些情况下,您可以从电子邮件地址获取用户名。
👉想象您正在使用电子邮件地址“ A​​O_1987@gmail.com” 和朋友交流,或者在这种情况下,用户名可能是“ AO_1987”,该用户名也可能用于其他电子邮件地址(比如 “ AO_1987@hotmail.com”,“ AO_1987@outlook.com” 等)或社交媒体(Facebook、Instagram)上的帐户,等等。
追踪者可以对此一一测试,这并不难。
⚠️再一次,防御者不应该将用户名和电子邮件地址相关联!这是需要不断强调的。
对于调查者,您将需要验证找到的电子邮件地址是否可追溯到您的目标电子邮件地址,避免其中有冒用者转移你的注意力。

像素追踪?

像素追踪电子邮件实际上是您发送到目标电子邮件地址以便检索信息(例如目标IP地址)的电子邮件。
⚠️请始终检查是否允许您发送像素电子邮件(可能不允许!)因为这是一种钓鱼行为。
👉如果您是防御者,请参见这里:《如何阻止您的电子邮件被跟踪?

电子邮件地址和暗网

除了表面网络和深网之外,暗网上也可能存在电子邮件地址。暗网是不会被表层网络爬网程序索引的,因此需要TOR浏览器之类的“特殊”软件来访问。
由于暗网几乎没有索引,因此搜索诸如电子邮件地址之类的信息可能非常困难。不过也有一些方法,比如下面:
⚠️尤其是提醒这篇文章中展示的隐身失败教训 《这些使用暗网的人是如何被抓到的?》其中提到了致命的电子邮件地址,将暗网和明网的身份关联起来了。如果您是防御者,请格外小心这点。
好啦,就是这样!您学到了吗?

为什么翻墙越来越难了?

$
0
0
对于生活在中国大陆的网民来说,“翻墙”这个词是既令人激动又让人痛苦。之所以让人激动,是因为翻墙后,你的网络将打开一个新的世界,你可以看到、听到新的声音和图景;之所以让人痛苦,那是因为近年来翻墙变得越来越难了。
很多年以前,你可以通过一些翻墙软件,比如VPN、Proxy等,轻松地翻到墙外。而如今,翻墙越来越困难,翻墙的人甚至可能因为违法而被抓。而大量的翻墙软件纷纷阵亡,剩下来好用的翻墙软件已经越来越少了。

为什么翻墙在今天越来越难了呢?

这当然有政策上的原因。显而易见,”有关部门“对于翻墙这件事打压得越来越严了,甚至相关的法律、法规纷纷出台,先是禁止无照出售VPN,而到最近几年,因为翻墙被抓的事也开始出现了。
那么,从技术层面上分析,是什么让GFW防火墙越来越难以逾越了呢?
今天我们来介绍一种GFW常用的反翻墙技术——DPI (Deep Packet Inspection,深度数据包检测)。

什么是深度数据包检测(DPI)?

数据包是指通过互联网从用户的电脑发送到网站服务器的数据块。当你上网时,你的网络服务商(ISP,如中国电信、联通等)可以轻松地读取这些数据包,也就是说你通过网络传什么数据他们都知道。
当你使用VPN时,VPN在我们的电脑和VPN服务器之间建立了一个安全的加密隧道,使我们的互联网流量很难被抓取。然而,使用VPN并不总是能保证隐私安全。DPI(深度数据包检测)技术可以击败VPN加密技术,可以从VPN数据包中嗅出并识别出很多信息。

DPI技术的工作原理

DPI的工作原理分为两部分。
  • 通过读取互联网数据包元数据(数据包头),这种技术可以识别到你现在在连接使用什么样的数据,如播放视频、连接VPN等。
  • 此外,通过读取互联网数据包内容(数据包主体),DPI可以确定实际传输的数据。
DPI能够深入到网络数据包中去寻找数据和可识别的模式。这是通过在ISP防火墙上对传入和传出的流量进行大量检查来完成的。
中国的GFW防火墙今天已经训练有素,可以检测到流经网络服务器的TLS握手,一旦这些服务器被识别为VPN服务器,GFW会通过阻止与这些VPN服务器的TLS握手来阻止VPN连接。没有这种握手,你就不能使用VPN服务。GFW也使用同样的技术来阻止HTTPS流量到某些网站。

如何对抗深度数据包检测(DPI)?

为了对付DPI,一些针对中国大陆用户的VPN服务商开对原有的VPN协议进行了改造,开发出可以躲避DPI的特殊版VPN协议,比如StealthVPN等。在中国大陆使用VPN软件时,如果你的VPN软件提供这种模式,那么你一定要勾选这种模式!
然而GFW也是在一天一天地进化的,如今它的检测识别能力也在不断增强,所以有时候即使是StealthVPN也难以逃过它的魔掌。
不过,我们周围还有一批懂技术的网络开发者,他们在不断地开发新的翻墙技术,来和GFW斗争。让我们希望,新的翻墙技术不断涌现,让我们翻墙越来越容易!

Viewing all 1645 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>