• Nenhum resultado encontrado

Modificação para Coligações de Tamanhos Arbitrários 114

5.7 Detecção de Cliques 107

5.7.2 Modificação para Coligações de Tamanhos Arbitrários 114

O algoritmo Similarity-Seeker pode detectar eficientemente coligações de pares de fraudadores em sites. No entanto, fraudadores normalmente formam coligações de bots e botnets que vão além de pares de sites em fraude, o que pode ser levado em consideração para alterar esse algoritmo para se detectar coligações maiores, como veremos nessa seção – e que foi o algoritmo que desenvolvemos.

Digamos que um grupo de atacantes, de tamanho ‘Q’, torne difícil detectar coligações por não compartilhar todos os recursos ao mesmo tempo. Em vez disso, cada publicador de anúncio compartilharia cada recurso que ele controla apenas com ‘q’ atacantes aleatórios. Assim, como mostrado pelo Teorema 1, o número de semelhanças dos pares cai, enquanto o grupo ainda ganha em coligações

Teorema 1: Um grupo de publicadores atacantes, de tamanho Q, onde cada pulicador compartilha cada recurso que ele controla com apenas q < Q publicadores aleatórios reduz as similaridades entre os pares de 1 a !(!#$)

& '($ #!(&'(!()), e obtém um ganho de ‘q’

Prova. Assuma cada local no grupo de ataque controla R recursos, o coeficiente de Jaccard é utilizado para a semelhança, e que um recurso compartilhado por A com B não é compartilhada por B novamente para uma terceira parte. Para quaisquer dois sites, A e B, a interseção de Sa e Sb é definida pelo conjunto de recursos compartilhados pelos sites, e os recursos compartilhados pelos outros Q – 2 nós tanto com A quanto com B. Isso pode ser

simplificado pela equação: 2r'($! + 𝑟 𝑄 − 2 ('($)('(&)!(!($) = 𝑟(𝑞 + 1)'($! . 𝑆𝑎 ∪ 𝑆𝑏 é dado pelos recursos controlados por A, controlados por B, e os recursos compartilhados por todos os outros Q – 2 nós que contenham tanto A quanto B. Isso equivale à equação: 2r + 2r(Q – 2)'($! −

 𝑟 𝑄 − 2 '($ '(&! !($ . Nesse contexto, o coeficiente de Jaccard pode ser dado por

!(!#$)

& '($ #!(&'(!()). Os recursos direcionando o tráfego para cada site são dados por r(q+1), após

formarem a coligação, ao invés de r recursos controlados por cada site.

Corolário 1: Ao aumentar o tamanho de uma coligação, os atacantes podem sustentar a semelhança entre pares em um nível baixo, enquanto continuam a aumentar seus ganhos.

Prova: Para manter similaridade dos pares abaixo de um nível detectável s, o ganho de cada publicador q, onde q é dado por: & 8#$$ 2𝑄 − 3 𝑠 − 1 +

((2𝑄𝑠 + 1)& − 4𝑄𝑠&+ 1 + (1 − 𝑠)&). Assim, similaridade entre pares pode ser sustentada

em quaisquer níveis, enquanto o aumento do ganho q, através da formação de grupos maiores, isto é, aumentando Q. Ora, do Teorema 1, se q > 1 e q = √𝑄, o coeficiente de Jaccard é menor que √'$ . Felizmente, como mostrado na seção 6.3.1, dois sites quaisquer possuem uma similaridade que pode ser ignorada. Assim, mesmo que atacantes formem coligações muito grandes e largas, a similaridade inerente ainda estará acima da norma e será detectável pelo Similarity-Seeker alterado, cujo pseudo-código deve ser estendido pelo método seletor de amostras, demonstrado no pseudo-código na Figura 5.9 abaixo:

1. Procedimento Samples-Select (Inteiro n) 2. For(int i=1; i <= n; i++)

3. // construir permutações

4. For each Traffic Entry ‘e’ = (ID_Site, Endereço_IP)

5. Escreva ‘e’ no Arquivo de Tráfego do ID_Site

6. // Selecionando amostras

7. For each ID_Site {

8. IP Amostra_Site(n) = array_vazio;

9. For each Traffic Entry ‘e’ = (Site_ID, IP) {

10. For (int j = 1; j <= n; j++) { 11. If (Permutação(j)(IP) < Permutação(j)Amostra(j)) { 12. Amostra(j) = IP; 13. } // fim do if 14. } // fim do for 15. } // fim do for 16. } // fim do for

Fonte: Próprio Autor

Esse procedimento será responsável por realizar duas buscas preliminares nas amostras dos dados do tráfego – no primeiro, esse método separa o tráfego de cada site em um arquivo individual que se encaixa na memória. Para cada site, o método toma um segundo passo em que ele analisa toda as permutações e, depois de coletar todas as amostras, o arquivo é escrito de volta em cada linha na matriz de amostra Samples. Isso tudo fica armazenado na memória e aumenta a escalabilidade do algoritmo proposto e a complexidade do método é O(D|S|n). A ideia da modificação é adicionar esse passo antes da população das amostras na matriz Samples, permitindo, assim, a seleção de amostras de para coligações de diversos tamanhos.

Assim, o algoritmo Similarity-Seeker alterado pode ser resumido no pseudo-código demonstrado na Figura 5.10 a seguir:

Figura 5.10: Algoritmo Similarity-Seeker modificado para chamada do Samples-Select, com destaques do autor para as modificações em relação ao algoritmo original

1. Procedimento Similarity-Seeker-Modificado (Duplo s, E, a, Inteiro l) 2. //1º passo: Calcular o numero de amostras

3. Integer n = (𝒌𝒂𝟐𝑬)𝟐;

4. //2º passo: Chamar o Samples-Select para criar um array de Amostras 5. Samples-Select(n);

6. //alocar espaço para C, a partir daqui o algoritmo segue normalmente, levando em consideração, ao invés de pares de sites, uma coligação de fraudadores

7. Malloc C = conjunto vazio; 8. For(int j=1; j <= n; j++)

9. // alocar espaço para H // construção da tabela Hash

10. Hashtable <IP, Lista de Sites> H = hash table vazia

11. For(int i=1; i <= n; i++)

12. // popular H com lista de sites que compartilham IP a partir da amostra

gerada por Samples Select!

13. // Seja ID_Site e IP em Samples[i]

14. Insira ID_Site em H[IP].SiteList;

15. For each SiteList SL em H

16. If (SL < l) // ou seja, sites não compartilham um IP popular

17. For each dois sites A e B em SL{//potencialmente fraudadores

18. If (A,B pertencem a C) {

19. C(A,B).Integer++

20. If(sn-1 >= C(A,B).Integer++ > sn)

21. Saida = A e B são similares

22. Else

23. C = Insert(A,B,1) //Insira A e B em C

24. } // fim do if

25. } // fim do for

Aumentar o tamanho das coligações para grandes grupos muda o foco de busca de pares de sites com tráfego altamente semelhante para a procura de grupos com similaridade moderada. Por duas razões principais, a solução na seção 5.7.1 tem de ser estendida para coligações de tamanhos arbitrários. Em primeiro lugar, ao dar como saída um conjunto de diversos sites como similares, de tal forma que cada par de sites têm tráfego semelhante, se estabelece a evidência de intenção maliciosa dos fraudadores. É muito improvável, para qualquer grupo aleatório das unidades de tamanho Q, que todos os pares possíveis são similares. Se os sites de quaisquer dois publicadores "podem ser erroneamente julgado para ter o tráfego semelhante com probabilidade P. Então, julgar erroneamente que os sites aleatórios Q estão envolvidos em um ataque da coalizão tem uma probabilidade de 𝑃'('($)& . Por exemplo, se P = 0.1, então julgar erroneamente se um grupo pequeno de 5 sites aleatórios está ou não em uma coligação tem uma probabilidade de 10-10.

Em segundo lugar, a saída de um conjunto de vários sites é mais concisa do que a saída de todos os pares possíveis nesse conjunto. Por exemplo, se 3 coligações de 50 fraudadores são descobertas, é mais conveniente verificar uma lista de 3 entradas, cada uma de tamanho 50, do examinar 3 x 50 x 49 / 2 = 3225 saídas, cada uma com tamanho 2. Além disso, a coesão da saída dá uma visão mais correta e geral da coligação e facilita as investigações manuais, como a verificação de características comuns entre os sites, como data do contrato e taxa de ganho.

Assim, é necessário condensar os pares detectados em grupos de sites. A similaridade pode ser modelada como um grafo não direcionado cujos nós representam sites, e cujas arestas representam pares de sites com tráfego similar. O objetivo do algoritmo passa a ser buscar, ao invés de apenas arestas, todos os cliques máximos nesse grafo crescente.