我从海外飞回了美国,我的所有电子设备都被国土安全部扣押,包括我的笔记本电脑,外部硬盘驱动器,闪存驱动器等。

一个多月后我终于把东西找回来了。我有2个问题:


是否知道国土安全部是否曾在被劫持的计算机上植入间谍软件,病毒,跟踪设备等?
我应该寻找什么?我应该采取的步骤来消毒我的东西,你会怎么做?

编辑:我无法重新格式化,刻录硬盘等,因为有人建议在笔记本电脑上进行非常重要的工作,例如我已经使用了一年多的软件。

是的,我已经备份了所有数据。不幸的是,备份全在我身边,他们也抓住了所有备份(2个外部硬盘驱动器,3个USB闪存驱动器)。因此,仅使用备份是不可行的。

此外,有人说人们不能不违反法律就不能帮助我。我不知道有任何法律规定删除间谍软件/恶意软件/病毒是非法的,或者删除政府放置在您计算机上的任何东西都是非法的。

编辑:我想我可以改写问题是“您将如何安全地从计算机上获取已编写的(文本文件)源代码,'安全地'意味着扫描文本文件以检测异常,然后将其传输或以某种方式放置在另一台计算机上?”

评论

显而易见的答案是:格式化所有内容并重新安装。尽管如果他们修改了主板,那将无法保护您。更详细的建议(如果有)将取决于您所运行的操作系统(假设是Windows?),便携式计算机的硬件,是否在家中备份了所有数据(即购买一台新便携式计算机并进行备份)数据?)

好吧,我会烧掉它,然后从商店里购买一个而不是在线订购,开始一个新的。再说一次,我只是偏执。可以修改固件,尤其是硬盘驱动器,BIOS,视频卡等上的固件。

除了安全步骤外,我还要与律师交谈。如果这不构成不合理的搜查和扣押,我将无法想象。在没有可能造成犯罪的情况下,这是非法的。

我想,@ Iszi取决于您对“法律”的定义。自9/11以来,美国宪法没有改变,并且明确指出,这是非法的,无论其他法律可能怎么说。仅仅因为法律并未被裁定为违宪,并不意味着它并非违宪。当然,非公民的权利可能有很大的不同,但是OP似乎是指美国为家,因此我认为他/她是公民。

这就是为什么应该有异地备份hanselman.com/blog/TheComputerBackupRuleOfThree.aspx

#1 楼

鉴于您的笔记本电脑长期以来拥有意图不明的政府机构,实际上您无法将其恢复到完全可信赖的状态。

如果您认为美国国土安全部会如果是敌对的,那么前进的唯一安全过程包括:假设笔记本电脑上的所有数据以及所有其他没收的硬件都受到破坏。


更改可能已在设备上存储/缓存的帐户的所有密码。
更改其他帐户的所有密码,这些帐户使用与设备上已存储/缓存的帐户相同的密码。
使所有可能已存储/缓存在设备上的支付机制失效。
向潜在受影响的第三方传达适当的隐私警告。以及其他所有没收的硬件都经过修改,以允许美国国土安全部或相关机构将来收集数据或控制系统。


销毁设备。不要捕获任何备份图像或复制任何文件。只需按原样刻录/粉碎/粉碎/粉碎它们。
通过可信赖的供应链从可信赖的来源购买替换硬件/软件,然后从头开始重建。
如果存在可信赖的备份(备份) (也不会被没收,并且无法使用可能已在没收设备上存储/缓存的凭据进行远程访问),请根据需要从这些源中恢复数据。




缺少这些都会留下一些极其不希望的可能性:


美国DHS可能会继续访问您的在线帐户和/或财务资源。
您的一台或多台设备可能带有持久性恶意软件,这些恶意软件使美国DHS或相关机构可以窥探您或控制您的系统。您又回到了#1。
存储在其中一台设备上的文件可能包含恶意软件,这些恶意软件会在打开时自行安装。然后请参阅#2。
您的其中一台设备上的硬件或固件可能已被修改为包含恶意软件,这些恶意软件可能会在连接到另一台设备时自行安装。再次参见#2。
您正在处理的任何软件项目和/或用于编译它们的工具都可能已被修改为包含恶意软件。再次回到#2,如果在分发之前没有发现并处理它,还会对您的客户产生进一步的影响。

您应该查看10个不变的安全法则。法律#3当然适用。假设他们已经利用了该法律,那么您可能会认为法律#1和#2也适用。


法律#1:如果一个坏人可以说服您在自己的程序上运行他的程序计算机,它不再是您的计算机法2:如果一个坏人可以更改计算机上的操作系统,那么它就不再是您的计算机法3:如果一个坏人可以不受限制地物理访问您的计算机,那么它就不再是您的计算机


还要查看《安全管理10大不变法》。在这里,第四法则是最恰当的。


法则4:在从未获得过安全保护的计算机上安装安全修补程序并没有多大好处


评论


好人,尽管我会用“不完全值得信赖”代替“敌对”。

–重复数据删除器
2015年11月12日在22:14



如果您确实想安全地保存人类可读的文件,则唯一的办法就是在受感染的设备上打开它们,然后手动将其转录为受信任的系统。痛苦?是。但是,只有您的大脑,眼睛和手指能够提供足够的过滤功能,以确保泄漏的数据不会传到新机器上,这是唯一的设备。当然,如果您在谈论源代码,请确保您了解要转录的代码:P

– Doktor J
15年11月12日在22:25

@DoktorJ OP不能仅通过复制粘贴将代码上传到在线服务(例如GitHub或Google Docs),再移动到安全/新鲜的计算机上,然后将其复制粘贴回去吗?我看不到有什么坏处,因为该代码已经被政府读取,并且一旦将其粘贴到GitHub并上载,然后检查它是否上载了正确的代码(复制时没有被其他内容替换) -pasted),GitHub存储库应该是“干净的”。

– Numeri说恢复莫妮卡
2015年11月13日在2:05

“销毁设备”是可怕的建议。像这样被破坏的设备对于了解敌人的能力非常有价值。如果愿意,您甚至可以将它们出售给安全研究人员,尽管从保护您的隐私的角度来看,与您信任的人合作以挽救所需的任何数据并让他们研究对设备所做的事情可能更有意义。

–R .. GitHub停止帮助ICE
2015年11月13日下午2:35

@Numeri我建议转录的原因是因为该代码的每个字符然后都通过OP的眼睛,头脑和手指。如果他的系统确实受到威胁,我不会把它放在坏的角色之上来修改代码以在其中嵌入恶意内容。通过手动转录,这些东西会跳出来,使它们在复制/粘贴中完全丢失。

– Doktor J
2015年11月13日下午5:01

#2 楼

这是一个很大的问题。

基本上,一旦某个设备被某个国家(尤其是美国)视为复杂的民族国家而被敌方抓住,该设备和其中包含的所有数据将无法被信任。唯一安全的方法是不信任该设备并销毁它。

斯诺登泄密事件暴露了美国政府破坏计算机的各种方法。这包括在键盘本身,GPU或其他组件中安装硬件错误,即使重新安装了操作系统,它们也会使计算机完全扎根并受到威胁。他们还安装了无线电发射器,以通过隐藏的无线电泄露数据来击败永远无法连接到互联网的“无空隙”计算机。雅各布·阿佩尔鲍姆(Jacob Appelbaum)在该主题上的演讲很有启发性:我强烈建议观看此视频,因为他详细介绍了政府已知使用的各种设备。也提供维基百科摘要。

现在,国土安全部代理可能没有安装这些设备中的任何一个,并且没有与NSA相同的功能。但是,这不能排除。

虽然您可以通过将硬盘取出并将其放入USB机箱/使用SATA转USB电缆来从硬盘中检索一些数据,但是风险。我将使用一台一次性使用的一次性计算机来读取驱动器。.由于驱动器的固件或控制器中可能安装了恶意软件,这些恶意软件将尝试感染所插入的任何计算机。

为了解决这个问题,我建议购买法医硬件复制器设备(称为写块复制器)。然后,将SATA驱动器从您的计算机插入其中,并将其克隆到另一个磁盘。然后,将文件从该克隆磁盘复制到另一台计算机。那应该防止基于固件的损害。

但是,您不能保证文件本身中没有植入某种类型的蠕虫,等等。通过复制到多个设备,而不使用最初用于插入硬盘驱动器的设备,可以最大程度地减少长时间遭受破坏的机会;但是文件仍有可能出现问题。 AntiVirus等将无法抵抗这种复杂的攻击。<​​br />
这就是为什么计算机不再受信任的原因。您可以采取类似硬件复制器之类的步骤来帮助最大程度地减少出现问题的可能性。

另外,这个故事可能值得注意:http://www.wired.com/2010/11/hacker-border -search / ..著名的黑客通过DHS在边境检查了他的计算机,他的结论是我认为非常有效的结论:


“我现在不信任任何这些设备”,Marlinspike说道,他不想透露自己的法定姓名。 “他们可能已经修改了硬件或安装了新的键盘固件。”


评论


万一硬盘驱动器损坏了固件(可能会利用其驱动程序中的漏洞),写阻止程序可能还不够。

–user253751
2015年11月13日下午5:54

@immibis怎么样?我很难相信硬盘驱动器上的固件ROM可能有足够的空间向市场上的各种复制器模块提供基于定制固件的攻击。甚至最好的对手都拥有能够感染任何可以读取/复制SATA驱动器的设备的固件的恶意软件。

–人字形猫
2015年11月13日在18:19

我以为写阻止程序会通过未更改的传递读请求,因此,如果在处理读请求时存在任何漏洞,则写阻止程序仍将使您的计算机容易受到攻击。

–user253751
2015年11月15日在2:10



@immibis我认为这不太可能发生,因为您必须在市场上的每个写块duper中都已经发现并能够利用它们中的漏洞……这可能会占用比固件ROM等可用空间更多的空间。 。

–人字形猫
2015年11月30日23:26

或利用读取来利用主机。

–user253751
15年11月30日在23:28

#3 楼

根据您对此的偏执程度和代码的数量,在极端情况下,您可以使用LOW-TECH方法来规避已完成的所有操作。
购买便宜的打印机。将其连接到笔记本电脑。将您的源代码打印为大量文本。打印出所有图形,布局等。打印出任何所需的用户设置。销毁笔记本电脑和打印机。

当然,现在您必须重新输入所有源代码,重新创建图形等,但是您实际上不必重新发明任何东西。 IP,没有任何人可以跟踪的电子连接。

评论


当然,您必须假设DHS并未将自己的恶意软件污染您的源代码-否则,您将在手动导入(即键入)指令的麻木过程中抓到它。以及大量来自硬拷贝的源代码。

– Iszi
2015年11月12日20:25



@Iszi我以为OP会充分了解他的消息来源,以告知是否有任何更改,而DHS不会承担这样的风险。但是无论如何,我都会以此为契机来检查代码,因此在重新输入代码时要考虑这些行的作用,并删除不必要的内容或提出更好,更有效的方法。

–龙
15年11月12日在20:30

@CountIblis嵌入式恶意软件可能已将自己加密为打印输出上看似随机的点的图案,当市场上的任何商用光学阅读器读取时,它们都会将自身编码为新的恶意软件。 [极度偏执的微笑]

–龙
15年11月12日在20:42

不,其他答案都有。 forloop中“ <”和“ <=”之间的差异,或者“ +1”和“ -1”之间的差异,或者根本没有任何差异,您在心理上无能为力。

–djechlin
15年11月13日在1:01

如果您只是要提取源代码,则从实时CD引导并将源文件复制到云设备似乎比这更有效。

–尼尔·史密斯汀(Neil Smithline)
2015年11月13日在7:56

#4 楼

1)所以没有办法知道他们还没有。我觉得那比他们的薪水高一点(他们有时间吗?)。这取决于您的妄想水平。如果在第一个春日之后您的想法像平静的溪流一样流淌,那么请将数据复制到新机器上,然后继续生活。如果您想知道在您的思想中how叫的狗是否是黑暗王子的使者,那就用铝热的篝火燃烧一切。

2)就我个人而言,我将销毁设备,在其坟墓上哭泣,然后继续前进。使用我没有的备份。但是,我保留在计算机上的大多数数据都位于云中,或者可以替换。

如果这项工作确实是无价的,则需要进行审核。首先,将驱动器从笔记本电脑中取出并将其插入隔离的环境-没有网络的新计算机。方便的Linux Live CD对此非常有用。挂载有问题的驱动器,并浏览文件-您看到什么奇怪的东西了吗?缺少什么吗?任何奇怪的Windows文件?使用Clam AV也是一个不错的选择。是否有您不认识的新文件?删除它们。

在Linux Live CD中,我还将进行小幅复制。除非它们足够复杂,无法在其中放置Windows和Linux恶意软件,否则您将阻止任何监视程序自动播放并找到新家。我不能对此施加太大压力-知道您要复制的内容。检查您的项目-您不记得有任何新添加的内容吗?

之后,请使用干净的Windows环境并注意任何可疑的活动。建立良好的安全策略,下次加密驱动器!哦,恢复数据后,请扔掉所有东西。固件攻击是真实的。

评论


这是一篇很棒的文章,其中包含一些技巧,可帮助您将敏感数据带入边境。对我来说尚不清楚,一旦他们抓住了笔记本电脑,对驱动器进行加密是否会有所帮助。他们会要求您提供密码,如果您拒绝,他们肯定不会将笔记本电脑退还给您。

–麦克·恩斯沃思(Mike Ounsworth)
2015年11月12日19:24



我知道Moxie Marlinspike受到骚扰时对他有帮助-他把东西拿回来了。如果没有其他问题,那么您可以放心,加密容器中的所有内容都可以。

– Ohnana
2015年11月12日19:27

是吗有趣。

–麦克·恩斯沃思(Mike Ounsworth)
15年11月12日在19:28

@Ohnana容器中的所有东西都可以,但是如果容器本身(例如:硬盘驱动器固件)不正确,那么您仍然会被用软管扎住。

– Iszi
15年11月12日在19:48

如果您真的很偏执,那么我会选择在现场CD上使用比Linux广泛使用的OS。至少BSD,像Haiku(BeOS)克隆这样的怪异版本会更好。

–丹在火光中摆弄
15年11月12日在21:28

#5 楼

正如其他人指出的那样,对于源代码,您需要做的不仅仅是安全地将其复制出来-您还需要能够检测到篡改。为此,您需要进行大量的代码审查。

如果代码非常复杂,或者您对它的了解不够充分,那么您还有另一种选择:众包您的审查。只需将代码发布为开源,然后邀请人们找到植入物即可。我想有人会喜欢这个挑战。

评论


...并且失败了,一次将其发布到Stack Overflow中,并带有一个相关的noob问题作为诱饵。我发誓这就是某些人进行质量检查的方式。

–piers7
2015年11月13日,0:19

+1可以提高创造力,这也许是挽救不受信任的源代码的一个实际步骤(即,降低但不破坏它的可能性)。

–djechlin
15年11月13日在1:03

如果源代码保存在git中,仅知道来自某个源的最近提交的正确哈希(没有受到破坏),将为您提供一个合理的置信度,即不会篡改任何历史记录。

–R .. GitHub停止帮助ICE
15年11月13日在2:37

#6 楼


获取另一台(受信任的)计算机。
获取两个USB /串行适配器和一根无效的调制解调器电缆(用于连接它们)。您的受信任计算机不太可能通过串行连接进行远程利用。将一台适配器连接到每台计算机。
在受信任的计算机上,运行cat /dev/ttyS0 > hd.img。 (您的串行适配器可能不是/ dev / ttyS0;您可能希望以某种方式进行检查)。
连接两台计算机。
在不受信任的计算机上,运行cat /dev/sda > /dev/ttyS0(或要映像的任何硬盘驱动器,以及该计算机上调用的串行适配器的任何内容)
(如果该计算机尚未运行Linux,则使用Live CD或一次性Live USB)
完成后,请使用ctrl-C计算机的猫进程(因为它将继续等待更多数据)。

(如果您要镜像的驱动器更多,请将它们附加到不可靠的计算机上并重复该过程)

现在,您应该拥有一个硬盘驱动器映像,并且在获得该映像的同时不会使受信任的计算机容易受到攻击。由于映像的内容不可信,请不要在虚拟机中启动它。

您可以使用十六进制编辑器将其打开,然后尝试搜索所需的数据,但是它将永远占用您的时间。整理文件。

相反,编写一个程序(使用内存安全的语言,例如Java或Python)来解析文件系统的数据结构并提取所需的文件。请确保在十六进制编辑器中检查每个提取的文件,然后再将其用于其他用途,以防被篡改。 (甚至不要使用cat,只要不将其设置为显示ASCII字符就可以了。)

销毁不可信的计算机和设备(包括您在该计算机上使用的所有Live USB);您不知道他们还没有添加任何跟踪设备。他们过去(可能)已经这样做了,因此这种担忧并非没有道理。

#7 楼

我从未遇到过这种情况。但是据我所知,反向清除过程是可行的。引导外部媒体,并小心地一张一张地复制您的工作文件,并在进行过程中对其进行审核。然后重新格式化。

很高兴最新的系统没有通过文本或图像文件(至少是已知文件)的攻击。如果确实出现神秘进程,请提交工作文件以进行恶意软件分析。如果您有任何疑问,DHS将后悔将您作为目标,并将他们最复杂的恶意软件浪费在低优先级目标上。

#8 楼

为了将来为自己和他人提供参考,我建议在旅行之前和之后对计算机上的所有文件以及固件执行完整的SHA256散列。请确保将SHA1哈希列表留在家里。

我还建议您出国旅行时,使用更旧的笔记本电脑,该笔记本电脑已被擦除,并且提供了全新的操作系统供您选择。在旅行之前。仅获取您需要的文件。较小的文件应托管在云中或进行远程访问。较大的文件应单独加密,并使用无害的名称和不标准的文件扩展名,以免显示其用途。

返回之前,您应删除所有不需要海关代理访问的文件。

至少,这些步骤将使您缩小确定哪些文件可能已添加/修改/删除的重点。

#9 楼

如其他答案所述,BIOS中可能存在间谍软件,或者在修改后的硬件中隐藏了间谍软件。 (例如,从理论上讲,您可以想象一种复杂的攻击,其中一个处理器被模拟原始处理器的芯片代替,但它也可以从事其他间谍活动。)

要绝对确保您删除任何此类间谍软件都需要电子方面的专业知识,即使如此,这样做所花费的时间也可能比硬件的价值还高。

但是,恢复数据(而不是可执行代码)时,如果您绝不运行直接或间接来自受感染机器的代码(包括受感染笔记本电脑的硬件直接写入的任何文件),则有可能(尤其是纯文本)。
这意味着:


您不能使用笔记本电脑本身来复制数据。
您无法恢复已编译的代码(假设您不打算反汇编并彻底阅读所有内容)。
恢复的任何源代码都必须手动检查。如果是您自己的代码,则检查添加的间谍软件应该是可行的,但是很耗时。
以上两点适用于可以包含宏或脚本的任何文档类型(例如Microsoft Word和Excel文档)。 >您可以使用受信任的软件来检查和删除宏,以恢复支持宏的文档类型。

您将硬盘连接到新机器上,进行复制,然后再丢弃。

仍然存在文档中的缓冲区溢出攻击的风险,这些攻击针对的是您可能用来查看文档的特定应用程序。
针对这些的可能防御措施(除了检查已知漏洞之外)将使用不太常见的应用程序(而不是笔记本电脑上安装的应用程序,因为它们是您希望使用的应用程序)来查看文档,或将它们转换为另一种格式(使用来自受信任来源的软件)这样做),并可能返回。

受感染笔记本电脑中的硬盘可能已经修改了固件,但是不能直接导致代码在您用来复制它们的计算机上运行(它可能会在读取或写入数据时改变数据) 。尽管从理论上讲,它可能有针对磁盘驱动器的缓冲区溢出漏洞。 。 (Raspberry Pi或类似产品可以快速设置,并且可以消耗)。

#10 楼

您想从受感染的计算机中复制源代码而没有感染新计算机的风险吗?

轻松:



访问开放​​的WiFi网络
/>将您的源代码文件复制到免费的存储云服务(或粘贴bin)中
用家用计算机下载源文件
仔细检查所有源文件是否被篡改(这不太可能,因为他们通常会认为您在某个地方有备份副本,不会打扰,但要取决于软件的复杂性)

这样,您(可能)就不会受到任何直接连接机器连接到家用计算机。您传输的唯一文件是原始文本文件,需要手工检查。因此,剩下的唯一攻击手段就是源代码文件中的不足的代码。唯一能证明这一点的方法是重写新项目中的所有方法。查看旧的源代码,并重新编写每个方法并进行一些小的修复和清理。

#11 楼

其他人已经很好地解决了这里的危险和问题,因此我不会尝试重现。我只想在不可避免的代码审查后添加一个建议。我意识到问题在于计算机的故障,但我建议您也需要对代码进行操作。

因此,假设您已将所有硬件视为全部硬件。注销并充满敌意,您需要从中取回代码。已经有人提出了有关如何使用一次性打印机将代码断断续续地转移到另一台计算机上的建议,并且说您已经这样做了(为防止意外,我会在引导计算机之前将其从受感染的计算机上物理删除)也是。)

因此,您再次输入了代码,并已经对其进行了修改,因此您对此感到满意。我现在要采取的额外步骤是,还要假设代码已经过检查,并且需要在功能级别进行检查,并且如有必要,请进行更改。

这可能是散列和存储密码的方式,也许有一个许可机制(如果有的话),或者您的代码通过Internet以特定方式与用户通信。我只是在想,如果我携带的代码运行的是某个民族角色感兴趣的内容,我会考虑对其进行修改,以便如果他们从其内部工作中收集到了任何东西,下次他们看到它在使用中的行为将与他们期望的行为不同。

tl; dr

我建议您考虑一下您代码的功能正在携带;潜在敌对的演员通过了解其运作方式会获得任何好处吗?如果是这样,请考虑如何减轻某人具有该知识的事实。

当然,这是假定您所携带的代码可能对他们感兴趣。

最后说明;即使我已经从一个已知的安全备份中恢复了代码,这在我的脑海中也是必要的,因为这是已经公开的代码工作方式。

您的情况听起来并不多无论如何都很好玩-祝一切顺利。