Alterando a senha de maneira segura no Oracle

Olá pessoal, vamos ver como alterar a senha no Oracle Database de maneira segura? Estudando recentemente para uma prova de certificação me deparei com uma questão bastante interessante e que pouquíssimos DBAs tem conhecimento, eu chutaria que uns 95% não sabem disso.

O que quero mostrar aqui é que se você não usa criptografia no SQL Net tudo que vai do client até o server está lá visível na rede, basta rodar um sniffer na rede ou simplesmente fazer como fiz. Então quando você troca a senha de um usuário do banco de dados usando o comando mais conhecido está na verdade deixando o seu banco de dados ainda mais vulnerável.

autenticação por senha

Vamos ao que quero mostrar…

Alterando a senha via SQL*Plus de maneira insegura

Vou executar o comando tcpdump para monitorar minha placa de rede:

[root@oracle-srv ~]# tcpdump -XX -i eth0 > tcpdump.log
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C99 packets captured
100 packets received by filter
0 packets dropped by kernel

E então alterar a senha do meu usuário no banco de dados através do client SQL*Plus:

Frankys-MBP:~ frankyweber$ sqlplus system/oracle@192.168.15.21:1521/cdb3.localdomain

SQL*Plus: Release 12.1.0.2.0 Production on Sat Jun 24 21:07:37 2017

Copyright (c) 1982, 2016, Oracle. All rights reserved.

Last Successful login time: Sat Jun 24 2017 20:26:25 -03:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> alter user c##franky identified by oracle;

User altered.

Vamos ver o que ficou gravado no arquivo tcpdump.log. Vou mostrar só a parte que interessa, porque o tcpdump captura todo tráfego que passou por esta placa de rede. Vejamos:

[root@oracle-srv ~]# vi tcpdump.log
21:07:42.337686 IP Frankys-MBP.57728 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 6724:7023, ack 7042, win 4096, options [nop,nop,TS val 1454618478 ecr 31220076], length 299
0x0000: 0800 270f d012 80e6 5009 af7a 0800 4500 ..'.....P..z..E.
0x0010: 015f 1de8 4000 4006 7c3d c0a8 0f0e c0a8 ._..@.@.|=......
0x0020: 0f15 e180 05f1 aa83 ce5f 6566 9019 8018 ........._ef....
0x0030: 1000 60dc 0000 0101 080a 56b3 b76e 01dc ..`.......V..n..
0x0040: 616c 0000 012b 0600 0000 0000 035e 1121 al...+.......^.!
0x0050: 8000 0000 0000 00fe ffff ffff ffff ff7b ...............{
0x0060: 0000 00fe ffff ffff ffff ff0d 0000 00fe ................
0x0070: ffff ffff ffff fffe ffff ffff ffff ff00 ................
0x0080: 0000 0001 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 00fe ................
0x00a0: ffff ffff ffff ff00 0000 0000 0000 00fe ................
0x00b0: ffff ffff ffff fffe ffff ffff ffff fffe ................
0x00c0: ffff ffff ffff ff00 0000 0000 0000 00fe ................
0x00d0: ffff ffff ffff fffe ffff ffff ffff ff00 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 0000 0000 0000 0029 ...............)
0x0110: 616c 7465 7220 7573 6572 2063 2323 6672 alter.user.c##fr
0x0120: 616e 6b79 2069 6465 6e74 6966 6965 6420 anky.identified.
0x0130: 6279 206f 7261 636c 6501 0000 0001 0000 by.oracle.......
0x0140: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0150: 0000 0000 0007 0000 0000 0000 0000 8000 ................
0x0160: 0000 0000 0000 0000 0000 0000 00 .............

Observem o perigo… o comando que utilizei para alterar a senha, inclusive a própria senha aberta, está ali disponível para qualquer um que saiba como interceptá-lo.

Sendo assim eu gostaria de apresentar para vocês um comando que poucos conhecem e é de grande importância, pois ele envia somente o hash da senha para o banco de dados, mesmo que você não esteja com a Oracle Net criptografada.

Alterando a senha via SQL*Plus de maneira segura

Vou gerar um novo tcpdump e armazenar a saída em outro log:

[root@oracle-srv ~]# tcpdump -XX -i eth0 > tcpdump_2.log
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C112 packets captured
113 packets received by filter
0 packets dropped by kernel

Altero a senha via SQL*Plus novamente, mas desta vez utilizando o comando password, que envia a senha criptografada para o banco de dados aumentando um pouco a segurança do ambiente:

Frankys-MBP:~ frankyweber$ sqlplus system/oracle@192.168.15.21:1521/cdb3.localdomain

SQL*Plus: Release 12.1.0.2.0 Production on Sat Jun 24 21:14:51 2017

Copyright (c) 1982, 2016, Oracle. All rights reserved.

Last Successful login time: Sat Jun 24 2017 21:07:35 -03:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> password c##franky
Changing password for c##franky
New password:
Retype new password:
Password changed

Vamos analisar o arquivo de log do tcpdump gerado. Novamente só vou mostrar o conteúdo do arquivo que nos interessa:

[root@oracle-srv ~]# vi tcpdump_2.log
21:14:59.420581 IP Frankys-MBP.57844 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 6724:7185, ack 7043, win 4096, options [nop,nop,TS val 1455054066 ecr 31653560], length 461
0x0000: 0800 270f d012 80e6 5009 af7a 0800 4500 ..'.....P..z..E.
0x0010: 0201 78cc 4000 4006 20b7 c0a8 0f0e c0a8 ..x.@.@.........
0x0020: 0f15 e1f4 05f1 b912 0a49 6970 cc99 8018 .........Iip....
0x0030: 1000 28ab 0000 0101 080a 56ba 5cf2 01e2 ..(.......V.\...
0x0040: feb8 0000 01cd 0600 0000 0000 116b 118e .............k..
0x0050: 0000 0082 b100 0001 0000 0003 7312 feff ............s...
0x0060: ffff ffff ffff 1b00 0000 0201 0000 feff ................
0x0070: ffff ffff ffff 0800 0000 feff ffff ffff ................
0x0080: ffff feff ffff ffff ffff 0963 2323 6672 ...........c##fr
0x0090: 616e 6b79 2400 0000 0c41 5554 485f 5345 anky$....AUTH_SE
0x00a0: 5353 4b45 5900 0000 0001 0000 0030 0000 SSKEY........0..
0x00b0: 0010 4155 5448 5f4e 4557 5041 5353 574f ..AUTH_NEWPASSWO
0x00c0: 5244 c000 0000 4045 3435 3835 3731 4632 RD....@E458571F2
0x00d0: 3538 3846 3246 3534 3241 3643 3834 3732 588F2F542A6C8472
0x00e0: 3041 3137 3531 4244 3231 3232 4239 3046 0A1751BD2122B90F
0x00f0: 4534 3837 3933 3943 4132 3032 3733 4643 E487939CA20273FC
0x0100: 3432 3042 3933 4100 0000 0027 0000 000d 420B93A....'....
0x0110: 4155 5448 5f54 4552 4d49 4e41 4c15 0000 AUTH_TERMINAL...
0x0120: 0007 7474 7973 3030 3500 0000 002d 0000 ..ttys005....-..
0x0130: 000f 4155 5448 5f50 524f 4752 414d 5f4e ..AUTH_PROGRAM_N
0x0140: 4d5d 0000 001f 7371 6c70 6c75 7340 4672 M]....sqlplus@Fr
0x0150: 616e 6b79 732d 4d42 5020 2854 4e53 2056 ankys-MBP.(TNS.V
0x0160: 312d 5633 2900 0000 0024 0000 000c 4155 1-V3)....$....AU
0x0170: 5448 5f4d 4143 4849 4e45 2100 0000 0b46 TH_MACHINE!....F
0x0180: 7261 6e6b 7973 2d4d 4250 0000 0000 1800 rankys-MBP......
0x0190: 0000 0841 5554 485f 5049 440f 0000 0005 ...AUTH_PID.....
0x01a0: 3333 3733 3500 0000 0018 0000 0008 4155 33735.........AU
0x01b0: 5448 5f53 4944 2100 0000 0b66 7261 6e6b TH_SID!....frank
0x01c0: 7977 6562 6572 0000 0000 3600 0000 1241 yweber....6....A
0x01d0: 5554 485f 414c 5445 525f 5345 5353 494f UTH_ALTER_SESSIO
0x01e0: 4e6f 0000 0025 414c 5445 5220 5345 5353 No...%ALTER.SESS
0x01f0: 494f 4e20 5345 5420 5449 4d45 5f5a 4f4e ION.SET.TIME_ZON
0x0200: 453d 272d 3033 3a30 3027 0001 0000 00 E='-03:00'.....

Bingo! Veja que desta vez a senha não é apresentada.

Alterando a senha via SQL Developer de maneira insegura (1)

“Ah Franky, mas a gente costuma alterar a senha através do SQL Developer.”

OK, vamos testar então o mesmo cenário pra ver o que acontece…

Gero novamente o tcpdump:

[root@oracle-srv ~]# tcpdump -XX -i eth0 > tcpdump_3.log
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C57 packets captured
58 packets received by filter
0 packets dropped by kernel

E altero a senha:

SQLDevelper1

Vamos ver o log do tcpdump novamente:

[root@oracle-srv ~]# vi tcpdump_3.log
21:21:44.160053 IP Frankys-MBP.55169 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 65:181, ack 76, win 4096, options [nop,nop,TS val 1455457433 ecr 32068599], length 116
0x0000: 0800 270f d012 80e6 5009 af7a 0800 4500 ..'.....P..z..E.
0x0010: 00a8 04b6 0000 4006 d626 c0a8 0f0e c0a8 ......@..&......
0x0020: 0f15 d781 05f1 e264 3434 2dc7 5144 8018 .......d44-.QD..
0x0030: 1000 1f4b 0000 0101 080a 56c0 8499 01e9 ...K......V.....
0x0040: 53f7 0000 0074 0600 0000 0000 035e 3b02 S....t.......^;.
0x0050: 8021 0001 012a 0101 0d00 0000 0004 7fff .!...*..........
0x0060: ffff 0000 0000 0000 0000 0000 0001 0000 ................
0x0070: 0000 0000 0000 0000 0000 0061 6c74 6572 ...........alter
0x0080: 2075 7365 7220 6323 2366 7261 6e6b 7920 .user.c##franky.
0x0090: 6964 656e 7469 6669 6564 2062 7920 6f72 identified.by.or
0x00a0: 3463 756c 3001 0101 0100 0000 0000 0000 4cul0...........
0x00b0: 0280 0000 0000 ......

Por enquanto está igual como no SQL*Plus.

Alterando a senha via SQL Developer de maneira insegura (2)

Novamente gero um tcpdump:

[root@oracle-srv ~]# tcpdump -XX -i eth0 > tcpdump_4.log
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C121 packets captured
122 packets received by filter
0 packets dropped by kernel

Vamos ver então com o comando password via SQL Developer:

SQLDeveloper2

Vamos ver o novo log:

[root@oracle-srv ~]# vi tcpdump_4.log
21:26:03.897766 IP Frankys-MBP.55169 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 181:331, ack 265, win 4096, options [nop,nop,TS val 1455716033 ecr 32322694], length 150
0x0000: 0800 270f d012 80e6 5009 af7a 0800 4500 ..'.....P..z..E.
0x0010: 00ca 07b5 4000 4006 9305 c0a8 0f0e c0a8 ....@.@.........
0x0020: 0f15 d781 05f1 e264 360a 2dc7 5391 8018 .......d6.-.S...
0x0030: 1000 c9a2 0000 0101 080a 56c4 76c1 01ed ..........V.v...
0x0040: 3486 0000 0096 0600 0000 0000 1178 4b01 4............xK.
0x0050: 0101 0102 1169 4c01 0101 0102 035e 4d02 .....iL......^M.
0x0060: 8021 0001 013c 0101 0d00 0000 0004 7fff .!...<..........
0x0070: ffff 0000 0000 0000 0000 0000 0001 0000 ................
0x0080: 0000 0000 0000 0000 0000 0061 6c74 6572 ...........alter
0x0090: 2075 7365 7220 2243 2323 4652 414e 4b59 .user."C##FRANKY
0x00a0: 2220 6964 656e 7469 6669 6564 2062 7920 ".identified.by.
0x00b0: 224f 7234 636c 3322 2072 6570 6c61 6365 "Or4cl3".replace
0x00c0: 2022 6e75 6c6c 2201 0101 0100 0000 0000 ."null".........
0x00d0: 0000 0280 0000 0000 ........

Mudou um pouco, mas a minha senha continuou sendo exibida na rede.

Criando o usuário com a senha segura (!?)

Recebi o seguinte questionamento do Bruno Tarnowski: “E quando eu crio o usuário a senha vai criptografada?”.

Bom, vamos aos testes…

Executo mais uma vez o tcpdump:

[root@oracle-srv ~]# tcpdump -XX -i eth0 > tcpdump_5.log
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C159 packets captured
160 packets received by filter
0 packets dropped by kernel

Conecto no SQL*Plus e crio o usuário já forçando a expiração da senha:

Frankys-MBP:~ frankyweber$ sqlplus system/oracle@192.168.15.21:1521/cdb3.localdomain

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jun 25 00:45:26 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Sat Jun 24 2017 23:32:10 -03:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> create user c##bruno password expire identified by oracle;

User created.

SQL> grant create session to c##bruno;

Grant succeeded.

Vou analisar o log do tcpdump em duas partes. Primeiro a criação do usuário:

[root@oracle-srv ~]# vi tcpdump_5.log
00:45:37.002321 IP Frankys-MBP.61545 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 2902558424:2902558739, ack 374075489, win 4096, options [nop,nop,TS val 1467634793 ecr 44288512], length 315
        0x0000:  0800 270f d012 80e6 5009 af7a 0800 4500  ..'.....P..z..E.
        0x0010:  016f 2228 4000 4006 77ed c0a8 0f0e c0a8  .o"(@.@.w.......
        0x0020:  0f15 f069 05f1 ad01 86d8 164b f061 8018  ...i.......K.a..
        0x0030:  1000 5c39 0000 0101 080a 577a 5469 02a3  ..\9......WzTi..
        0x0040:  ca00 0000 013b 0600 0000 0000 035e 1121  .....;.......^.!
        0x0050:  8000 0000 0000 00fe ffff ffff ffff ffab  ................
        0x0060:  0000 00fe ffff ffff ffff ff0d 0000 00fe  ................
        0x0070:  ffff ffff ffff fffe ffff ffff ffff ff00  ................
        0x0080:  0000 0001 0000 0000 0000 0000 0000 0000  ................
        0x0090:  0000 0000 0000 0000 0000 0000 0000 00fe  ................
        0x00a0:  ffff ffff ffff ff00 0000 0000 0000 00fe  ................
        0x00b0:  ffff ffff ffff fffe ffff ffff ffff fffe  ................
        0x00c0:  ffff ffff ffff ff00 0000 0000 0000 00fe  ................
        0x00d0:  ffff ffff ffff fffe ffff ffff ffff ff00  ................
        0x00e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0100:  0000 0000 0000 0000 0000 0000 0000 0039  ...............9
        0x0110:  6372 6561 7465 2075 7365 7220 6323 2362  create.user.c##b
        0x0120:  7275 6e6f 2070 6173 7377 6f72 6420 6578  runo.password.ex
        0x0130:  7069 7265 2069 6465 6e74 6966 6965 6420  pire.identified.
        0x0140:  6279 206f 7261 636c 6501 0000 0001 0000  by.oracle.......
        0x0150:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0160:  0000 0000 0005 0000 0000 0000 0000 8000  ................
        0x0170:  0000 0000 0000 0000 0000 0000 00         .............

Vejam que a senha está exposta na criação do usuário, mas como ela está expirada já será imediatamente trocada no primeiro acesso. Ainda assim alguém pode interceptá-la nesse meio tempo entre a criação do usuário e o primeiro acesso, então ative a criptografada de toda a Oracle Net.

Conecto-me com o usuário c##bruno para fazer o teste se ao trocar a senha ela será enviada criptografada pela rede:

SQL> conn c##bruno/oracle@192.168.15.21:1521/cdb3.localdomain
ERROR:
ORA-28001: the password has expired

Changing password for c##bruno
New password:
Retype new password:
Password changed
Connected.

Agora vamos ver a conexão:

[root@oracle-srv ~]# vi tcpdump_5.log
00:46:02.261731 IP Frankys-MBP.61555 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 245:489, ack 9, win 4117, options [nop,nop,TS val 1467659957 ecr 44326712], length 244
        0x0000:  0800 270f d012 80e6 5009 af7a 0800 4500  ..'.....P..z..E.
        0x0010:  0128 fce6 4000 4006 9d75 c0a8 0f0e c0a8  .(..@.@..u......
        0x0020:  0f15 f073 05f1 507f 76c1 7b52 3eb2 8018  ...s..P.v.{R>...
        0x0030:  1015 0885 0000 0101 080a 577a b6b5 02a4  ..........Wz....
        0x0040:  5f38 00f4 0000 0100 0000 013b 012c 0c41  _8.........;.,.A
        0x0050:  0800 ffff 7f08 0000 0100 00ae 0046 0000  .............F..
        0x0060:  0800 4141 0000 0000 0000 0000 0000 0000  ..AA............
        0x0070:  0000 0000 0000 0000 0000 0000 0000 0800  ................
        0x0080:  0020 0000 0000 0000 2844 4553 4352 4950  ........(DESCRIP
        0x0090:  5449 4f4e 3d28 434f 4e4e 4543 545f 4441  TION=(CONNECT_DA
        0x00a0:  5441 3d28 5345 5256 4943 455f 4e41 4d45  TA=(SERVICE_NAME
        0x00b0:  3d63 6462 332e 6c6f 6361 6c64 6f6d 6169  =cdb3.localdomai
        0x00c0:  6e29 2843 4944 3d28 5052 4f47 5241 4d3d  n)(CID=(PROGRAM=
        0x00d0:  7371 6c70 6c75 7329 2848 4f53 543d 4672  sqlplus)(HOST=Fr
        0x00e0:  616e 6b79 732d 4d42 5029 2855 5345 523d  ankys-MBP)(USER=
        0x00f0:  6672 616e 6b79 7765 6265 7229 2929 2841  frankyweber)))(A
        0x0100:  4444 5245 5353 3d28 5052 4f54 4f43 4f4c  DDRESS=(PROTOCOL
        0x0110:  3d54 4350 2928 484f 5354 3d31 3932 2e31  =TCP)(HOST=192.1
        0x0120:  3638 2e31 352e 3231 2928 504f 5254 3d31  68.15.21)(PORT=1
        0x0130:  3532 3129 2929                           521)))

Nada de senha aqui.
E por fim a troca da senha expirada:

[root@oracle-srv ~]# vi tcpdump_5.log
00:46:02.288497 IP Frankys-MBP.61555 > oracle-srv.localdomain.ncube-lm: Flags [P.], seq 3681:3938, ack 3292, win 4096, options [nop,nop,TS val 1467659981 ecr 44326737], length 257
        0x0000:  0800 270f d012 80e6 5009 af7a 0800 4500  ..'.....P..z..E.
        0x0010:  0135 a845 4000 4006 f209 c0a8 0f0e c0a8  .5.E@.@.........
        0x0020:  0f15 f073 05f1 507f 842d 7b52 4b85 8018  ...s..P..-{RK...
        0x0030:  1000 b1bf 0000 0101 080a 577a b6cd 02a4  ..........Wz....
        0x0040:  5f51 0000 0101 0600 0000 0000 0376 02fe  _Q...........v..
        0x0050:  ffff ffff ffff ff18 0000 0001 0000 00fe  ................
        0x0060:  ffff ffff ffff ff05 0000 00fe ffff ffff  ................
        0x0070:  ffff fffe ffff ffff ffff ff08 6323 2362  ............c##b
        0x0080:  7275 6e6f 2700 0000 0d41 5554 485f 5445  runo'....AUTH_TE
        0x0090:  524d 494e 414c 1500 0000 0774 7479 7330  RMINAL.....ttys0
        0x00a0:  3035 0000 0000 2d00 0000 0f41 5554 485f  05....-....AUTH_
        0x00b0:  5052 4f47 5241 4d5f 4e4d 5d00 0000 1f73  PROGRAM_NM]....s
        0x00c0:  716c 706c 7573 4046 7261 6e6b 7973 2d4d  qlplus@Frankys-M
        0x00d0:  4250 2028 544e 5320 5631 2d56 3329 0000  BP.(TNS.V1-V3)..
        0x00e0:  0000 2400 0000 0c41 5554 485f 4d41 4348  ..$....AUTH_MACH
        0x00f0:  494e 4521 0000 000b 4672 616e 6b79 732d  INE!....Frankys-
        0x0100:  4d42 5000 0000 0018 0000 0008 4155 5448  MBP.........AUTH
        0x0110:  5f50 4944 0f00 0000 0533 3430 3731 0000  _PID.....34071..
        0x0120:  0000 1800 0000 0841 5554 485f 5349 4421  .......AUTH_SID!
        0x0130:  0000 000b 6672 616e 6b79 7765 6265 7200  ....frankyweber.
        0x0140:  0000 00                                  ...
00:46:02.292312 IP oracle-srv.localdomain.ncube-lm > Frankys-MBP.61555: Flags [P.], seq 3292:3740, ack 3938, win 229, options [nop,nop,TS val 44326744 ecr 1467659981], length 448
        0x0000:  80e6 5009 af7a 0800 270f d012 0800 4500  ..P..z..'.....E.
        0x0010:  01f4 61be 4000 4006 37d2 c0a8 0f15 c0a8  ..a.@.@.7.......
        0x0020:  0f0e 05f1 f073 7b52 4b85 507f 852e 8018  .....s{RK.P.....
        0x0030:  00e5 a15a 0000 0101 080a 02a4 5f58 577a  ...Z........_XWz
        0x0040:  b6cd 0000 01c0 0600 0000 0000 0806 000c  ................
        0x0050:  0000 000c 4155 5448 5f53 4553 534b 4559  ....AUTH_SESSKEY
        0x0060:  4000 0000 4037 3434 4238 3438 4631 4131  @...@744B848F1A1
        0x0070:  4631 4343 4141 4436 4631 3033 4136 3139  F1CCAAD6F103A619
        0x0080:  4531 4641 3630 3234 3032 4239 4142 3839  E1FA602402B9AB89
        0x0090:  4637 3538 3237 3038 4141 4436 3539 3837  F7582708AAD65987
        0x00a0:  4433 4438 3100 0000 000d 0000 000d 4155  D3D81.........AU
        0x00b0:  5448 5f56 4652 5f44 4154 4120 0000 0020  TH_VFR_DATA.....
        0x00c0:  3642 4241 3437 4239 3642 4336 4637 3441  6BBA47B96BC6F74A
        0x00d0:  3338 3436 3338 4136 4642 3744 3532 3735  384638A6FB7D5275
        0x00e0:  1548 0000 1400 0000 1441 5554 485f 5042  .H.......AUTH_PB
        0x00f0:  4b44 4632 5f43 534b 5f53 414c 5420 0000  KDF2_CSK_SALT...
        0x0100:  0020 3439 4431 3245 4645 3445 4136 3846  ..49D12EFE4EA68F
        0x0110:  4537 3844 4144 3643 3530 3443 3841 4233  E78DAD6C504C8AB3
        0x0120:  3533 0000 0000 1600 0000 1641 5554 485f  53.........AUTH_
        0x0130:  5042 4b44 4632 5f56 4745 4e5f 434f 554e  PBKDF2_VGEN_COUN
        0x0140:  5404 0000 0004 3430 3936 0000 0000 1600  T.....4096......
        0x0150:  0000 1641 5554 485f 5042 4b44 4632 5f53  ...AUTH_PBKDF2_S
        0x0160:  4445 525f 434f 554e 5401 0000 0001 3300  DER_COUNT.....3.
        0x0170:  0000 001a 0000 001a 4155 5448 5f47 4c4f  ........AUTH_GLO
        0x0180:  4241 4c4c 595f 554e 4951 5545 5f44 4249  BALLY_UNIQUE_DBI
        0x0190:  4400 2000 0000 2043 3143 3436 4541 3533  D......C1C46EA53
        0x01a0:  3534 4436 3238 4242 3131 4443 4446 4541  54D628BB11DCDFEA
        0x01b0:  3639 4341 3042 4100 0000 0004 0100 0000  69CA0BA.........
        0x01c0:  0200 0000 0000 0000 0000 0000 0000 0000  ................
        0x01d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x01e0:  0000 0000 0000 0000 0200 0000 0000 0000  ................
        0x01f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0200:  0000                                     ..

E aqui também nada exposto.

Conclusão

Constatado que o comando password é mais seguro e ele deve ser feito via SQL*Plus. Não testei com outras ferramentas, então por enquanto sei que via SQL*Plus é garantido. Sempre que criar um usuário, crie-o com a senha expirada, pois assim que a mesma for trocada ela será enviada criptografada pela rede. Como o comando password apresenta um prompt para inserir a senha, acredito que toda vez que tiver um prompt solicitando senha no SQL*Plus ela será enviada criptografada. Veja que no SQL Developer mesmo com o comando password e inserindo a senha no prompt apresentado a senha não é enviada criptografada pela rede.

Sugiro que você habilite a criptografia na camada Oracle Net. Em breve devo escrever algo sobre isso.

Não tenho dúvidas que bastante gente vai aprender com este artigo. Espero que gostem. Qualquer coisa pode deixar um comentário…

Como forma de agradecimento assine o blog, assim você fica sabendo sempre que tem post novo e também me incentiva a continuar escrevendo.

Abraços,

Franky