Autores: Santiago Pontiroli, Jozsef Gegeny, Prakas Thevendaran
Resumo
- A Unidade de Pesquisa de Ameaças (TRU) da Acronis descobriu uma nova campanha do SideWinder APT direcionada a instituições governamentais de alto nível no Sri Lanka, Bangladesh e Paquistão.
- Os atacantes utilizaram e-mails de phishing direcionado em conjunto com payloads geolimitados para garantir que apenas vítimas em países específicos recebessem o sumário malicioso.
- Arquivos do Word e RTF maliciosos que exploram CVE-2017-0199 e CVE-2017-11882 foram usados como vetores iniciais de infecção. Duas vulnerabilidades conhecidas há muito tempo, mas ainda eficazes.
- A cadeia de intrusão apresenta carregadores de vários estágios, entrega de payload com base em shellcode e polimorfismo do lado do servidor para evitar a detecção.
- O estágio final entrega o StealerBot, um ladrão de credenciais usado para exfiltração de dados e acesso persistente, combinando espionagem clássica com coleta de credenciais no estilo do crime cibernético.
Introdução
Essa campanha está alinhada com relatórios anteriores sobre as táticas em evolução, atualizações de ferramentas e ampliação do foco geográfico do SideWinder. Análises anteriores documentaram o interesse do grupo em setores de alto valor, como pesquisa nuclear e infraestrutura marítima [1], e seu uso consistente de exploits legados do Microsoft Office [2] e polimorfismo do lado do servidor para evitar a detecção [3].
Esses padrões também são visíveis na campanha atual, que utiliza mecanismos de entrega semelhantes, juntamente com componentes de roubo de credenciais, para manter o acesso persistente em ambientes governamentais em todo o sul da Ásia. O SideWinder demonstrou atividade consistente ao longo do tempo, mantendo um ritmo constante de operações sem inatividade prolongada, um padrão que reflete continuidade organizacional e intenção sustentada.

Mesmo anos após a divulgação, CVE-2017-0199 e CVE-2017-11882 continuam sendo exploits confiáveis para agentes de ameaças, especialmente em campanhas de spear phishing direcionadas a organizações governamentais e de defesa com configurações de software desatualizadas. Essas vulnerabilidades permitem a execução remota de código por meio de documentos maliciosos do Office: uma ao carregar conteúdo externo e outra ao explorar uma falha de corrupção de memória no antigo editor de equações, levando a um possível comprometimento do sistema quando a vítima abre um arquivo personalizado.

Nesta análise, examinamos uma campanha recente que teve como alvo o Sri Lanka, Bangladesh e Paquistão, onde o SideWinder utiliza documentos maliciosos para entregar carregadores de múltiplas etapas, payloads baseados em shellcode e a ferramenta de coleta de credenciais StealerBot. Exploramos suas táticas de evasão, polimorfismo do lado do servidor e infraestrutura de comando e controle, e fornecemos recomendações para detecção e mitigação.

Roteiro do SideWinder
Mark Twain é frequentemente citado como tendo dito “A história não se repete, mas muitas vezes rima”, e no caso desse ator de ameaças, vemos o uso contínuo de técnicas simples, porém eficazes. Em campanhas anteriores, quando uma vítima abria o documento malicioso, o exploit desencadeava o download de um script, que então executava payloads adicionais usando System Binary Proxy Execution: mshta.exe (T1218.005).
Apesar de ter sido corrigida com patches há anos, essa técnica continua eficaz devido a:
- Muitas organizações ainda utilizam versões antigas do Office.
- A simplicidade de burlar os filtros de e-mail com objetos OLE incorporados.
- A facilidade de automatizar a entrega em grande escala em campanhas de phishing.
No entanto, nesta campanha que começou em 2025, continuamos a observar o uso de carregadores baseados em shellcode em vez do mshta.exe anteriormente utilizado. Essa abordagem, consistente com as técnicas relatadas em atividades anteriores, inclusive em março de 2025, sugere que o SideWinder adotou esse método como um mecanismo padrão de entrega de payload. Embora a estrutura mais ampla da cadeia de ataque permaneça inalterada, o aprimoramento contínuo do grupo demonstra a evolução de técnicas eficazes e comprovadas, em vez de uma mudança radical na estratégia.

A 55ª Divisão é uma unidade de infantaria de elite do Exército do Sri Lanka, ativa desde 1996. Atualmente, está implantado na Península de Jaffna, sob o comando da sede das forças de segurança.

É a divisão mais poderosa do exército, composta por mais de 10.000 soldados de infantaria, distribuídos em quatro brigadas. Recentemente, ela também assumiu a liderança contra ameaças cibernéticas, tornando-se um alvo interessante para o SideWinder.

O Banco Central do Sri Lanka (CBSL) é a principal autoridade financeira do país, responsável pela emissão de moeda, estabelecimento de políticas monetárias e garantia da estabilidade econômica. Fundado em 1950 e com sede em Colombo, o CBSL desempenha um papel centralizado na gestão do sistema financeiro e das reservas internacionais do Sri Lanka. Como a instituição por trás de decisões econômicas nacionais importantes, sua liderança e infraestrutura digital são alvos de alto valor.
Para aumentar as chances de infecção, cada alvo recebe um e-mail e um documento personalizados que podem ser de interesse do cliente final. O grupo também cria ou atualiza domínios relevantes para aparecer como uma instituição legítima ou para se passar por outra que a vítima poderia confiar.
Infraestrutura
O SideWinder manteve uma cadência constante de atualizações de infraestrutura de comando e controle (C2), com um pico notável em janeiro de 2025, quando 34 novos domínios foram registrados ou redirecionados. A atividade permaneceu alta em fevereiro de 2025, com 24 domínios adicionais, seguida por uma queda acentuada em março, indicando talvez um período de pausa operacional ou reutilização de infraestrutura. Outro surto ocorreu em abril de 2025, com 10 novos domínios, sugerindo atividade renovada.

Entendendo o SideWinder: entrega geolocalizada em ação
Embora este relatório aborde 49 documentos maliciosos atribuídos à campanha SideWinder em andamento, destacaremos uma amostra representativa para ilustrar a cadeia de intrusão completa, desde a entrega inicial até a exploração. Este caso envolve um e-mail de phishing com um documento do Word malicioso anexado, especificamente elaborado para ter como alvo uma organização em Bangladesh. A amostra é do início de maio de 2025 e fornece um exemplo claro do modus operandi atual do grupo.
Filename: Caution Against Propaganda and Misinformation Campaigns.docx
SHA256: 57b9744b30903c7741e9966882815e1467be1115cbd6798ad4bfb3d334d3523d
MD5: b0f2f200a69db71947578fca51d4ff94

O documento contém um exploit para CVE-2017-0199, uma vulnerabilidade no Microsoft Office que permite a execução de código remoto quando um usuário abre um arquivo que referencia um objeto externo. Como os arquivos .docx são estruturados como arquivos ZIP, ao inspecionarmos o arquivo word/_rels/document.xml.rels, podemos identificar uma entrada de relacionamento com TargetMode="External" apontando para um URL remoto. Esse URL é usado para carregar um modelo malicioso (RTF) de um servidor controlado pelo atacante, que aciona silenciosamente a vulnerabilidade e inicia o próximo estágio da cadeia de intrusão sem exigir mais interação do usuário. Nesse caso, o URL do payload do exploit aponta para hxxps[://]advisory[.]army-govbd[.]info/ISPR/d81b2d23/Accept_EULA[.]rtf

Se o endereço IP ou a geolocalização da vítima não corresponderem aos critérios de alvo pretendidos, o servidor responde com um arquivo de distração: um arquivo RTF vazio com o hash SHA-256 1955c6914097477d5141f720c9e8fa44b4fe189e854da298d85090cbc338b35a, que atua como salvaguarda para evitar análises e acessibilidade não intencionais.

Cadeia de vulnerabilidades do Microsoft Office legadas
Filename: Accept_EULA.rtf
SHA256: e4afb43a13e043d99ff0fb0a0ac49e96a04932ba37365527914d6be779597edf
MD5: 71b0774691ab8192af8ed8e816a1f475
Esses hashes de MD5 não estão disponíveis publicamente em nenhum outro lugar, pois o servidor emprega geração de payload sob demanda, produzindo um arquivo único com um hash diferente para cada solicitação. Para dar suporte a análises e detecções adicionais, carregamos todas as amostras relevantes no VirusTotal.
O download do payload RTF requer um cabeçalho User-Agent válido, pois o servidor filtra as validações. Os seguintes agentes de usuário foram confirmados como funcionais e conseguiram recuperar o arquivo RTF com sucesso:
O arquivo RTF explora a CVE-2017-11882, uma vulnerabilidade de corrupção de memória no antigo editor de equações. Ele incorpora um shellcode codificado como uma string de caracteres hexadecimal, que é executado ao abrir o documento para iniciar o próximo estágio do ataque.

Se convertermos essa grande cadeia hexadecimal para binário, já podemos ver o link de download para o próximo estágio:

O binário acima também pode ser descompilado, já que contém instruções de CPU válidas. O próprio shellcode começa na instrução CWDE (Convert Word to Doubleword Extended):

O shellcode usa instruções de 32 bits, pois almeja o EQNEDT32.EXE de 32 bits, o componente vulnerável do editor de equações explorado por meio da CVE-2017-11882. Após inicializar a pilha, o shellcode começa a construir e armazenar cadeias de caracteres codificadas diretamente na pilha, que são posteriormente decodificadas em tempo de execução, conforme necessário. Essas strings contêm principalmente nomes de funções de API que são resolvidos dinamicamente durante a execução.
Além disso, o shellcode implementa técnicas de evasão de sandbox, realizando uma série de verificações para determinar se está sendo executado em um ambiente virtualizado ou emulado.
- Verifica o tamanho da RAM. Isso é feito por meio da chamada da API GlobalMemoryStatusEx.
- Ele procura por dotnetlogger32.dll, simplesmente chamando LoadLibraryA.
Se as verificações acima forem bem-sucedidas, o shellcode carrega o winhttp.dll e utiliza suas funções exportadas, como WinHttpOpen e WinHttpConnect, para baixar o próximo estágio de hxxps[://]advisory[.]army-govbd[.]info/ISPR/7201a146. O sumário baixado está codificado:

O payload mostrado acima é codificado para evitar análise estática e detecção por ferramentas baseadas em assinatura. A codificação de strings críticas, nomes de funções e URLs na pilha é uma técnica de ofuscação comum para shellcodes e utilizada pelo SideWinder em campanhas anteriores.

Após a descriptografia, chegamos à segunda parte do shellcode, que contém essencialmente um carregador PE e um arquivo executável incorporado:

Como etapa final, o shellcode altera as proteções de memória do buffer decodificado para torná-lo executável usando o VirtualProtect e, em seguida, transfere a execução para ele. Em seguida, este estágio do shellcode pesquisa por explorer.exe:

Uma vez encontrado o processo, o shellcode injeta o arquivo PE incorporado nele usando chamadas de API do Windows padrão, como VirtualAllocEx e CreateRemoteThread (ou NtCreateThreadEx). Isso marca o início do Estágio 3, em que o payload é executado no contexto do processo remoto.
Deixe a exfiltração começar
SHA256: 61132f15775224f8aae02499b90b6bc19d4b3b44d987e0323276dceb260cc407
MD5: 648eb92f1125f0156880578cc64a53dd
Nota: Assim como os arquivos RTF, esses arquivos também são únicos e não podem ser encontrados no VirusTotal ou em qualquer outro lugar.
Analisando os símbolos exportados, podemos encontrar o nome de arquivo original para este arquivo, que é StealerBot.CppInstallerDocx.dll:

Ele também tem uma função exportada chamada IceCream. Esta amostra pode ser executada com rundll32.exe sem problemas:
Rundll32.exe StealerBot.CppInstallerDocx.dll IceCream
O código começa com um truque bem conhecido, realizando uma verificação no bloco de ambiente de thread (TEB) para detectar se o programa está sendo depurado:

Em seguida, ele coleta informações básicas do sistema e as envia para um URL codificado no programa, para o servidor de comando e controle (o mesmo de onde os estágios anteriores foram baixados):

O valor dos dados é uma string codificada em base64 e contém as informações coletadas, separadas pela palavra 'DEFENESTRATION':
StevenDEFENSTRATIONDESKTOP-IAKPONKDEFENSTRATION12th Gen Intel(R) Core(TM) i7-1260PDEFENSTRATION2DEFENSTRATIONDrive: C:\, Size: 59 GBDEFENSTRATION1023DEFENSTRATION134217727DEFENSTRATION00:0C:29:82:38:12DEFENSTRATION10.0 Build 19045DEFENSTRATION64-bitDEFENSTRATION

A análise de código indica que informações sobre o software antivírus instalado também são coletadas, mas na nossa máquina de teste elas estavam ausentes.
Esse agente de ameaças tentará detectar esforços de análise e perfis de máquinas virtuais para evitar a entrega de qualquer payload malicioso. No entanto, se tudo estiver dentro dos parâmetros esperados, o servidor responde com uma mensagem codificada:
BBMqTFZVVyo9NmFkNmRkMDphZHFkODQFEypMVlVXKj02YWQ2ZGQwOmFkcWQ4NwUcKkxWVVcqPTZhZDZkZDA6YWRxZDg2I2g4BQoqTFZVVyo0ZzBjMjFkZAUKKkxWVVcqMzQyYzdmNWMFCipMVlVXKmNhZDc0YDw2BQB1aml0BRxkYXNsdmp3fCtkd2h8KGJqc2dhK2xrY2oFAG1xcXUFFCBkdXVhZHFkIFlZQmR1bGYFA0JkdWxmBRRRZHVsUGtkcXFga2ErYH1gBQlyYXZmandgK2FpaQUKKkxWVVcqYTw2YzNkMT0F
A resposta do servidor é ofuscada usando duas camadas de codificação: inicialmente, os dados são codificados em base64 e, em seguida, é aplicada uma criptografia XOR usando a chave de um único byte 0x05. Após a decodificação de ambas as camadas, a resposta em texto puro do servidor pode ser obtida:

Vamos ver linha por linha:

E este é o layout dos arquivos baixados e arrastados na visualização do Explorer:

Um arquivo LNK também é criado na pasta de inicialização do usuário (Menu Iniciar\Programas\Inicializar\Gapic.lnk), que aponta para a execução do TapiUnattend.exe localizado no diretório APPDATA.
O objetivo principal deste instalador de DLL é estabelecer a persistência e facilitar o carregamento do próximo estágio por meio do carregamento lateral de DLLs do wdscore.dll, explorando o executável legítimo e confiável TapiUnattend.exe.
StealerBot entregue via carregamento lateral de DLL
Até agora, foi uma longa jornada e estamos chegando ao estágio final desta extensa cadeia de intrusão de TI. Estes são os arquivos envolvidos na entrega do StealerBot, usado para roubo de credenciais e informações:

Quando o TapiUnattend.exe é executado, ele dispara o carregamento do wdscore.dll, uma DLL maliciosa que executa duas funções principais:
- Decodificando o arquivo incorporado HBG6XFRE.JZS7.
- Inicializando o Common Language Runtime (CLR) e carregando o StealerBot baseado em .NET, decodificado.
Por meio de engenharia reversa da rotina de decodificação dentro do wdscore.dll, determinamos que o arquivo codificado começa com uma chave XOR de 15 bytes, seguida pelo payload ofuscado. Essa chave é usada para descriptografar o restante do sumário em tempo de execução, possibilitando o carregamento dinâmico do StealerBot na memória.

Com essas informações, conseguimos despejar a amostra do StealerBot não criptografada.
Filename: StealerBot
SHA256: c62e365a6a60e0db4c2afd497464accdb783c336b116a5bc7806a4c47b539cc5
MD5: 88af570ec4821aa762ed04f2549ad6c1
Control Panel: hxxps[://]ecility[.]xyz
Vitimologia
A campanha faz referência a inúmeras instituições governamentais e militares em Bangladesh, Paquistão e Sri Lanka, embora não esteja claro se todas foram alvos diretos ou se foram simplesmente imitadas para aumentar a credibilidade dos iscos de phishing. No entanto, foi confirmado que o Banco Central do Sri Lanka e o 55º Batalhão da Divisão do Exército do Sri Lanka foram alvos, com base em e-mails de phishing descobertos no VirusTotal que foram explicitamente endereçados a essas organizações. As demais instituições, como os ministérios da Fazenda, da Defesa e das Relações Exteriores, aparecem em sumário de isca, mas podem ter sido incluídas apenas para fins de engenharia social. Essa tática de direcionamento seletivo e de falsificação de identidade é consistente com a abordagem histórica do SideWinder na região.


Conclusão
O SideWinder continua a provar que as vulnerabilidades antigas são difíceis de morrer, aproveitando efetivamente as CVE-2017-0199 e CVE-2017-11882 para entregar payloads complexos e em múltiplos estágios em ataques direcionados em toda a Ásia Meridional. O uso de entrega geolocalizada, carregadores baseados em shellcode, carregamento lateral de DLLs e rotação rápida de infraestrutura de C2 destaca a maturidade operacional que desafia os métodos de detecção tradicionais.
À primeira vista, esse ator de ameaças pode parecer depender de exploits desatualizados, mas bem patchados. No entanto, uma análise mais detalhada de suas táticas, técnicas e procedimentos (TTPs) revela um alto grau de controle e precisão, garantindo que os payloads maliciosos sejam entregues apenas a alvos cuidadosamente selecionados e, frequentemente, apenas por um tempo limitado. Essa combinação de exploração de vulnerabilidades legadas com estratégias modernas de evasão e de direcionamento destaca a contínua relevância e adaptabilidade do SideWinder no cenário atual de ameaças.
Detecção pela Acronis
Esta ameaça foi detectada e bloqueada pelo Acronis Cyber Protect Cloud:

Recomendações gerais de mitigação
- Desative a execução de macros e o carregamento de sumário externo no Microsoft Office para evitar o download automático de modelos remotos.
- Bloqueie ou restrinja a execução de mshta.exe, wscript.exe e powershell.exe onde não for necessário, pois esses aplicativos são comumente utilizados para a execução do primeiro estágio.
- Implante regras de detecção comportamental para monitorar:
o Processos filhos suspeitos gerados por aplicativos do Office.
o Atividade de shellcode ou esvaziamento de processo na memória.
- Aplique filtragem em nível de rede para detectar e bloquear comunicações com infraestruturas de comando e controle (C2) conhecidas.
- Aplique todos os patches de segurança do Microsoft Office, especialmente para vulnerabilidades antigas, como CVE-2017-0199 e CVE-2017-11882.
- Use soluções de EDR (Endpoint Detection and Response) para rastrear a execução ou sideloading de DLLs anômalas em faixas de diretórios incomuns.
- Eduque os usuários finais para que saibam reconhecer táticas de spear-phishing, incluindo o uso de documentos que parecem ser oficiais, do governo ou relacionados à defesa.
Indicadores de comprometimento
Documentação
(Classificados por Data de Primeira Ocorrência)
SHA256
725ded50e7f517addd12f029aeaf9a23f2b9ce6239b98820c8a12ea5cb79dbfa
57b9744b30903c7741e9966882815e1467be1115cbd6798ad4bfb3d334d3523d
558de2a01fbd76be171561c3c82fd6a8e2d4c913444850af99d44a4cfb41b680
f464ad5c6aba13b42aa903bda0add7c074d45388da379747c83f2c3756c9b658
63f5445527c47e17b71e87eef4dd7a86883607a22830bcee5b1fabc5d03bab38
65c9e15d9b916b193ce1d96bb99c1c1f3ade0273270b56cf6e476a21b31a3491
7363887b6b0fe7cece3c21ad18515835922379c7d78c47cea745940a1061a6c4
40712a087a8280425f1b317e34e265c0329ffb0057be298d519fc5e0af6cb58f
69eee36642f274c724fadcfdf1f103ae0fd9b5f4bad7ac6a33b3c627d6114426
2d92d24b3abed7acac165b002bd5922f8f17b6e4944e658938fe022902fe6a7e
663a7b509db86ca498af57cc458139a76ee07c60d413d60a98921c7e901e0e3d
5ec639facb2cb9503059d519790279f1b9f510d8d63a2a2c44637b1d1dd1e538
0a7fce4e7456ecb12c95d28b6b4d263d9ca23a1de1e298234a904a319be6e708
00877fcfb31fdc23ca6987e569090f761ed414bdee0546bdbd3ce3acc44cc293
8d00c97d16e3733feee6b1bc6bd77b8423e0b79a812db55880f5b2d751a4bd47
dc7066d972367f15c9b6e2e36a5c643ab87deed958cc27ac0fbf0ff1f4535a99
8dd189e390b168bff6caa82d5077f4eda8902c251fe0a0120aa42bd78e56f9bc
46785f7e5cd2966d30167cbd496333a5dd871b19e6a2833ab1a4157fc35e8ee5
ac13697c19cf0b6767442fc001ca48d0d9e3c9340549d3e73539ea299e27015e
32e2d29143f57335c6477dc764350fed13b7e3873fb06491d9863a95b8921e92
ffebc5f8fc3a0346f9767c64b5b040d7679e1d3726024e59fe134825e31c8b8c
208c335a3cccbdba6b1ec0c76ad3b751c6409712e493c24e2532a389d887e0af
a90fd0e3d3be14b92b3dc809ddea9a0cc377b130ebb4c48a8891e4832a85c412
fa5a3e215e4970b0c39b6bbfb9425aa6ee4a8bc1359d85f7052d99e663aee333
bb9acc2d23afee3265b81326ce65cfddde3fc04648d3ba2d2ea22ec0e3d8f90e
5b5a1833d4daaf05699a009316a4d866851130b258f424f066b867a534ba944d
9b76d98c2641512c66e8f2f99b2d0bda86ec1a4809420b74feadfb8f4f7dbf48
fb4695b45ac62e10f29e9a45c4190dce2fe6af71a96a2bd66e08c1a99416cc7e
677b4d9efcfcae9cbbd39b2b2cdc0df69d4a55460814747f60f35ea2e81dad2e
2be8ca1e2415b5ca1605977b2ff10ff9aef06e3be7eb39496bb18d3ba7772901
1c68ca3ede75946568bb00c39b7054cb2ae4fcbe2805061e38ed15f4d526262c
9700f9b614aa87c6137c4325951e59258cdb87f02df7a5ed4f4accea279ede26
74111c9b0ed748fc6bfc025d13a2ed08663b988cb69c044f1c6f153f9020294c
a61335c10cf98064761806af6451b3cddd66641ccb35a6d8b915a02d6279f46a
1527cf10f00c798262b3347c00af8028fee3bc88a450bc2df7766b1118c62cd5
5891f4dfa47d5b268c5d82366c312ecda715da91e148afa6064f3058f3c5a69b
e33e74e3925bc3f287ef817a186807a38d411524984a5d0930939646022206b0
1321fc1eefc3d3f5aae16a81ac139a31beaf2355935d94210abf69253d29b486
96d429d67a2663ef2cf3f45ccd0619adf0cd030f7fe70f072af1ce1d67ec52a3
22527dd1a62dc46dd4edd23a681657cf4c3477e9f90fb1ef63ef657608b9838c
fb50c60c237ea00f29e4876b326f5f8e872f5ad6d1ca7c9925d9b901e573f788
de54f8933ff81f93652ab824e8f9e60197135e1064f0ca4ca99df833a7a94e9d
47d77499968244911d0179fb858578de00dbb98079e33f5ed5d229d03eb04d67
ffd26019b21da5833caf2b6974cbc9ce79d911653cdfbb6e59a8ac7d4cc80f51
15cf5271c7b9b8ad22c4c96bc8674d9835e8d419fc1a6077f3b59fbd7e59d112
54c4641f709e51622531dc3d04fd2f4a3bad2a42dca287e2777c04d59cbca789
d3fb61c0211bd379bf80f15cf072fdbc1187fe95546fdfcfcbdf8918004f05e2
35cc327806ae0d760b94a5b3daedea9cdcb2ed0854a484c8ec3cded195e75037
896ddb35cde29b51ec5cf0da0197605d5fd754c1f9f45e97d40cd287fb5a2d25
Domínios
(Ordenado por data de registro)
URLs
(Classificados por última atualização)
REGRAS DE CAÇA YARA LIVE (VIRUSTOTAL)
import "vt"
rule hunting_cve_maldocs
{
meta:
author = "Acronis Threat Research Unit (TRU)"
description = "Hunting for malicious Word/RTF files exploiting CVE-2017-0199 or CVE-2017-11882 from specific countries"
distribution = "TLP:WHITE"
version = "1.2"
last_modified = "2025-05-13"
condition:
// Match if the file has CVE-2017-0199 or CVE-2017-11882 in the tags for any tag in vt.metadata.tags :
(
tag == "cve-2017-0199" or
tag == "cve-2017-11882"
)
// Is the submitter from a specific country?
and
(
vt.metadata.submitter.country == "PK" or
vt.metadata.submitter.country == "LK" or
vt.metadata.submitter.country == "BD" or
vt.metadata.submitter.country == "NP" or
vt.metadata.submitter.country == "MM" or
vt.metadata.submitter.country == "MV" or
vt.metadata.submitter.country == "AF" or
vt.metadata.submitter.country == "CN"
)
// Is it a DOC, DOCX, or RTF?
and
(
vt.metadata.file_type == vt.FileType.DOC or
vt.metadata.file_type == vt.FileType.DOCX or
vt.metadata.file_type == vt.FileType.RTF )
and vt.metadata.new_file
}
REFERÊNCIAS