A criação do “hack” FOCUS 11 para Apple iPad

Transcrição

A criação do “hack” FOCUS 11 para Apple iPad
White paper
A criação do “hack” FOCUS 11 para Apple iPad
Por Gabriel Acevedo e Michael Price
McAfee® Labs™
Sumário
Motivação
3
Pesquisa
4
A vulnerabilidade de implementação de iOS SSL
4
A vulnerabilidade “JailbreakMe”
5
O “hack”
Hardware
5
Software e ferramentas
6
Cenário
7
Ataque
8
Resultados
2
5
10
Conclusões
11
Agradecimentos
12
Sobre os autores
12
A criação do “hack” FOCUS 11 para Apple iPad
Em outubro do ano passado, a McAfee realizou sua conferência FOCUS 2011. O McAfee Labs ofereceu
aos clientes várias palestras sobre malware e outras ameaças, bem como sobre uma variedade de tópicos
de segurança. Um dos eventos mais populares foi a palestra “Hacking Exposed”, que reuniu mais de
2.000 pessoas. A maioria dos presentes desligou seus laptops, telefones, Apple iPads e outros dispositivos
quando Stuart McClure, CTO da McAfee, anunciou que sua equipe faria “hacks” ao vivo durante a sessão.
Observamos muita agitação no Twitter e em outras redes sociais, em antecipação ao “hack” que todos na
conferência estavam comentando. Alguns céticos afirmaram que não seria uma demonstração ao vivo, mas
momentos após o início, as pessoas confirmaram que o hotspot Wi-Fi falso da FOCUS estava mesmo no ar.
Apontamos nossa câmera de TV para a tela de nosso iPad de demonstração, que em breve seria
“hackeado”, para que os presentes pudessem acompanhar. Enquanto McClure carregava o Gmail através
de uma conexão SSL (Secure Sockets Layer), podíamos ver o esquema URI HTTPS e o ícone de cadeado
no Safari. Por trás dos panos, uma exploração era carregada e instalava um servidor SSH (Secure Shell).
Alguns segundos depois, a plateia aplaudia entusiasmada enquanto a tela do iPad aparecia em nosso
cliente de controle remoto VNC. O iPad foi comprometido. Tivemos acesso root através do Terminal
e também acesso gráfico através do VNC, o que nos permitiu ver o que McClure estava fazendo e
interagir com o seu dispositivo. Um usuário típico de iPad, nessa situação, não teria a menor ideia de
que tínhamos um controle tão amplo do sistema. A vítima não estava visitando um site malicioso, mas
simplesmente verificando seu e-mail através de uma conexão segura. Como esse “hack” foi possível?
Neste relatório responderemos essa pergunta, além de explicar nossa pesquisa, os problemas que
enfrentamos e as ferramentas que criamos.
(Nós explicamos as técnicas que utilizamos neste relatório somente para fins educativos e para
conscientização quanto aos fatos e princípios de segurança envolvidos com essas técnicas.
A McAfee não utiliza e não apoia o uso dessas técnicas para violar as leis aplicáveis ou os limites
do comportamento ético.)
Motivação
Em julho de 2011, uma vulnerabilidade em um erro básico de validação de restrição na cadeia de
validação de certificados iOS SSL foi descoberta pelo SpiderLabs da TrustWave.1 Seus pesquisadores
descobriram que era possível gerar um certificado falso utilizando um outro certificado que, embora
válido, não poderia ser utilizado para gerar certificados para outros sites. No entanto, o SpiderLabs
não deu muitos detalhes. O quão complicado foi reproduzir a vulnerabilidade? Que usos os invasores
poderiam fazer dessa vulnerabilidade, além de “farejar” dados supostamente privados?
Já faz algum tempo que as vulnerabilidades utilizadas por jailbreakme.com (conhecido coletivamente
como JailbreakMe ou JBME) foram divulgadas. Até agora, o único uso público que vimos para elas
restringiu-se ao jailbreakme.com. O “jailbreaking” de um dispositivo Apple (ou seja, “abri-lo”)
é desejável para muitas pessoas. No entanto, o que muitas pessoas podem não perceber é que
a técnica JBME explora vulnerabilidades para obter controle sobre o dispositivo e, como muitas outras
vulnerabilidades, esses pontos fracos podem ser utilizados para fins maliciosos.
O que aconteceria se combinássemos essas duas vulnerabilidades? É possível utilizá-las em um ataque
sofisticado, discreto e eficaz? Observe que a vulnerabilidade SSL não era necessária para realizar
o “hack”, mas queríamos provar que mesmo quando as vítimas pensam que é seguro, ainda é possível
comprometer o dispositivo. Portanto, nossa ideia era explorar o sistema enquanto a vítima visitava um
site de banco, verificava seu e-mail ou fazia um pagamento on-line — tudo através de uma conexão SSL.
Ambas essas vulnerabilidades tinham sido corrigidas em versões recentes do iOS da Apple. No entanto,
muitos usuários não tinham feito a atualização por vários motivos — desde simples desconhecimento
até o fato de que queriam “abrir” seus dispositivos e instalar aplicativos não disponíveis na Apple App
Store. Quantos desses usuários ainda estão vulneráveis?
Acabamos de fazer várias indagações. Nas seções a seguir, vamos respondê-las.
A criação do “hack” FOCUS 11 para Apple iPad
3
Pesquisa
A vulnerabilidade de implementação de iOS SSL
Em julho de 2011, Paul Kehrer e Gregor Kopf divulgaram uma vulnerabilidade de erro de validação
de entrada (CVE-2011-0228) no Apple iOS. O sistema operacional móvel falhou ao validar a cadeia
de certificados X.509, possibilitando que um invasor capturasse ou modificasse dados protegidos por
SSL/TLS e realizasse ataques de interceptação MITM (“man in the middle”). A vulnerabilidade afetou
as versões 4.3.4 e anteriores do iOS para dispositivos de rede GSM e as versões 4.2.9 e anteriores
para dispositivos de rede CDMA. Os pesquisadores notificaram a Apple, que lançou as atualizações de
segurança HT4824 e HT4825 para dispositivos CDMA.2,3 Posteriormente, durante a DEFCON 19, Kehrer
revelou mais detalhes, acrescentando que o iOS ignorava a extensão de restrições básicas X.509 v3.4
Certificados emitidos para entidades root e intermediárias precisam incluir a extensão de restrições
básicas com o campo CA definido como TRUE (verdadeiro).5 Por exemplo:
Extensões X509v3:
1.3.6.1.4.1.311.20.2:
...C.A
Uso de chaves X509v3:
Assinatura digital, Assinatura de certificado, Assinatura CRL
Restrições básicas X509v3: crítico
CA:TRUE
No entanto, para certificados de usuário, o parâmetro CA podia ser definido como FALSE (falso).
Por exemplo:
Extensões X509v3:
Restrições básicas X509v3:
CA:FALSE
A falha nessas versões do iOS permite que um invasor utilize um certificado não CA (CA:FALSE) legítimo
para assinar certificados subsequentes para qualquer domínio e fazer os dispositivos aceitarem-nos
sem aviso algum, exatamente como a um certificado X.509 regular, assinado por uma entidade válida.
Por exemplo, a cadeia de certificados seguinte funciona no iOS versão 4.3.4, mas não em versões
corrigidas (como a versão 4.3.5):
Certificado root
Certificado Intermediário (CA:TRUE)
Certificado de Usuário Final (CA:FALSE)
Algum Certificado de Domínio Arbitrário — Confiável
A extensão de restrições básicas também possui um parâmetro opcional: pathlen. Esse parâmetro indica
o número máximo de certificados que podem aparecer abaixo deste na cadeia. Então, considerando
o exemplo acima, se o Certificado Intermediário tem o parâmetro pathlen definido como zero,
o dispositivo iOS não confiará em Algum Certificado de Domínio Arbitrário gerado pelo Certificado
de Usuário Final. A cadeia de certificados seguinte não funcionará, nem mesmo no iOS 4.3.4.
Certificado root
Certificado Intermediário (CA:TRUE,pathlen:0)
Certificado de Usuário Final (CA:FALSE)
Algum Certificado de Domínio Arbitrário — Não confiável
4
A criação do “hack” FOCUS 11 para Apple iPad
Chegamos a essa conclusão ao tentar reproduzir essa vulnerabilidade. O comunicado original dizia
que o iOS falha em reconhecer todas as restrições básicas, mas concluímos que as versões vulneráveis
ignorariam somente o valor CA.
Portanto, para gerar um certificado X.509 falso para explorar a vulnerabilidade CVE-2011-0228,
o certificado da cadeia imediatamente anterior ao certificado que gera o certificado falso não deve
incluir o parâmetro pathlen — ou deve conter um valor de pathlen suficientemente grande.
A vulnerabilidade “JailbreakMe”
JBME é um site que contém uma coletânea de “jailbreaks” para diversas versões do iOS. Os “jailbreaks”
foram desenvolvidos por comex e aproveitam falhas no Safari e no kernel. A primeira versão foi lançada
em 2007 e funcionava com o firmware 1.1.1 do iPhone e do Apple iPod Touch. Uma segunda versão foi
lançada em agosto de 2010 para o iOS 4.0.1, e a versão mais recente foi lançada em julho de 2011. Ela
funciona para o iOS 4.3.3. A Apple corrigiu as vulnerabilidades utilizadas pelo JBME no iOS versão 4.3.4.
A versão de julho de 2011 do JBME — também conhecida como Saffron — explora uma vulnerabilidade
(CVE-2011-0226) no componente analisador de FreeType do Mobile Safari utilizando um arquivo PDF
desenvolvido especialmente. A rotina do PDF constrói e carrega na pilha uma carga viral de programação
orientada a retorno e explora uma vulnerabilidade de kernel na interface IOMobileFrameBuffer IOKit
(CVE-2011-0227). A rotina utiliza, então, uma outra carga viral para modificar algumas funções do
kernel para desativar o cumprimento da assinatura do código e obter privilégios de root. Uma vez
concluída a exploração, um invasor pode instalar aplicativos não assinados, como o Cydia e todos os
aplicativos fornecidos através desse sistema.6
Milhares de pessoas utilizam o JBME para “abrir” seus dispositivos, acessar aplicativos não disponíveis
na Apple App Store ou modificar configurações restritas para usuários normais. Porém, o que
as pessoas às vezes não entendem é que seus dispositivos estão sendo explorados para que
o “jailbreaking” seja bem-sucedido.
O “hack”
Hardware
Não precisamos de muita coisa: utilizamos um laptop Apple MacBook Air e um dongle sem fio.
Utilizamos o dongle para fazer “roaming” e encontrar diversos pontos a partir dos quais lançar nosso
ataque de demonstração.
O MacBook Air é muito conveniente para conferências, cafés ou saguões de aeroportos. Um Mac
é necessário para reconstruir o PDF malicioso. Para o restante, não importa qual computador laptop ou
desktop você use, mas o sistema operacional deve ser semelhante ao Unix, como o Mac OS X, o Linux
ou o FreeBSD. Estes tornam mais fácil encaminhar tráfego utilizando um firewall de kernel, como ipfw
ou iptables. Você também precisará de algumas ferramentas que vêm instaladas por padrão em tais
sistemas operacionais.
A criação do “hack” FOCUS 11 para Apple iPad
5
Software e ferramentas
Utilizamos alguns aplicativos úteis para realizar o “hack”. Alguns foram scripts simples, outros foram
software sofisticado, como o Apache HTTP Server, ferramentas incluídas por padrão com o sistema
operacional e alguns aplicativos personalizados.
Para gerar o PDF, precisamos do star_ de comex. Ele contém todos os arquivos necessários para
gerar o PDF malicioso, o qual requer a ferramenta xpwn de posixninja.7 Nesse projeto você também
encontrará a exploração do kernel. Você também precisará de um firmware de iPad descriptografado
ou gerará o seu próprio utilizando o xpwn (as chaves de descriptografia nem sempre estão incluídas).8
Utilizando as ferramentas e instruções de comex, geramos os seguintes arquivos:
•
PDF: assume o controle inicial sobre o sistema
•
freeze.tar.xz: pacote que contém os arquivos e aplicativos (como VNC) a serem instalados
•
install-3.dylib: biblioteca dinâmica utilizada durante a exploração
•
saffron-jailbreak.deb: pacote que contém uma série de binários para interceptar o processo de instalação
Para servir a exploração e os aplicativos para o iPad, utilizamos o Apache HTTP Server, conhecido como
componente Web Sharing, incluído no Mac OS X. O servidor Web teve de servir conteúdo utilizando SSL,
portanto, foi necessário criar um certificado SSL para ele. Fizemos isso utilizando a ferramenta OpenSSL
incluída por padrão no OS X.
Utilizamos o tcpdump (incluído por padrão no OS X) para verificar se a exploração foi requisitada
com êxito pelo iPad. Configuramos a carga viral freeze.tar.xz para colocar um arquivo em
/var/mobile/Media/post-jailbreak, executado pela exploração star (caso esteja presente). Nesse arquivo
incluímos um comando ping para nosso sistema, para que soubéssemos quando o SSH estivesse no ar.
Utilizamos o tcpdump para verificar se o iPad estava “pingando” nosso laptop.
Precisamos da ferramenta ipfw do BSD para definir algumas regras de firewall no laptop, para
redirecionar o tráfego do iPad para nossa ferramenta MITM, iSniff.
O iSniff foi escrito por hubert3 e inspirado pela ferramenta sslsniff de Moxie.9 A ferramenta de hubert3
“fareja” o tráfego SSL enviando para a vítima certificados falsos gerados na hora. Editamos o códigofonte do iSniff para poder modificar os dados que a vítima enviava para o servidor e vice-versa.
(O iSniff foi desenvolvido para ser executado em Debian GNU/Linux, portanto, nós o modificamos
para funcionar em OS X.)
6
A criação do “hack” FOCUS 11 para Apple iPad
Cenário
Utilizamos a interface sem fio USB de nosso MacBook para conectar o hotspot Wi-Fi FOCUS e a interface
sem fio interna Airport para criar um hotspot com um nome SSID semelhante ao nome da rede legítima.
Assemelhando-se ao nome autêntico, nosso nome de hotspot pode fazer com que a vítima se conecte à
nossa rede. Um truque simples é pegar um nome SSID comum e criar um outro com um espaço antes do
nome. Isso faz com que o nome da imitação de hotspot vá para o topo da lista de redes.
Os invasores normalmente deixam o hotspot aberto (sem exigir senha). Nesse caso, porém, acrescentamos
uma senha para que os participantes de nossa sessão não fossem “hackeados” involuntariamente.
A criação do “hack” FOCUS 11 para Apple iPad
7
Ataque
Conectamos o laptop à Internet utilizando o dongle sem fio, iniciamos o servidor Web e compartilhamos
a conexão à Internet através do Airport para fazer as vítimas acreditarem que éramos um hotspot
Wi-Fi gratuito.
Abrimos algumas guias no aplicativo Terminal do Mac. Na primeira, iniciamos o tcpdump e o fizemos
“escutar” na interface de rede compartilhada. Na segunda guia do Terminal, criamos algumas regras
de firewall utilizando o ipfw. Uma regra foi particularmente útil:
sudo ipfw add 1013 fwd 127.0.0.1,2000 tcp from any to any 443 recv en1
Nessa regra, 1013 é o número da regra, 127.0.0.1,2000 indica onde o proxy MITM está escutando,
443 indica que queremos interceptar conexões através da porta padrão para SSL, e en1 é a interface
de rede através da qual estamos compartilhando a conexão à Internet. Em seguida, iniciamos o servidor
proxy MITM (iSniff). Ele é configurado para escutar na porta 2000.
Observamos nossa vítima visitar https://mail.google.com no iPad.
O proxy intercepta a conexão da vítima, gera um certificado para o nome de domínio que a vítima está
tentando acessar (mail.google.com), envia o certificado para a vítima estabelecer uma conexão “segura”
com o dispositivo e, finalmente, faz-se passar pela vítima para estabelecer uma conexão com o destino final.
Como a versão do iOS vulnerável não pôde verificar a cadeia de certificados SSL, ela confiou no
certificado que geramos e não acionou nenhum alarme, e nem retornou erro algum. Nesse cenário,
vimos todo o tráfego de entrada e saída e também pudemos modificá-lo.
8
A criação do “hack” FOCUS 11 para Apple iPad
A ferramenta MITM modificou a requisição HTTP da vítima e solicitou ao servidor uma página não
compactada, tornando mais fácil processarmos e modificarmos a página Web retornada para inserir
um elemento HTML iframe imediatamente antes da marca de fechamento </body> do HTML.
O iframe continha uma página Web com um link para carregar um PDF malicioso. Conseguimos reduzir
o tamanho do iframe para torná-lo quase imperceptível para o usuário. Também pudemos inseri-lo
bem no final da página. Em nosso “hack”, mantivemos o tamanho grande para que a plateia pudesse
visualizá-lo na tela.
O arquivo PDF continha uma fonte FreeType Type 1 criada especialmente para explorar o navegador
Web Mobile Safari e executar um código especial para fazer download de uma carga viral no dispositivo.
O iPad fez download de todos esses arquivos (pacote saffron.deb, freeze.tar.xz, install.dylib) de nosso
servidor HTTP local. Como geramos para o domínio um certificado SSL que apontava para nossa
máquina local, a conexão permaneceu sob SSL durante o download do PDF, fazendo o Safari mostrar
o ícone de cadeado o tempo todo e fazendo com que a vítima se sentisse segura.
Ao explorar o iPad da vítima, fizemos download de uma carga viral que instalou o servidor SSH, o VNC
e algumas dependências de nosso servidor HTTP. A essa altura, o JBME instalaria o Cydia, mas não
queríamos dar indícios de um ataque, por isso modificamos o código JBME star_ para não criar um ícone
no desktop e não instalar o Cydia. Utilizamos o script pós-instalação para remover algumas de nossas
impressões digitais, como o ícone VNC e configurações do menu System Settings do iOS. O script pósinstalação veiculou, então, um comando ping para nos informar que o dispositivo estava pronto
e aceitando conexões na porta 22. Detectamos o ping com o tcpdump executado no Terminal.
A criação do “hack” FOCUS 11 para Apple iPad
9
Resultados
Em seguida, utilizamos SSH para acessar o dispositivo como root e poder fazer o que quiséssemos:
ler mensagens privadas, fazer download de fotos privadas, pegar a lista de contatos, instalar mais
aplicativos (um “keylogger”, por exemplo) e muito mais.
Recarregamos a interface do iPad para fazer com que o servidor VNC respondesse corretamente a
nossas conexões. Em seguida, iniciamos nosso cliente VNC favorito e nos conectamos ao dispositivo.
Vimos tudo o que a vítima fez no iPad e até interagimos com isso.
10
A criação do “hack” FOCUS 11 para Apple iPad
Enquanto trabalhávamos ocultamente, a vítima continuava a navegar pelo Gmail e a visitar sites,
sem saber que tínhamos invadido o sistema e comprometido todos os seus dados privados.
Assim que a “springboard” (tela inicial) do iPad apareceu na tela, nossa plateia na FOCUS começou a
aplaudir. Alguns nos abordaram para fazer perguntas e, em alguns casos, para se certificarem de que
não tínhamos “hackeado” alguém durante a conferência. Claro que não fizemos isso. Nós apenas
demonstramos do que são capazes pessoas mal-intencionadas.
Conclusões
O Apple iOS é mais seguro que qualquer outro sistema operacional, mas não é impenetrável.
Ocasionalmente são descobertas vulnerabilidades nesse sistema operacional e em seus aplicativos.
Apesar dos esforços de marketing da Apple em dizer o contrário, não podemos contar unicamente
com o fornecedor para proteger nossos dispositivos móveis.
No momento em que pensamos que estamos seguros, já estamos vulneráveis. Para esse “hack”,
não importava se a vítima estava utilizando SSL. Tudo o que precisávamos era de uma vítima incauta
ou despreocupada. Temos a tendência de achar que a segurança de nossos sistemas — e a segurança
de nossos dados, nosso dinheiro e nossa identidade on-line — pode se basear apenas em uma senha
forte, um firewall grande e caro (ou qualquer outro appliance) ou um bom programa antimalware.
Na realidade, nossa segurança depende de uma combinação de todos os três. No entanto, a coisa mais
importante de que precisamos para nos proteger on-line é a conscientização. Precisamos ter consciência
de que há malfeitores on-line, de que existem vulnerabilidades e de que precisamos corrigi-las ou
inviabilizar seu uso.
A criação do “hack” FOCUS 11 para Apple iPad
11
Às vezes, uma vulnerabilidade simples parece inofensiva. Se você examinar cada uma separadamente,
pode achar impossível que alguém consiga utilizar a falha para invadir o seu dispositivo. No entanto,
se você juntar duas vulnerabilidades, elas podem se tornar um risco grave. Além disso, tenha em mente
que muitas coisas boas podem ser desvirtuadas e transformadas em coisas más. Boas ferramentas nas
mãos erradas podem se tornar armas para invadir nossos sistemas.
As vulnerabilidades estão presentes na maior parte do software. Temos de ficar alertas para as
recomendações dos fornecedores e instalar correções ou adotar contramedidas para evitar sermos
comprometidos. Também podemos nos beneficiar de ferramentas de segurança que nos alertam
sobre software vulnerável em nossas redes.
Agradecimentos
Agradecemos a Stuart McClure por seu incentivo constante e a Raul Collantes por sua ajuda com ideias
e análises.
Sobre os autores
Gabriel Acevedo é um pesquisador de segurança da filial do McAfee Labs em Santiago, no Chile.
Ele pesquisa vulnerabilidades novas e existentes nas plataformas Microsoft Windows e Unix, appliances
de segurança e outros sistemas. Acevedo faz parte da equipe McAfee Vulnerability Management
Content (anteriormente chamada de McAfee Foundstone®), uma equipe global responsável pela
implementação de verificações de software para detectar a presença de vulnerabilidades em sistemas
de computadores remotos. Ele também lidera o Mobile Security Working Group, que é parte do
McAfee Labs, fazendo pesquisa de segurança colaborativa sobre dispositivos móveis e incorporados.
Michael Price é ex-gerente sênior de operações do McAfee Labs na filial de Santiago. Na McAfee, ele
trabalhou com entidades externas no Chile e na América Latina e promoveu excelência técnica e inovação.
Price é atualmente arquiteto-chefe de iOS na Appthority, onde pesquisa iOS e segurança de aplicativos.
Kehrer, Paul. “Trustwave’s SpiderLabs Security Advisory TWSL2011-007” (Recomendação de segurança do SpiderLabs da Trustwave), julho de 2011.
https://www.trustwave.com/spiderlabs/advisories/TWSL2011-007.txt
Apple. “Sobre o conteúdo de segurança da Atualização de Software do iOS 4.3.5 para iPhone”, julho de 2011.
http://support.apple.com/kb/HT4824?viewlocale=pt_BR
3
Apple. “About the security content of iOS 4.2.10 Software Update for iPhone”
(Sobre o conteúdo de segurança da atualização de software do iOS 4.2.10 para iPhone), julho de 2011. http://support.apple.com/kb/HT4825
4
Percoco, Nicholas e Paul Kehrer. “Getting SSLizzard”, agosto de 2011. http://defcon.org/html/defcon-19/dc-19-speakers.html#Percoco
5
Para mais informações sobre certificados e autoridades de certificação, consulte http://mcaf.ee/2mjdv
6
Bédrune, Jean-Baptiste. “Analysis of the jailbreakme v3 font exploit” (Análise da exploração de fonte do jailbreakme v3), julho de 2011.
http://esec-lab.sogeti.com/post/Analysis-of-the-jailbreakme-v3-font-exploit
7
https://github.com/comex/star_
8
https://github.com/posixninja/xpwn
9
https://github.com/hubert3/iSniff
1
2
As informações deste documento são fornecidas somente para fins educacionais e para conveniência dos clientes da McAfee. As informações
aqui contidas estão sujeitas a alterações sem aviso prévio, sendo fornecidas “no estado”, sem garantia de qualquer espécie quanto à exatidão
e aplicabilidade das informações a qualquer circunstância ou situação específica.
McAfee do Brasil Comércio de Software Ltda.
Av. das Nações Unidas, 8.501 - 16° andar
CEP 05425-070 - São Paulo - SP - Brasil
Telefone: +55 (11) 3711-8200
Fax: +55 (11) 3711-8286
www.mcafee.com/br
McAfee, o logotipo da McAfee, McAfee Labs e McAfee Foundstone são marcas comerciais ou marcas registradas da McAfee, Inc. ou suas
afiliadas nos EUA e em outros países. Outros nomes e marcas podem ser propriedade de terceiros. Os planos, especificações e descrições de
produtos aqui contidos são fornecidos apenas para fins informativos, estão sujeitos a alterações sem notificação prévia e são fornecidos sem
garantia de qualquer espécie, expressa ou implícita. Copyright © 2012 McAfee, Inc.
41724wp_ipad-hack_0212_fnl_ETMG