Tuesday, 29 July 2014

Apktool for Android security test in Windows

 
 


Use APKTool to Decompile, Edit, Translate and Recompile an APK
APKTool is an application  which decompiles and recompiles android APKs. If you know what you are doing, it also allows you to debug the smali code step by step. In our case it will enable us to build a language pack by translating the .xml strings inside APK files. 
This tutorial is for the Windows version of APKtool.
 The Google.Code page for APKTool is here, however, we have prepackaged everything you need and uploaded it here
The Video Tutorial is Below:
The Supplementary guide to common errors in APKTool is below:
You need to do the following preparations (the video outlines these steps anyway):
  1. Download the prepackaged APKTool zip.
  2. Extract them to a directory you will remember.
  3. Extract framework-res.apk AND apk files you want to decompile from the MIUI_Au ROM and copy them to the root directory of APKTool.
This step must be completed every time you are dealing with APKTool:
  1. Open a command window
  2. Navigate to the root directory of APKtool and type the following command:
    apktool if framework-res.apk
The output should be:
I: Framework installed to: C:\Users\Josh\apktool\framework\1.apk
This step does the actual decompiling of the APK (I will assume that the chosen APK is Settings.apk):
apktool d Settings.apk
The output should be:
I: Loading resource table…
I: Decoding resources…
I: Copying assets and libs…

After doing that, a new directory with the name of the APK you decompiled should have been created. You need to:
  1. Change into the newly created directory.
  2. Change into the /res folder
  3. Check to see if a values-xx folder exists, where xx is the two letter code of the target language to be translated into. For example, if you are aiming to translate into German, check for a values-de folder. If it does not exist (and chances are that if you are translating into a new language, that it will not exist), you need to create it. Then, copy the arrays.xml and strings.xml files from the /values folder into the folder you just created.
  4. Open these two files (in Notepad ++) and alter the strings (the text in BLACK ONLY).  Look out for things that look like  %d and %s /’  -    Don’t edit these, as they are variables.  Also, if you see &, it represents the ‘&’ sign, so feel free to change it. Finally, you MUST be sure to place a backslash ‘\’ before an apostrophe, for example Proxy\’s would be the equivalent of Proxy’s.
  5. Once you have translated and edited your arrays.xml and strings.xml files, save them, and return to the root directory of APKTool.
  6. Open a command prompt to that directory
Enter the following command to recompile your edited and translated APK (assuming that Settings.apk is the chosen APK):
apktool b Settings
The output should be:
I: Checking whether sources has changed…
I: Smaling…
I: Checking whether resources has changed…
I: Building resources…
I: Building apk file…

You may get a couple of these messages:
aapt: warning: string ‘app_killed_message’ has no default translation in C:\Users\Josh\Desktop\NF\framework-res\res; found: fr it ja
aapt: warning: string ‘global_action_reboot’ has no default translation in C:\Users\Josh\Desktop\NF\framework-res\res; found: fr it ja
aapt: warning: string ‘reboot_system’ has no default translation in C:\Users\Josh\Desktop\NF\framework-res\res; found: fr it ja
aapt: warning: string ‘toast_reboot_recommend’ has no default translation in C:\Users\Josh\Desktop\NF\framework-res

However,  it will build the apk anyway. These messages mean that some strings don’t have values. It is only an issues if the text im blue includes your translation language.
Once that is done, two directories will have been created within the decompilation directory. One will be called “dist”, and this is where it will place a built, but not signed, apk file. The other one is called “build”, and here it will place everything “loose” (the contents of the APK).
I have trouble using the APK files it spits out in the /dist folder ( they force closes if they are an application, or bootloop it a framework-res.apk; I think the reason is because Android will not accept APK files that are not signed).  Instead, copy the resources.arsc from the /build directory into the original framework-res from the rom (just overwrite the old resources.arsc one with the new one).
This tutorial is for the Windows version of APKtool.

Windows password hacking with Kalilinux

This tutorial describes the basics of using Kali linux tool  chntpw,

For those not familiar with it, chntpw is a Kali Linux tool that can be used to edit the windows registry, reset a users password, and promote a user to administrator, as well as several other useful options. Using chntpw is a great way to reset a Windows Password or otherwise gain access to a Windows machine when you don’t know what the password it.
Using chntpw is pretty straightforward, especially if you use interactive mode.

Mounting the Kali Linux live CD:
First, boot the Kali linux  CD, or other Linux Live CD.

1. Mount the windows partition. If you don’t know what device it is on, you can use the cfdisk command and it will tell you the device. The device should look something like “/dev/sda1.”
Mount the partition using the ntfs-3g or mount command:
ntfs-3g /dev/sda1 /mnt/windows
OR:
mount -t ntfs-3g /dev/sda1 /mnt/windows

Locate the Windows SAM File
2. Now, to make it a little easier, go ahead and switch to the location of the Windows Sam file and other hive files.
cd /mnt/WINDOWS/system32/config
*Note that in Windows Vista or Windows 7, the physical registry location is in "System32," with a capital "S"

To blank out or change the Windows password:

3. Type chntpw -h to familiarize yourself with the different options and usage of chntpw. If you like, you can actually use chntpw by giving it the appropriate option, but I like to use interactive mode, which makes it a little easier.
In addition to any options, you also have to give chntpw the location of the windows sam file, which stores the passwords, or the registry hives that you want to edit, which should all be in the config folder(Instead of WINDOWS, NT uses WINNT.)
4. Use the -i option to start chntpw in interactive mode and make sure to specify the name of the Windows sam file, as well as any other registry hive files you want to edit.
chntpw -i sam
Press “1” to edit the user password and then type the name of the user that you wish to edit and press enter.
You will now be given the option to blank out the password by pressing “1”, as well as several other ways to change the user, such as upgrading their account to an administrator.
Press “!” to exit the Edit User Screen and then press “q” to exit chntpw and you will be prompted to save any changes.


Successfully cracked windows password!!!!

Monday, 28 July 2014

Pentesting login pages

  

          Have you appeared for Penetration testing interview, or have you gone through the testing of banking or social networking site? If yes then hopefully you would be familiar with login page that is used to protect confidential information,critical system functionality or data with high integrity. Login page not only give you authority to change in to you account but also give freedom see the critical and confidential information behind the login page. Here is the set of test cases that would help you in getting the right job with a better understanding of a login page.

Steps are: 
  • Test with correct username and password: This is the most basic positive test cases, while using this user should successfully logged in.If correct username and password is not helping you to login in to your application then file a bug because this shows that something is wrong with application.
  • Verify that back button is not able to push you to your logged in page just after you logout from your specific account:  This kind of test cases invoke the flaw associated with Session management. When session is not closed just after your log-out means any one can access you account if you have opened your specific login enabled account at any time just by clicking Back button in Browser.So one way to save your account from such misconducts is to close browser when ever you log-out from your account.
  • Test with incorrect username or password: access should be denied
  • Test with correct username and empty password:  In this case when user click on login button then a message should flash that says “Enter a password or something unexpected went wrong”
  • Test with empty username and correct password: Again an error message should appear to enter a valid email or username
  • Verify the correct error messages like  Incorrect combination of user name and password. If you are getting anything like Incorrect username or Incorrect password then be conscious because you application is giving half the information to hacker and your application is in great danger.
  • Test a page url without login to application: For such thing login with correct username and correct password and go to certain page, copy the url and paste the same in another browser.if you are able to open the page then this application is not in good shape to protect the user’s information because anyone can open a specific page just by entering direct url.
  • Verify the session timeout: This is most important test case for any finance related site.Session should time out if user is inactive for few minute. This is normally a sustainability test of session. If your application is not prompting for session timeout then think once this may be issue.
  • Verify https in url for login page:  S with Http mean secure http. If login is associated with http in url means you information to login in to application is not secure and anyone can access your information just by doing small effort. While HTTPS ensure encryption of information that is being sent to server from client end.
  • Verify ID in url while processing your request :  keep track on ID associated with your request url and ID associated with request url should be dynamic not static otherwise this may help some hacker to nab your information.
  • Verify deletion of ID while browsing : Go to the place where cookies are saved and try to delete cookies when you are just browsing your account and try to find out the cookies that have your username and password because as soon as you delete that cookies you should be reached to login page. If you find the same cookies then try to change the numbers in cookies and should verify what is happening, hopefully corrupt cookies that have your real id should redirect you on login page once again even you haven’t deleted the cookies.
  • Try to login when your cookies are disable
  • Check SQL injection: most devastating vulnerabilities to  impact a business, as it can lead to exposure of all of the sensitive information stored in an application’s database, including handy information such as usernames, passwords, names, addresses, phone numbers, and credit card details.
    So I would suggest including this test cases if you are going to test some banking and insurance related application. Most common SQL injection that is used  or ‘1’=’1, if this got executed then be ready for the loss of your important information. If means hacker can login without any problem to system or application.
  • Verify account lock out: I would like to include this test case with priority, if user is using 3 or some specific number of time a wrong password then his/her account should be locked out and access should be allowed after certain assurance form filling or by calling customer care. This may help user from hackers hand.
  • Bruteforce attack: Lets have collection of Brute-force user-name and password file for attempt password attack
  • XSS check:  Execute reflected xss attack as username or password later both then check is application accepting the script to ensure the xss attack
  • Verify simultaneous login to application on different browser: I think you all would be familiar with this in daily life if you would have used railway ticket booking site.
  • Try some hit and trial username and password : before deploying application, username and password like Admin:Admin , Guest:Guest, some username :password, author:author  should be use to test but should be denied when application is deployed.
        These all test cases not only test the functionality but also test the security of the application. But I am not saying that these test cases are enough to test security of application. Because security testing is the part of testing that does not have any relation with requirement document so more and more effort is needed if we are talking about the security of an application.
Hope this would help you in testing login page
  • Test with incorrect username or password: access should be denied
  • Test with correct username and empty password:  In this case when user click on login button then a message should flash that says “Enter a password or something unexpected went wrong”
  • Test with empty username and correct password: Again an error message should appear to enter a valid email or username
  • Verify the correct error messages like  Incorrect combination of user name and password. If you are getting anything like Incorrect username or Incorrect password then be conscious because you application is giving half the information to hacker and your application is in great danger.
  • Verify that back button is not able to push you to your logged in page just after you logout from your specific account:  This kind of test cases invoke the flaw associated with Session management. When session is not closed just after your log-out means any one can access you account if you have opened your specific login enabled account at any time just by clicking Back button in Browser.So one way to save your account from such misconducts is to close browser when ever you log-out from your account.
  • Test a page url without login to application: For such thing login with correct username and correct password and go to certain page, copy the url and paste the same in another browser.if you are able to open the page then this application is not in good shape to protect the user’s information because anyone can open a specific page just by entering direct url.
  • Verify the session timeout: This is most important test case for any finance related site.Session should time out if user is inactive for few minute. This is normally a sustainability test of session. If your application is not prompting for session timeout then think once this may be issue.
  • Verify https in url for login page:  S with Http mean secure http. If login is associated with http in url means you information to login in to application is not secure and anyone can access your information just by doing small effort. While HTTPS ensure encryption of information that is being sent to server from client end.
  • Verify ID in url while processing your request :  keep track on ID associated with your request url and ID associated with request url should be dynamic not static otherwise this may help some hacker to nab your information.
  • Verify deletion of ID while browsing : Go to the place where cookies are saved and try to delete cookies when you are just browsing your account and try to find out the cookies that have your username and password because as soon as you delete that cookies you should be reached to login page. If you find the same cookies then try to change the numbers in cookies and should verify what is happening, hopefully corrupt cookies that have your real id should redirect you on login page once again even you haven’t deleted the cookies.
  • Try to login when your cookies are disable
  • Check SQL injection: most devastating vulnerabilities to  impact a business, as it can lead to exposure of all of the sensitive information stored in an application’s database, including handy information such as usernames, passwords, names, addresses, phone numbers, and credit card details.
    So I would suggest including this test cases if you are going to test some banking and insurance related application. Most common SQL injection that is used  or ‘1’=’1, if this got executed then be ready for the loss of your important information. If means hacker can login without any problem to system or application.
  • Verify account lock out: I would like to include this test case with priority, if user is using 3 or some specific number of time a wrong password then his/her account should be locked out and access should be allowed after certain assurance form filling or by calling customer care. This may help user from hackers hand.
  • Verify simultaneous login to application on different browser: I think you all would be familiar with this in daily life if you would have used railway ticket booking site.
  • Try some hit and trial username and password : before deploying application, username and password like Admin:Admin , Guest:Guest, some username :password, author:author  should be use to test but should be denied when application is deployed.
These all test cases not only test the functionality but also test the security of the application. But I am not saying that these test cases are enough to test security of application. Because security testing is the part of testing that does not have any relation with requirement document so more and more effort is needed if we are talking about the security of an application.
Hope this would help you in testing login page