rcrypt version 1.2 is now released!

rcrypt is a Windows PE binary crypter (a type of packer) that makes use of timelock techniques to cause a delay in execution. This delay can cause analysis to fail on time constrained systems such as on disk scanners. rcrypt can pack exes and dll files. PEs that use tls or other interesting features of the PE spec are not currently supported. I may add support for more spec features as time permits. In version 1.0 and 1.1 your funky active X and COM files will not work. If there is enough interest I will consider adding other features/support.

rcrypt features include:

encryption of all code/data

timelock puzzle

This is just a proof of concept tool to showcase the potential use of these techniques as well as potential shortcomings of various detection systems.

rcrypt is being released for educational purposes. I do not condone malicious or illegal use of this tool. Using this tool might also cause you to experience light headedness or fatigue. I also take no responsibility for any of these potential outcomes. Use your own discretion.

rcrypt 1.2

Minor re-addition of some internal functionality that was removed from versions 1.0 and 1.1 due to issues with windows xp/7 and 32/64 bit. Issues resolved and 1.2 is now out.

File MD5 sum: 1c0989a751038a49052a4e37f8879f43

File SHA1 sum: 4c22b51e466fd2516c68c94c2dd5f4dbf1bc395b

rcrypt v1.2 (File archive password: 0xrage.com)

 

rcrypt 1.1

Added in rcrypt version 1.1 is the optional switch -trick0. Read the readme for details.

File MD5 sum: 6c53c7d7dc6b342174b1eda13597c771

File SHA1 sum: 30f6fbf6c615269b6c894f7eec125a03c4cd5afd

rcrypt 1.1 (File archive password: 0xrage.com)

 

Hey guys. So after much speculation that most people won’t just run arbitrary binaries that require root (despite being signed etc) I’ve decided to release the source to sessionlist on github! I guess after deving for windows all these years I just assumed people just double click everything and select ok ;P

Anyway if you don’t know what sessionlist is see the post below. Feel free to use this tool as you see fit, and if you find bugs and feel like sharing I’d be grateful! I’m sure this tool can be improved upon so let those creative juices flow!

Github: https://github.com/iamrage/sessionlist

Enjoy!

 

It’s been a little while huh. Well I’ve decided to release the finished v0.1 beta of my sessionlist tool.

A little about it and why I created it.

HTTP is a simple protocol, and many use it to create “program-like” websites. With asynchronous requests available in almost every browser (including mobile ones) it’s no surprise that many people create a zillion and one sites for almost any purpose. The underlying issue with HTTP is that it is stateless. How do you create the illusion of program state in a naturally stateless protocol? The correct answer is to create a new protocol that is designed for this purpose however that didn’t happen. Instead we have silly hacks that allow us to pretend to have state while using HTTP. How is this accomplished? Well, we pass variables and their values back and forth with every single request! It will cause overhead but they’re websites not real programs! To make this more manageable many web scripting languages support sessions which can reduce the overhead by storing a session id in browser cookies instead of all the variables/values and use the session id to look up server stored variable/values. Of course now all you need to facilitate authentication is the session id.

So if a website relies on cookies to store authentication details, be it via session id or other state information, a user can simply nab this information and present it as if they were the user and they should be authenticated as if they logged in with valid credentials.

Sessionlist v0.1 is a network sniffer that simply observes cookies sent over HTTP (via port 80 or user configured port via cmd line) and keeps track of them. It will save a list of sites and cookie data along with user-agent strings which should be sufficient to effectively spoof the user who generated the traffic. All you need is a plugin that allows you to set your own user agent and cookie data. I personally have found Firefox’s modify headers plugin to work perfectly but I’m sure others are fine as well. Using this tool to sniff traffic you can basically collect authentication data as it passes over the wire (or air). This will work on unencrypted HTTP traffic but if you’re familiar with SSL MITM attacks you can make this work on those sites as well. Generally for wireless sniffing you don’t need to perform any MITM attack but if you’re on a switched network then obviously a regular MITM attack will be needed. There are many tools that perform those functionalities so use your favorite.

As mentioned before this tool is a beta so there are bound to be bugs so please let me know as you find them so I can squash them and make this a better tool! I’ve included 32 and 64 bit builds. I may release this tool as open source sometime in the future.

The release archive is signed with my public pgp key which you can find on my about page. Click [here] for that. Once you’ve imported my public key simply run:

gpg [thefile.gpg]

If the signature is good then you’re set. If the signature fails then you are probably dealing with a tampered file (or you incorrectly imported my key somehow).

All feedback is appreciated and enjoy!

UPDATE:

Released version 1.0 with MORE bug fixes and UI changes! Threading issues have been fixed as well!

sessionlistv1.0

Older versions:

(v0.2 changelog)

Released version 0.2 with minor bug fixes and a much better capture engine (removed idiotic threading crap; until another version pthread will remain linked).

sessionlistv0.2

sessionlistv0.1

Android malware is everywhere. If you want to quickly get listings of permissions used by APK files check out my scanperms program.

Here is an example output on a trojanized app called AndroidDogwar mentioned on this site: http://www.sleetherz.com/2011/08/beware-of-android-app-dog-war-trojan-horse-malware/

Found permission VIBRATE which has the following attribute:
Allows access to the vibrator

Found permission INTERNET which has the following attribute:
Allows applications to open network sockets.

Found permission ACCESS_COARSE_LOCATION which has the following attribute:
Allows an application to access coarse (e.g., Cell-ID, WiFi) location

Found permission READ_PHONE_STATE which has the following attribute:
Allows read only access to phone state.

Found permission SEND_SMS which has the following attribute:
Allows an application to send SMS messages.

Found permission WRITE_SMS which has the following attribute:
Allows an application to write SMS messages.

Found permission READ_CONTACTS which has the following attribute:
Allows an application to read the user’s contacts data.

Found permission RECEIVE_BOOT_COMPLETED which has the following attribute:
Allows an application to receive the ACTION_BOOT_COMPLETED that is broadcast after the system finishes booting.

 

This app had been modified to send SMS messages to everyone on your contact list. Namely that you enjoy hurting small animals.

I find this useful for scanning directories full of APKs.

Note: new vesion v02b updated APKtool to 1.4.3

Note: new version adds fixes. Download the latest below.

scanperms02b.tar.gz

md5: d41a4f57dd0833dc1612ebbf40e024fb

 

 

If you’re running a lightweight window manager then chances are you might also be interested in using a lightweight desktop manager as well.

x11-misc/slim is a super light desktop manager for running whatever WM you decide to go with, in my case evilwm. It comes with a variety of themes (available in package form via x11-themes/slim-themes) which are very nice.

Behold my Evangelion based theme, Nerv! Sexify your slim today!

Nerv Theme

To install and use the theme download and untar. You should have the directory nerv/ with three files. Move this directory into the themes directory (generally /usr/share/slim/themes). Now edit your /etc/slim.conf file and edit the following line:

current_theme nerv

Done!

nerv theme screen

Want to combine two avi files using mencoder? Well below is how its done. The mencoder binary comes with mplayer 1rc.x. When using the fork, mplayer2, you no longer get this tool which is a bit irritating. I will follow up when I get mplayer2 to provide this functionality. It is worth noting that mplayer2 has more functionality and fixes than the somewhat forgotten mplayer1. The only reason I have installed the older version on my machine is for mencoder.

mencoder -oac copy -ovc copy part1.avi part2.avi part3.avi -o combined.avi

oac copy – means to encode with the following audio codec. Since we are using copy as a parameter it just uses the same codec as the source files we are duplicating.

ovc copy – means to encode with the following videocodec. Since we are using copy as a parameter it just uses the same codec as the source files we are duplicating.

The files are parameters and the -o switch means the output filename follows in this case “combined.avi”

Ok so this is something I keep having to re-setup every time I do something to my laptop that requires wiping the disk beforehand. So instead of figuring this out every time why not document it here and also share some information with whoever might also want to do the same?

Since I run Gentoo I’ll be using portage to emerge the necessary packages but this guide will work for any distro, so you’ll just have to use your own package manager (whatever that might be).

Requirements

Kernel

Your kernel must be able to support wireless extensions.

CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y

Another thing you will need is support for the various cryptographic routines used in wireless ciphers (and any other cipher that you might want to support as well).

Make sure AES, SHA, and whatever else you want are supported by your kernel. I prefer to build these in but you can modularize them as long as you make sure that these get loaded automatically or when you need them.

Packages

emerge -v net-dns/dnsmasq net-misc/dhcp net-wireless/hostapd

Once these packages are emerged you’ll need to configure at least dhcp and hostapd config files. These are located at:

/etc/dhcp/dhcpd.conf and /etc/hostapd/hostapd.conf respectively.

Sample dhcpd.conf:

default-lease-time 600;
max-lease-time 7200;
option routers 192.168.50.1;
option domain-name-servers 192.168.50.1, 192.168.50.1;

subnet 192.168.50.0 netmask 255.255.255.0 {
pool {
max-lease-time 600;
range 192.168.50.10 192.168.50.50;
option routers 192.168.50.1;
option domain-name-servers 192.168.50.1, 192.168.50.1;
allow unknown-clients;
}
}

This sets up the default gateway and primary and secondary DNS servers to 192.168.50.1 and gives a dhcpd server IP range from 192.168.50.10 to 192.168.50.50.

 

Sample hostapd.conf

interface=wlan0

driver=nl80211

ssid=yourssid

hw_mode=g

channel=1

wpa=1

wpa_passphrase=supersecretpassword

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP
rsn_pairwise=CCMP

Creates a wireless accesspoint using the now standard nl80211 drivers with an SSID of yourssid in wireless mode 80211G with channel set to auto. Note that for ME when I set a channel of anything besides 1 I got cryptic errors that were so useless that the author of hostapd should probably be questioned for being a sadist. I seriously had so many problems with creating this config due to shitty error messages I had to document this so I wouldn’t have to do that again. Another fun note is that when testing my config I used a wpa password of “test” which when trying to run caused the same useless error message. As it turns out the reason it failed was due to the wpa password being too short. It never tells you this of course unless you build this package with the debug flag on. Anyway at this point you should have a working wireless access point.

Enable dnsmasq and dhcpd services as well as hostapd. You will also have to enable iptables to forward packets to and from your interfaces if you are sharing wireless from a wired connection. Below is my iptables script:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

echo Done…

WPA for all!

 

 

tuxonice-sources 2.6.38-r2
hibernate-scripts 2.0
tuxonice_userui 1.0

One of the interesting configs needed for toi when using an initramfs, which we will due to crypto, is that you must enable
CONFIG_TOI_IGNORE_LATE_INITCALL=y

Otherwise when linux boots up it will attempt to resume before the initramfs. Obviously this is undesirable as since we are encrypting our filesystems it won’t find the resume file. This config basically tells it not to attempt it just yet. However, after initramfs is done TOI will not resume. It actually expects you to manually call the tuxonice /sys interface telling it exactly when its ok to resume. For our purposes we want to make this call in our initramfs after the user has successfully decrypted the filesystem.

What we use for encrypting our partition

dm-crypt – backend for our crypted filesystem
cryptsetup – frontend for performing initial formatting, opening and closing of encrypted filesystems.
lvm – the reason for using this in addition to our encrypted filesystem is to allow the swap partition to also be encrypted.
Essentially we are using one encrypted partition which LVM will recognize, once decrypted, as 2 logical partitions. In our case
swap and root. Using LVM you can have as many partitions as you’d like and they would all benefit from being encrypted as they are
physically one partition.

Make sure that your kernel has either built in support or modules for dm-crypt. If the latter is used make sure initramfs will load
modules you require. Personally for the Crypto APIs I build that all into the kernel for simplicity.

The initial setup of your Gentoo system is the same as the gentoo-handbook guide until the part where you are creating the filesystem partitions. Here we will deviate. Create two partitions. One for /boot and the other which will be our encrypted container partition.
For our example these partitions will be /dev/sda1 and /dev/sda2.

modprobe modules dm-crypt, aes, and sha256. At this point we can encrypt the /dev/sda2 partition.

cryptsetup luksFormat /dev/sda2
— here you can setup your password.

Now to open(decrypt) the partition just created.

cryptsetup luksOpen /dev/sda2 root — root in this case is the name of our luks device. just make sure this is consistant.

LVM – here we will create the logical drives from our now accessible partition.

pvcreate /dev/mapper/root
vgcreate vg /dev/mapper/root

Now create the logical drives as you see fit. Here we will create two logical drives (partitions). One for root and one for swap.

lvcreate -L 40G -n root vg  — here vg is the volumegroup we created before and -L specifies the size of the partition. This is /
lvcreate -L 1G -n swap vg   — and this one is for swap.

Now we continue setting up our drives as normal according to the gentoo-handbook installation guide.

mke2fs -j -L root /dev/vg/root  — just note the device path is now a bit different due to LVM. They behave as any block device tho.
mkswap -L swap /dev/vg/swap

After this part you continue the Gentoo installation as per the usual http://www.gentoo.org/doc/en/handbook/.

The next thing to note is that to properly boot up you will need an initramfs with cryptsetup and tools built statically and available on the initramfs itself. Also for tux on ice you will need to copy the tuxoniceui_text and or tuxoniceui_fbsplash as well. The details of configuring the initial ram fs will be detailed in Part 2 along with tux on ice configuration setup.

 

Part 2 – Creating the initramfs (Coming Soon)

So I’ve finally decided to stop attempting to write my own blog software from scratch (I know I know) and just use an open source one like everyone else. I hope you people are happy now that the commies have won. Conforming to “standards” n’ all. Well don’t let it get to your heads because everything on this site will be 100% ME with 0% added fat.

 

That being said I plan to add some useful information to these archives in the hopes that not only will it help me stay more organized than I have been, but that it will also help out others in some form or fashion. So keep checking back as there is more to come!