Proteção de Banco de Dados MySQL
Moderador: Moderadores
Proteção de Banco de Dados MySQL
Pessoal, me aconteceu uma coisa estranha recentemente: um técnico de informática não autorizado acessou meu banco de dados em um provedor (Kinghost), sem a senha.
Ele acessou a rede pelo notebook dele, sendo que uma das máquinas da rede tinha meu sistema instalado, incluindo o Maria DB. Ele usou algum aplicativo no notebook dele (não sei qual é, pois eu não estava presente, só tenho a informação do usuário dessa máquina) para capturar os dados do banco de dados.
Eu gostaria de entender como ele pode ter feito isso.
E, sobretudo, gostaria de saber como posso proteger meu banco de dados desse tipo de ataque.
Alguém me ajuda?
Ele acessou a rede pelo notebook dele, sendo que uma das máquinas da rede tinha meu sistema instalado, incluindo o Maria DB. Ele usou algum aplicativo no notebook dele (não sei qual é, pois eu não estava presente, só tenho a informação do usuário dessa máquina) para capturar os dados do banco de dados.
Eu gostaria de entender como ele pode ter feito isso.
E, sobretudo, gostaria de saber como posso proteger meu banco de dados desse tipo de ataque.
Alguém me ajuda?
Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Proteção de Banco de Dados MySQL
Olá!
Baseado no teu relato, é difícil opinar. Provavelmente alguma brecha foi deixada durante o desenvolvimento. Eu apostaria em SQL Injection...
Baseado no teu relato, é difícil opinar. Provavelmente alguma brecha foi deixada durante o desenvolvimento. Eu apostaria em SQL Injection...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Proteção de Banco de Dados MySQL
A senha do banco de dados está salva no PRG do meu sistema. Os computadores dos usuários não têm os PRGs. Mas claro que, se está no PRG, também está no EXE.
Mas, até onde sei, o técnico não examinou o EXE. Ele simplesmente acessou o computador do usuário pela rede, por meio do notebook dele, e fez uma cópia integral do banco de dados do provedor.
Do relatório elaborado pelo próprio técnico, consta o seguinte: "Por essa razão, a verificação foi realizada no computador de
patrimônio X e serial Y, utilizado pela servidora ..., através do
monitoramento da comunicação realizada entre o dispositivo e o servidor que hospeda os
dados durante a inicialização do programa tlprocesso" com seu login. Assim, foi possível utilizar
a conexão aberta pela aplicação para realizar a exportação dos dados e gerar um arquivo para
posterior análise conforme descrito abaixo:"
Queria entender como ele conseguiu fazer esse monitoramento da comunicação, e como faço para evitar que isso ocorra novamente.
Mas, até onde sei, o técnico não examinou o EXE. Ele simplesmente acessou o computador do usuário pela rede, por meio do notebook dele, e fez uma cópia integral do banco de dados do provedor.
Do relatório elaborado pelo próprio técnico, consta o seguinte: "Por essa razão, a verificação foi realizada no computador de
patrimônio X e serial Y, utilizado pela servidora ..., através do
monitoramento da comunicação realizada entre o dispositivo e o servidor que hospeda os
dados durante a inicialização do programa tlprocesso" com seu login. Assim, foi possível utilizar
a conexão aberta pela aplicação para realizar a exportação dos dados e gerar um arquivo para
posterior análise conforme descrito abaixo:"
Queria entender como ele conseguiu fazer esse monitoramento da comunicação, e como faço para evitar que isso ocorra novamente.
Inacio de Carvalho Neto
Proteção de Banco de Dados MySQL
Pelo que eu entendi, o técnico monitorou a comunicação pela rede. Existem programas, como p wireshark que capturam pacotes na rede. Ele descobriu que o seu exe estava abrindo a porta 3306 e ele monitorou os pacote correspondentes. O que me deixa intrigado é que esses pacotes deviam estar criptografados. Como vc faz para conectar ao banco ? Poderia postar o trecho que faz isso ?
Se os pacotes trafegam descriptografados fica difícil ajudar. Nesse caso, vc poderia pelo menos dificultar o invasor, limitando os IPs que podem acessar o banco.
O link a seguir pode lhe ajudar
https://mariadb.com/kb/en/configuring-m ... mote-hosts
Se os pacotes trafegam descriptografados fica difícil ajudar. Nesse caso, vc poderia pelo menos dificultar o invasor, limitando os IPs que podem acessar o banco.
O link a seguir pode lhe ajudar
https://mariadb.com/kb/en/configuring-m ... mote-hosts
Proteção de Banco de Dados MySQL
Possivelmente seu site deva ser acessado via https, então apostaria em algum programa de monitoramento de pacotes de rede Wi-Fi. Talvez a criptografia do roteador esteja setada mais fraca ou até mesmo sem facilitando a leitura pela rede Wi-Fi.
Outra possibilidade é o técnico ter tido acesso fácil aos dados de conexão que estejam com o usuário ou em algum arquivo.
Outra possibilidade é o técnico ter tido acesso fácil aos dados de conexão que estejam com o usuário ou em algum arquivo.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Proteção de Banco de Dados MySQL
Acesso o banco de dados desta forma:
Criptografado? Eu não sei fazer isto.
Os usuários não têm os dados de conexão, nem há arquivos nos computadores dos usuários com esses dados, apenas o .exe.
Código: Selecionar todos
FUNCTION conectado(nProvedor)
LOCAL cnConnection
LOCAL nPort :=" "
LOCAL nVersion :=3
LOCAL cServer :="mysql.xxx.com.br"
LOCAL cDatabase :="xxx"
LOCAL cUser :="xxx"
LOCAL cPassword :="xxx"
private nVzexq :=0
#define AD_USE_CLIENT 3
hb_Default( @nPort, 3306 )
hb_Default( @nVersion, 3 )
do while .t.
ODBC_MARIADB=Mariadb_StringConexao()
cnConnection:= win_OleCreateObject( "ADODB.Connection" )
cnConnection:ConnectionString := ODBC_MARIADB + ";Server=" + cServer + ";" + "Port=" + Ltrim( Str( nPort ) ) + ;
";Stmt=;Database=" + cDatabase + ";User=" + cUser + ";Password=" + cPassword + ";Collation=latin1;" + ;
"AUTO_RECONNECT=1;COMPRESSED_PROTO=0;PAD_SPACE=1" // usando compactaΒo impede certas checagens // Option=131072;
cnConnection:CursorLocation := AD_USE_CLIENT
cnConnection:CommandTimeOut := 300 // seconds
cnConnection:ConnectionTimeOut := 300 // seconds
if cnConnection:State#0
exit
else
nVzexq++
if nVzexq>2
?"Não conectou"
inkey(5)
return 999
endif
endif
exit
enddo
RETURN cnConnection
Os usuários não têm os dados de conexão, nem há arquivos nos computadores dos usuários com esses dados, apenas o .exe.
Inacio de Carvalho Neto
Proteção de Banco de Dados MySQL
Não sou especialista no assunto, mas pelo que entendi dos links que pesquisei :
(1) O mysql/mariadb vem com ssl desabilitado, logo o tráfego pode ser monitorado
Para saber se o suporte a ssl no seu servidor está ativo faça :
Repare na linha : "have_ssl"
(2) Para ativar o suporte encontrei esse link.
https://www.alibabacloud.com/blog/how-t ... ion_595079
O suporte a ssl é uma característica do servidor, basicamente não há nada que a sua aplicação possa fazer, já que teoricamente o ODBC faz o trabalho de enviar e receber. Já que o seu mariadb está em um provedor, creio que é melhor entrar em contato com o provedor. Note que na documentação que enviei tem uma etapa para a geração de chaves ssl. Não entendo bem essa parte, mas creio que o seu provedor deve lhe informar algo a respeito.
(1) O mysql/mariadb vem com ssl desabilitado, logo o tráfego pode ser monitorado
Para saber se o suporte a ssl no seu servidor está ativo faça :
Código: Selecionar todos
SHOW VARIABLES LIKE '%ssl%';
(2) Para ativar o suporte encontrei esse link.
https://www.alibabacloud.com/blog/how-t ... ion_595079
O suporte a ssl é uma característica do servidor, basicamente não há nada que a sua aplicação possa fazer, já que teoricamente o ODBC faz o trabalho de enviar e receber. Já que o seu mariadb está em um provedor, creio que é melhor entrar em contato com o provedor. Note que na documentação que enviei tem uma etapa para a geração de chaves ssl. Não entendo bem essa parte, mas creio que o seu provedor deve lhe informar algo a respeito.
Proteção de Banco de Dados MySQL
Uma curiosidade interessante: a configuração do ssl no PostgreSQL me pareceu bem mais fácil a primeira vista:
https://www.percona.com/blog/enabling-a ... nnections/
https://www.percona.com/blog/enabling-a ... nnections/
Proteção de Banco de Dados MySQL
Fiz a pesquisa do ssl no servidor, veja no anexo.
Mas, salvo erro meu, o MariaDB está instalado nas máquinas dos usuários. Então, não é no servidor, correto? Ou mesmo assim eu teria que configurar no servidor?
Mas, salvo erro meu, o MariaDB está instalado nas máquinas dos usuários. Então, não é no servidor, correto? Ou mesmo assim eu teria que configurar no servidor?
Inacio de Carvalho Neto
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Proteção de Banco de Dados MySQL
Olá!
Dentro da rede, ele pode até interceptar a conexão.
Eu quero saber se fora da rede ele consegue.
Interceptar por exemplo a conexão da empresa com o provedor do SGBD.
Saudações,
Itamar M. Lins Jr.
Dentro da rede, ele pode até interceptar a conexão.
Eu quero saber se fora da rede ele consegue.
Interceptar por exemplo a conexão da empresa com o provedor do SGBD.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Proteção de Banco de Dados MySQL
Não sei se ele tentou fazer fora da rede.
Mas a questão é: tem como impedir que faça essa interceptação, dentro ou fora da rede?
Mas a questão é: tem como impedir que faça essa interceptação, dentro ou fora da rede?
Inacio de Carvalho Neto
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Proteção de Banco de Dados MySQL
Olá!
Dentro da rede ele já FUROU o PRINCIPAL BLOQUEIO.
Quero ver da casa dele por exemplo ele acessar o seu BD esteja onde estiver.
O resto é monitorar portas. Se tiver criptografado o tráfego é bem difícil. Tem que ver isso no SGBD, parece que vc usa MariaDB/MySQL. Veja nas configurações se está ativa a criptografia. Mas se ele tem acesso a sua rede ele já está dentro, talvez ele acessou a maquina local e está inventando... Não sei, tenho que ler muita coisa a esse respeito para saber como fazer, seria mais fácil perguntar para ele como fez... Se ficar com segredinho é pq não fez nada de mais. Assim eu penso.
Ele pode ter EDITADO O .EXE e viu o login/senha.
Saudações,
Itamar M. Lins Jr.
Dentro da rede ele já FUROU o PRINCIPAL BLOQUEIO.
Quero ver da casa dele por exemplo ele acessar o seu BD esteja onde estiver.
O resto é monitorar portas. Se tiver criptografado o tráfego é bem difícil. Tem que ver isso no SGBD, parece que vc usa MariaDB/MySQL. Veja nas configurações se está ativa a criptografia. Mas se ele tem acesso a sua rede ele já está dentro, talvez ele acessou a maquina local e está inventando... Não sei, tenho que ler muita coisa a esse respeito para saber como fazer, seria mais fácil perguntar para ele como fez... Se ficar com segredinho é pq não fez nada de mais. Assim eu penso.
Ele pode ter EDITADO O .EXE e viu o login/senha.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Proteção de Banco de Dados MySQL
Olá!
é usando entre o Apache/IIS/Etc e o NAVEGADOR Edger/Chrome/Firefox... Banco de dados usa o TCP/IP.
HTTP e HTTPS e FTP e DHCP roda em cima do TCP. Sem HTTP, sem FTP, sem DHCP vc consegue comunicação com Mysql/MariaDb por exemplo até o LetoDBf roda. SMB é outro protocolo da M$ mais FURADO que queijo suíço, serve para compartilhar impressoras, pastas etc.
https://www.gta.ufrj.br/grad/03_1/ip-se ... ducao.html
Saudações,
Itamar M. Lins Jr.
Uma pequena correção HTTPS não é usado por banco de dados. HTTPPossivelmente seu site deva ser acessado via https,
HTTP e HTTPS e FTP e DHCP roda em cima do TCP. Sem HTTP
https://www.gta.ufrj.br/grad/03_1/ip-se ... ducao.html
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Proteção de Banco de Dados MySQL
Eu não estava no local na hora, mas, pelo que o usuário me contou, parece que ele não editou o .EXE não. E com certeza ele não mexeu na máquina do usuário, só acessou pela rede.Olá!
Dentro da rede ele já FUROU o PRINCIPAL BLOQUEIO.
Quero ver da casa dele por exemplo ele acessar o seu BD esteja onde estiver.
O resto é monitorar portas. Se tiver criptografado o tráfego é bem difícil. Tem que ver isso no SGBD, parece que vc usa MariaDB/MySQL. Veja nas configurações se está ativa a criptografia. Mas se ele tem acesso a sua rede ele já está dentro, talvez ele acessou a maquina local e está inventando... Não sei, tenho que ler muita coisa a esse respeito para saber como fazer, seria mais fácil perguntar para ele como fez... Se ficar com segredinho é pq não fez nada de mais. Assim eu penso.
Ele pode ter EDITADO O .EXE e viu o login/senha.
Como faço para ver se está ativa a criptografia?
Não tenho como perguntar pra ele como fez. Não é questão de segredinho. Apenas não tenho acesso a ele, nem sei quem é.
Eu não te entendi. Falei alguma besteira?Será que entendi direito"
Inacio de Carvalho Neto
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Proteção de Banco de Dados MySQL
Olá!
Se não me falha a memória o Vladimir postou.
Lembre-se é seu banco de dados, e aprender essa parte é o básico do básico.
Primeira coisa é perguntar ao provedor se já está criptografado a transmissão.
Não confundir criptografia de dados(strings) com criptografia dos PACOTES DA COMUNICAÇÃO.
Saudações,
Itamar M. Lins Jr.
Pesquisar na internet.Como faço para ver se está ativa a criptografia?
Se não me falha a memória o Vladimir postou.
Lembre-se é seu banco de dados, e aprender essa parte é o básico do básico.
Primeira coisa é perguntar ao provedor se já está criptografado a transmissão.
Não confundir criptografia de dados(strings) com criptografia dos PACOTES DA COMUNICAÇÃO.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.


