As redes sociais são um buraco sem fim quando se trata de usuários expondo dados pessoais. isso qualquer analista de segurança sabe, e tal característica pode ser usado como uma fonte rica para ataques direcionados.
Criou-se um comportamento padrão em post's LinkedIn onde o "influenciador" posta um X conteúdo e para você reles mortal ter acesso, tem que fazer um comentar com seu e-mail para o tal "coach" enviar o resto do conteúdo ou uma planilha mágica.
TÉCNICA
Basicamente encontramos uma padrão de URL nos posts do LinkedIn e com tal informação é possível criar dorks de busca e extrair os emails.
EXEMPLO DE URLS
- https://www.linkedin.com/pulse/planilha-de-controle-ordem-produção-marcos-rieper/
- https://www.linkedin.com/pulse/planilha-para-avaliação-de-desempenho-e-competências-plano-garcia/
- https://www.linkedin.com/pulse/planilha-teste-para-estagiárioxlsdownload-gratuito-arthur/
Identificando o padrão de string www.linkedin.com/pulse/ é possível criar a dork para filtro dos targets.
DORK
site: linkedin.com "linkedin.com/pulse/" "Planilha"
RESULT
EXTRAÇÃO DE TARGET
A extração é bem simples, usei mais do mesmo RR ( Regex + Request ), o único diferencial é pegar um ID criado no Body do post que possibilita pegar todos e-mails do post sem necessidade de paginação.
REVIEW SCRIPT DE COLETA
REQUEST PEGANDO ID
exec("curl -kg --user-agent '{$user_agent}' '{$url_target}'>tmp");
GREP PERMALINK AND ID_URN
$data_article_permalink = 'cat tmp | grep -oP \'(?<=data-article-permalink=").*?(?=">)\'';")'
$data_article_urn = 'cat tmp | grep -oP \'(?<=data-article-urn="urn:li:article:).*?(?=")\'';
URL REQUEST
$url_request_dump_email = "https://www.linkedin.com/content-guest/article/comments/urn%3Ali%3Aarticle%3A{$return[0]}?count=100&start=0&articlePermalink={$return[1]}";
DUMP FILES
$file_dump_html = "dump_html_tmp_{$return[0]}";
$file_dump_email = "emails_{$return[0]}";
REQUEST URL DUMP DE COMENTÁRIOS
exec("curl -kg --user-agent '{$user_agent}' '{$url_request_dump_email}'>'{$file_dump_html}'");
GREP EMAILS
exec('cat "'.$file_dump_html.'" | grep -E -o \'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b\' | sort | uniq >'.$file_dump_email);
CODE
$targets = array_unique(explode("\n",file_get_contents("posts.targets")));
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0';
foreach ($targets as $key => $url_target) {
#REQUEST PEGANDO ID
exec("curl -kg --user-agent '{$user_agent}' '{$url_target}'>tmp");
#GREP ID
$data_article_permalink = 'cat tmp | grep -oP \'(?<=data-article-permalink=").*?(?=">)\'';
$data_article_urn = 'cat tmp | grep -oP \'(?<=data-article-urn="urn:li:article:).*?(?=")\'';
$return[] = exec("{$data_article_urn}");
$return[] = exec("{$data_article_permalink}");
#SLEEP
$sleep = random_int(1,5);
sleep($sleep);
#URL REQUEST
$url_request_dump_email = "https://www.linkedin.com/content-guest/article/comments/urn%3Ali%3Aarticle%3A{$return[0]}?count=100&start=0&articlePermalink={$return[1]}";
$file_dump_html = "dump_html_tmp_{$return[0]}";
$file_dump_email = "emails_{$return[0]}";
#REQUEST URL COMENTÁRIOS
exec("curl -kg --user-agent '{$user_agent}' '{$url_request_dump_email}'>'{$file_dump_html}'");
#GREP EMAILS
exec('cat "'.$file_dump_html.'" | grep -E -o \'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b\' | sort | uniq >'.$file_dump_email);
echo " DUMP HTML: {$file_dump_html} \n EMAIL: {$file_dump_email}\n URL: {$url_request_dump_email}\n\n";
$log = "\n-------------------------------------------\n";
$log.= "\nDATA:".date('d-m-Y H:i:s');
$log.= "\nURL:".$url_request_dump_email;
$log.= "\n-------------------------------------------\n";
file_put_contents("{$file_dump_email}",$log,FILE_APPEND);
#SLEEP
sleep($sleep);
unset($return);
}
https://gist.github.com/MrCl0wnLab/eb26ff29d9b07e79b18bfface7f790d8.jsRESULT GREP
SCRIPT COMPLETO
CONCLUSÃO
User continue assim tks.
RECOMENDAÇÃO
Comentários
Postar um comentário