最近,国外的开源情报(OSINT)爱好者分享了一篇帖子,查找朋友不可见的facebook用户的朋友圈,这篇帖子也在我们的知识星球(开源网络空间情报)中第一时间分享。作者利用十分巧妙的技巧绕过了facebook官方的这种限制,不但能找到部分不可见的朋友,还能对朋友之间的社区进行探索。笔者对这个方法也完整地实验了一把,亲测有效。下面就把该方法的思路和工具介绍给大家。
Facebook查看的朋友权限,是可以设置的,如下图所示。
这里有4种权限设置选项:公开可见,只有朋友可见,只有本人可见,或自定义可见。当我们选择只有本人可见的时候,理论上只有本人可见,这时候我们要怎么样才能够知道这个人的朋友圈呢?这个时候想要去探索不可见朋友的Facebook用户,原理上其实不复杂,只是过程有点绕。
我们直接看不到对方(用A表示)好友的情况下,其实可以去看其他用户(B)的朋友列表,如果在B的朋友列表中出现了A,则代表他们是朋友关系。那怎么找到用户B呢,这很好办,只要多去翻一翻对用户A的状态进行点赞或评论的人是谁就行了。然后,由于用户B的朋友列表可见,再去翻他的朋友中有没有和A是朋友关系的,这样不断的迭代,就能勾勒出用户A的朋友圈了。
详细一点,这个方法可分为两步:
第一步,搜索在目标的朋友圈内评论的用户。再通过这些用户作为跳板,也可以说支点,围绕这些用户,通过检索这些用户的朋友列表,分别找到这些用户的朋友。如果这些用户的朋友中有目标用户,再进行第二步。
第二步,检索这些用户的朋友的朋友列表最后形成一个闭合的环路或者直到他的朋友的好友列表是关闭的,将这些信息通过线的方式串联起来最后构成一个属于目标用户的关系网。
我们首先通过手工验证一下这个方法的可行性。
这里我们以MarkZuckerberg为例。
我们从图中无法看到扎克伯格的好友列表,这说明他隐藏了自己的好友列表,那么我们只能从评论他的人去发现与他是好友的人的关系,我们从他的评论中选出一个人Julie Zhou,从她的好友中我们能够找到Mark Zuckberg。
接着,我们可以从她的好友中继续寻找她的好友的好友列表里存在Mark Zuckberg的人,譬如Ami Vora,如下图所示,
我们进入到Ami Vora的好友列表,可以看到她的好友列表里面有Mark Zuckberg,这样我们就通过Mark Zuckberg的评论,找到了他的两个好友,虽然他自己没有公开好友信息,但是我们仍然可以从侧面找到他的好友。
以上我们主要是采用手动的方式来查找目标的朋友,实际上,这一过程完成可以做到自动化,这篇帖子的作者也将它的自动化工具给出来了。下面我们就来看自动化工具是怎么实现的。
一、查找目标的facebookID
这里是第一步,搜索我们想要了解的那个人的朋友圈,首先我们要进入他的主页面,这里我们用Facebook的创始人马克扎克伯格作为例子。
1、搜索目标用户
2、查找想要了解的目标用户名,进入他的主页
3、使用ctrl+U检查网页源代码
4、采用ctrl+F查找fb://profile
可以看到有两个匹配项,这里这个4指的是用户ID,在我们的例子中,由于MarkZuckerberg是该平台的第一批用户之一,所以这个数字非常小;对于普通用户来说,这个数字会大得多。
5、这里采用原帖作者提供的工具,地址如下所示:
将这个地址下载下来,根据readme进行配置安装,这里就不详细介绍了。
安装好以后命令
python fint.py -fu [email protected] -fp fbpassword -d geckodriver.exe -t 4 -ls 10 -lp 10 -lc 5 -lr 5
[email protected] 这个地方用自己的facebook账号,fbpassword这个地方用自己的密码代替。至于上面的参数的意思是抓取最多100个评论的人(-lc),最多1000个朋友(-lr),深度最多10层(-ls)和每个人的10张照片(-lp)
6、采用python命令
python ffff.py -fu [email protected] -fp fbpassword -d geckodriver.exe -t 4 -p 558259929 -q
这里的558259929是枢纽账号的ID,所谓枢纽账户是指我们通过这个账户找到的关于目标账户的朋友的账号ID。这个枢纽账户,主要来自于目标账户下方的评论人员。注意,该工具的频繁使用,可能导致facebook号被封;最后,完成后可以发现以下三个文件。
4-friends.csv
4-friends.gexf
session-4-20190508130137
其中第三个文件是在该程序进行到一半卡进程的时候,可以停止程序运行,然后再重新启动的必要文件,启动的方式为
python ffff.py -fu [email protected] -fp fbpassword --resume session-4-2019050812320
红色部分跟的就是上面第三个文件。
CSV文件包含表单中的朋友列表、ID、名称,.gexf文件包含一个图形的表示形式,该图形可以在Gephi中打开(稍后会有更多信息)。程序最终自动终止后打印所有的朋友的信息如下图所示:
7、采用Gephi打开上述中的第二个文件4-friends.gexf,可以看到这是杂乱无序的一团线团。如下图所示:
8、所以我们需要通过布局来调整图像,布局的按钮如下所示:
这里布局有12种算法,前六种是主要的布局方法,后六种是辅助布局
具体的关于布局的效果,如https://www.cnblogs.com/tonglin0325/p/8318628.html有详细的描述。
这里我们先使用了OpenOrd,布局然后再采用了ForceAtlas2布局,其效果如下图所示,也不是很好,看起来也是黑乎乎的一团。
紧接着我们采用模块化的方式,让它看起来更加的清晰一点
1)首先是在统计处,选择模块化对应的运行,如下图所示。
紧接着就会出现如图所示的设置框,这个设置框中最主要的需要设置的东西,就是这里画红色圆圈的部分,这里是设置的解析度,当解析度越大,其划分的社区就会越小。这里我们设置它的解析度为0.6
点击确定后,会得到一个HTML report,此时,这个图案仍然没有什么变化。之后的查看工作区-外观,如下图所示。
点击partition,选择modularity class,如下图所示:
最后再点击应用,就会得到如下图所示:
可以看到,不同颜色,代表不同的朋友圈社区。打个比喻,紫色是大学校友圈子,蓝色可能是工作同事圈,黑色可能是亲戚圈子等等。通过该工具,不但找出了朋友不可见用户的朋友,还划分出了他的朋友圈社区。这实在是很有用的收获。
这种方法还是存在一定局限,即很难将目标用户的好友列表覆盖完整,只能挖掘出部分的好友。想要更全面地挖掘目标用户的好友,需要不断更换枢纽账户,而且尽量要是不属于同一个圈子的枢纽账户,才有能将目标好友尽可能覆盖的全。最后,开源情报收集正逐渐成为一个专业领域,笔者也会不断推出开源情报收集技巧方面的帖子,一些好的工具,我们也会在自己的知识星球(开源网络空间情报)上推出,欢迎大家关注。
*本文作者:scu-igroup,转载请注明来自FreeBuf.COM