杂谈
之前我们讲了很多基于OSINT(开源情报)框架下的内容,例如
当然,我们也整理了一份完整思路,如果您感兴趣也可以看下
即日起,我们将针对社交软件给大家提供一些思路和工具,今天我们先分享一下twitter的社工技巧吧!
![图片[1]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220115100442877-1024x470.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
下面的工具最大的优势就是不基于twitter的api,纯python爬虫实现的,所以超级强大!
视频教程
视频里的方法是直接使用的国外的服务器,因此无需科学上网,直接输入命令就好了!
(福利:您可以点这里领取到vultr 100美元体验券,可以白嫖一年最低配的国外服务器)
勘误说明:视频中是clear清屏 口误打成clean了😅
工具安装
方法一:从git上clone
git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt
方法二:Python下的twint模块安装(视频中使用的下面这种方法)
安装twint
模块
pip3 install --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint
部分运行出现报错,则需要修改token.py
具体每个人的环境不同(我的是在/usr/local/lib/python3.6/site-packages/twint/token.py
下面)
import re
import time
import requests
import logging as logme
class TokenExpiryException(Exception):
def __init__(self, msg):
super().__init__(msg)
class RefreshTokenException(Exception):
def __init__(self, msg):
super().__init__(msg)
class Token:
def __init__(self, config):
self._session = requests.Session()
self._session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'})
self.config = config
self._retries = 5
self._timeout = 10
self.url = 'https://twitter.com'
def _request(self):
for attempt in range(self._retries + 1):
# The request is newly prepared on each retry because of potential cookie updates.
req = self._session.prepare_request(requests.Request('GET', self.url))
logme.debug(f'Retrieving {req.url}')
try:
r = self._session.send(req, allow_redirects=True, timeout=self._timeout)
except requests.exceptions.RequestException as exc:
if attempt < self._retries:
retrying = ', retrying'
level = logme.WARNING
else:
retrying = ''
level = logme.ERROR
logme.log(level, f'Error retrieving {req.url}: {exc!r}{retrying}')
else:
success, msg = (True, None)
msg = f': {msg}' if msg else ''
if success:
logme.debug(f'{req.url} retrieved successfully{msg}')
return r
if attempt < self._retries:
# TODO : might wanna tweak this back-off timer
sleep_time = 2.0 * 2 ** attempt
logme.info(f'Waiting {sleep_time:.0f} seconds')
time.sleep(sleep_time)
else:
msg = f'{self._retries + 1} requests to {self.url} failed, giving up.'
logme.fatal(msg)
self.config.Guest_token = None
raise RefreshTokenException(msg)
def refresh(self):
logme.debug('Retrieving guest token')
res = self._request()
match = re.search(r'\("gt=(\d+);', res.text)
if match:
logme.debug('Found guest token in HTML')
self.config.Guest_token = str(match.group(1))
else:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0',
'authority': 'api.twitter.com',
'content-length': '0',
'authorization': self.config.Bearer_token,
'x-twitter-client-language': 'en',
'x-csrf-token': res.cookies.get("ct0"),
'x-twitter-active-user': 'yes',
'content-type': 'application/x-www-form-urlencoded',
'accept': '*/*',
'sec-gpc': '1',
'origin': 'https://twitter.com',
'sec-fetch-site': 'same-site',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://twitter.com/',
'accept-language': 'en-US',
}
self._session.headers.update(headers)
req = self._session.prepare_request(requests.Request('POST', 'https://api.twitter.com/1.1/guest/activate.json'))
res = self._session.send(req, allow_redirects=True, timeout=self._timeout)
match = re.search(r'{"guest_token":"(\d+)"}', res.text)
if match:
logme.debug('Found guest token in JSON')
self.config.Guest_token = str(match.group(1))
else:
self.config.Guest_token = None
raise RefreshTokenException('Could not find the Guest token in JSON')
实战案例
以下内容,我们默认您已经下载好了相关的python脚本
今天,我们要社工的对象,是黑寡妇(Scarlett Johansson)~
![图片[2]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220115115405300.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们先找到twitter的地址(我们发现寡姐并没有twitter认证的账户,因此我们只能从粉丝账户里寻找一些信息了)
https://twitter.com/Scarlett_Jo
https://twitter.com/BestfScarlett
(访问不了的请科学上网)
![图片[3]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220115135044141-1024x685.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
由于以下内容是实战部分,如果你想借用命令,请记得将BestfScarlett
改成你要搜寻的用户名
首先,我们可以先收集一下寡姐之前发过的全部推特内容
twint -u BestfScarlett
![图片[4]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116042019291-1024x244.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
但是这样并不高效,因为一个人的推文有很多,这时,我们可以做一些筛选!
根据点赞数、评论、转发数筛选
例如,我们只看点赞数超过500的
twint -u BestfScarlett --min-likes=500
![图片[5]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116044029267-1024x55.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
或者,我们只看评论超过10的
twint -u BestfScarlett --min-replies=10
![图片[6]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116045757639-1024x352.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
链接一般在一条的最后面,随便打开一个
![图片[7]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116045810630-1024x676.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
或者,我们只看转发量超过100的
twint -u BestfScarlett --min-retweets=100
![图片[8]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116045857338-1024x284.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
根据时间维度筛选
当然,我们还可以做到更精细,比如我们想看寡姐2021年之前发过的内容,我们可以这样
twint -u BestfScarlett --year 2021
![图片[9]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116045929523-1024x401.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
某个日期后发送的内容,比如在《复联4》在美国上映后(2019年4月26日),我想看看寡姐的推文
twint -u BestfScarlett --since 2019-4-26
某个时间点之后发送的内容,例如在2019-04-26 20:30:15
之后发布的内容
twint -u BestfScarlett --since "2019-04-26 20:30:15"
社工进阶
- 关键词索引
我这里下搜索twitter整个社交平台下,关于 寡姐(Scarlett Johansson)的资料
twint -s Scarlett
然后你可以看到全球用户发布的与其相关的内容
![图片[10]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116044350416-1024x451.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
- 关键词配合twitter号索引
我这里想搜索寡姐(Scarlett Johansson)中与美队相关的内容(关键词我们这里就写Captain
就行)
twint -u BestfScarlett -s Captain
- 关键词配合认证twitter账户索引
比方说,我这里想搜索寡姐(Scarlett Johansson),而且来源要是认证账户的
twint -s "Scarlett Johansson" --verified
![图片[11]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116044447396-1024x391.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
- 泄露手机号、邮件信息索引
我们可以通过下面的命令来检测寡姐(Scarlett Johansson)的手机号、邮箱等资料是否曾泄露于她之前的推文中
检测邮件泄露的命令
twint -u BestfScarlett --email
检测手机号泄露的命令
twint -u BestfScarlett --phone
我们这里没有检测到,我们这里换到了寡姐的前夫小贱贱(https://twitter.com/VancityReynolds),我们尝试一下
![图片[12]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116050306471-1024x699.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
twint -u VancityReynolds --email
![图片[13]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220116050410740-1024x98.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
居然真的可以检测到泄露的邮件账户地址
导出数据
导出数据只是命令中的一个附加参数,相当于之前我们的命令在后面加上-o
相关的命令,也可以导出
(这里假定我们导出的文件名称为file)
- 导出txt格式 -o file.txt
- 导出csv格式 -o file.csv –csv
- 导出json格式 -o file.json –json
当然,这些都是简单的,如果你还想玩点更骚的,还可以直接写到数据库里
- 写入sqlite数据库中 –database tweets.db
- 写入es数据库中 -es localhost:9200
写到数据库中玩法就更多样了,你可以通过一些图表,来更清晰地展现这些用户画像,用户之间的关系以及发送推文的报表,深层次的玩法,我们以后讲!大家可以期待一下!
![图片[14]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220115143143685.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[15]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220115143204736-1024x520.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[16]-【社工进阶】如何通过Twitter社交软件进行社工-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/01/20220115143406642-1024x601.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
下面我们将配合实际的功能,跟大家说下如果我想把用户的一些资料导出到json文件中,应该怎么做?
导出粉丝列表
如果你想看哪些用户关注了寡姐,可以通过下面的命令导出到Scarlett_followers.json
文件中
一般在社工中我们不这么操作,她的粉丝数太多了,这样做一般意义不大!
twint -u Scarlett_Jo --followers -o Scarlett_followers.json --json
导出TA的关心用户
如果你想看寡姐关注了谁,可以通过下面的命令导出
twint -u BestfScarlett --following --user-full -o Scarlett_folloing.json --json
导出最近900条推文
twint -u BestfScarlett --following --user-full -o Scarlett_latest_post.json --json
导出TA喜欢的文章
twint -u BestfScarlett --favorites -o Scarlett_favorites.json --json
- 最新
- 最热
只看作者