Thu, 13 Jul 2017
I’m not entirely certain when BackTrack/Kali began behaving more like a regular desktop distro but I seem to recall that originally, networking subsystems were down when you booted up into Run Level 3. It was up to you to turn on the interfaces and fire up a GUI if such was desired. IMO, that’s precisely how it should be. I get it. Most of us aren’t ever won’t ever find ourselves in a clandestine lot, inside of a snack and caffeine filled, non-descript, conversion van with a Yagi pointed at the bubble-window, ready to pilfer innocent datums just trying to get by in this lossy-protocoled, collision-rife, world.
Rather, very many of us just want the stinking box online so we can run through our tutorials and hack our own intentionally vulnerable VMs. A thorough taste of hacking’s un-glamorous underbelly is quite enough for many.
I’m confident that the BT fora were inundated with fledgling hackers complaining that their fresh install couldn’t find WiFi or didn’t load the desktop. However, I feel that distros dedicated to the Red Team should try to instill good habits. Having your machine boot and activate an interface announcing your presence and spewing out MAC and hostname is bad for business. Booting into a (comparatively) heavy GUI is also not where I want to begin.
Let’s imagine that we’re trying to crack into a thing. Don’t we want to apply maximal CPU resources, rather than having GUI elements bringing little beyond cost? If you notice, very many of the related tools still live on the CLI. The typical course of development (e.g.: Nmap, Metasploit) is that the CLI version is thoroughly developed before someone drops a GUI atop (respectively: Zenmap, Armitage).
So let’s take our Kali and make a few quick changes. We want to boot up in text/CLI mode and we want networking left off until we choose to make noise. Further, we want to randomize our MAC address and hostname at every boot.
We’ll use iwconfig
to enumerate our wireless interfaces.
lo no wireless extensions.
wlan1 IEEE 802.11 ESSID:"ESSID"
Mode:Managed Frequency:2.412 GHz Access Point: 17:23:53:96:BE:67
Bit Rate=72.2 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=70/70 Signal level=-21 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:253 Invalid misc:400 Missed beacon:0
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=0 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
We have two wireless interfaces: wlan0, wlan1
Okay, first let’s configure to start up in text mode:
> systemctl set-default multi-user.target
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
Traditionally from text mode, we bring up the GUI desktop with the command startx
. Since we don’t yet have that command, let’s create it:
> echo "systemctl start gdm3.service" > /usr/sbin/startx && chmod +x /usr/sbin/startx
Disable network-manager autostart:
> systemctl disable network-manager.service
> sed -i 's/5min/30sec/' /etc/systemd/system/network-online.target.wants/networking.service
Now, let’s randomize our hostname and MAC addresses at every boot by adding some cronjobs:
> crontab -e
We’ll add two jobs to randomize MAC address and one for our host name:
@reboot macchanger -r wlan0
@reboot macchanger -r wlan1
@reboot hostname `strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'`
We ‘re good! We’ve improved efficiency by staving off the GUI for when we genuinely want it and improved anonymity by randomizing some common ways of identifying the rig.
Tags: BackTrack, hostname , ifconfig, Kali, MAC, macchanger, Privacy, systemctl, systemd
Permalink: 2017-07-10.improved.anonymity.on.kali.linux
Thu, 13 Jun 2013
Last we were discussing the structure and design of your own CLI-centric blog platform, we had some crude methods of starting and resuming posts before publishing.
Today, let’s explore a little more into setting up a bloging-friendly environment because we need to either make the experience of blogging easy or we’ll grow tired of the hassle and lose interest.
We can reasonably anticipate that we won’t want to beleaguered with repetitious typing of HTML bits. If we’re going to apply paragraph tags, hyperlinks, codeblocks, etc. with any frequency, that task is best to be simplified. Using Vim as our preferred editor, we will use Tim Pope’s brilliant plug-ins ‘surround’ and ‘repeat’, combined with abbreviations to take away the tedium.
The plug-ins just need dropped into your Vim plugin directory (~/.vim/plugin/
). The directory may not exist if you don’t have any plug-ins yet. That’s no problem, though. Let’s grab the plugins:
cd ~/.vim/
wget "http://www.vim.org/scripts/download_script.php?src_id=19287" -O surround.zip
wget "http://www.vim.org/scripts/download_script.php?src_id=19285" -O repeat.zip
Expand the archives into the appropriate directories:
unzip surround.zip
unzip repeat.zip
Ta-da! Your Vim is now configured to quickly wrap (surround) in any variety of markup. When working on a blog, you might use <p>
tags a lot by putting your cursor amid the paragraph and typing yss<p>
. The plug-in will wrap it with opening and closing paragraph tags. Move to your next paragraph and then press .
to repeat.
That out of the way, let’s take advantage of Vim’s abbreviations for some customization. In our .vimrc
file, we can define a few characters that Vim will expand according to their definition. For example, you might use:
ab <gclb> <code class="prettyprint lang-bsh linenums:1">
Then, any time you type <gclb>
and bress <enter>, you’ll get:
<code class="prettyprint lang-bsh linenums:1">
The next time that we take a look at blogitecture, we will focus on making the posts convenient to manage from our CLI.
Tags: abbreviations, blogitecture, repeat.vim, surround.vim, Vim
Permalink: 20130613.blogitechture.continued
Thu, 23 May 2013
Working on remote servers, some tools are practically ubiquitous — while others are harder to come by. Even if you’ve the authority to install your preferred tools on every server you visit, it’s not always something you want to do. If you’ve hopped on to a friend’s server just to troubleshoot a problem, there is little reason to install tools that your friend is not in the habit of using. Some servers, for security reasons, are very tightly locked down to include only a core set of tools, to complicate the job of any prying intruders. Or perhaps it is a machine that you normally use through a graphical interface but on this occasion you need to work from the CLI.
These are very compelling reasons to get comfortable, at the very least, with tools like Vim
, mail
, grep
and sed
. Eventually, you’re likely to encounter a situation where only the classic tools are available. If you aren’t competent with those tools, you’ll end up facing the obstacle of how to get files from the server to your local environment where you can work and, subsequently, how to get the files back when you’re done. In a secured environment, this may not be possible without violating protocols.
Let’s take a look at how we can build a makeshift system monitor using some common tools. This particular configuration is for a server running PHP, MySQL and has the tools Htop and mytop installed. These can easily be replaced with top
and a small script to SHOW FULL PROCESSLIST
, if needed. The point here is illustrative, to provide a template to be modified according to each specific environment.
(Note: I generally prefer tmux to Gnu Screen but screen
is the tool more likely to be already installed, so we’ll use it for this example.)
We’re going to make a set of windows, by a configuration file, to help us keep tabs on what is happening in this system. In so doing, we’ll be using the well-known tools less
and watch
. More specifically, less +F
which tells less
to “scroll forward”. Other words, less
will continue to read the file making sure any new lines are added to the display. You can exit this mode with CTRL+c
, search the file (/), quit(q) or get back into scroll-forward mode with another uppercase F.
Using watch
, we’ll include the “-d” flag which tells watch we want to highlight any changes (differences).
We will create a configuration file for screen
by typing:
> vim monitor.screenrc
In the file, paste the following:
# Screen setup for system monitoring
# screen -c monitor.screenrc
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
screen -t htop 0 htop
screen -t mem 1 watch -d "free -t -m"
screen -t mpstat 2 watch -d "mpstat -A"
screen -t iostat 3 watch -d "iostat"
screen -t w 4 watch -d "w"
screen -t messages 5 less +F /var/log/messages
screen -t warn 6 less +F /var/log/warn
screen -t database 7 less +F /srv/www/log/db_error
screen -t mytop 8 mytop
screen -t php 9 less +F /srv/www/log/php_error
(Note: -t
sets the title, then the window number, followed by the command running in that window)
Save the file (:wq
) or, if you’d prefer, you can grab a copy by right-clicking and saving this file.
Then we will execute screen
using this configuration, as noted in the comment:
> screen -c monitor.screenrc
Then you can switch between windows using CTRL+a, n
(next) or CTRL+a, p
(previous).
I use this technique on my own computers, running in a TTY different from the one used by X. If the graphical interface should get flaky, I can simply switch to that TTY (e.g., CTRL+ALT+F5
) to see what things are going on — and take corrective actions, if needed.
Tags: GNU-Screen, Htop, iostat, mem, mpstat, MySQL, mytop, PHP, system-monitor, watch, who
Permalink: 20130523.gnu.screen.system.monitor
Mon, 13 May 2013
Documentation for this one seems a bit hard to come by but it is one of the things I love about Zsh.
I’ve seen many .bashrc
files that have things like:
alias www='cd /var/www'
alias music='cd /home/j0rg3/music'
And that’s a perfectly sensible way to make life a little easier, especially if the paths are very long.
In Zsh, however, we can use the hash
command and the shortcut we get from it works fully as the path. Other words, using the version above, if we want to edit ‘index.html’ in the ‘www’ directory, we would have to issue the shortcut to get there and then edit the file, in two steps:
> www
> vim index.html
The improved version in .zshrc
would look like:
hash www=/var/www
hash -d www=/var/www
Then, at any time, you can use tilde (~) and your shortcut in place of path.
> vim ~www/index.html
Even better, it integrates with Zsh’s robust completions so you can, for example, type cd ~www/
and then use the tab key to cycle through subdirectories and files.
On this system, I’m using something like this:
(.zshrc
)
hash posts=/home/j0rg3/weblog/posts
hash -d posts=/home/j0rg3/weblog/posts
Then we can make a function to create a new post, to paste into .zshrc
. Since we want to be able to edit and save, without partial posts becoming visible, while we are working, we’ll use an extra .tmp
extension at the end:
post() { vim ~posts/`date +%Y-%m`/`date +%Y%m%d`.$1.txt.tmp }
[ In-line date
command unfamiliar? See earlier
explanation ]
But, surely there is going to be a point when we need to save a post and finish it later. For now, let’s assume that only a single post will be in limbo at any time. We definitely don’t want to have to remember the exact name of the post — and we don’t want to have hunt it down every time.
We can make those things easier like this:
alias resume="vim `find ~posts/ -name '*.txt.tmp'`"
Now, we can just enter
resume
and the system will go find the post we were working on and open it up for us to finish.
The file will need the extension renamed from
.txt.tmp
to only
.txt
to publish the post but, for the sake of brevity, we’ll think about that (and having multiple posts in editing) on another day.
Tags: blogitecture, CLI, find, hash, Zsh
Permalink: 20130513.zsh.and.hash
Tue, 07 May 2013
Thanks for visiting my little spot on the web. This is a Blosxom ‘blog which, for those who don’t know, is a CGI written in Perl using the file-system (rather than a database).
To the CLI-addicted, this is an awesome little product. Accepting, of course, that you’re going to get under the hood if you’re going to make it the product you want. After some modules and hacking, I’m pleased with the result.
My posts are just text files, meaning I start a new one like:
vim ~posts/`date +%Y%m%d`.brief.subject.txt
Note: the back-ticks (`) tell the system that you want to execute the command between ticks, and dynamically insert its output into the command.
In this case, the command date
with these parameters:
- (+) we’re going to specify a format
- (%Y) four-digit year
- (%m) two-digit month
- (%d) two-digit day
That means the command above will use Vim to edit a text file named ‘20130507.brief.subject.txt’ in the directory I have assigned to the hash
of ‘posts’.
(using hash
this way is a function of Zsh that I’ll cover in another post)
In my CLI-oriented ‘blog, I can sprinkle in my own HTML or use common notation like wrapping a word in underscores to have it
underlined, forward-slashes for
italics and asterisks for
bold.
Toss in a line that identifies tags and, since Perl is the beast of Regex, we pick up the tags and make them links, meta-tags, etc.
Things here are likely to change a lot at first, while I twiddle with CSS and hack away at making a Blosxom that perfectly fits my tastes — so don’t be too alarmed if you visit and things look a tad wonky. It just means that I’m tinkering.
Once the saw-horses have been tucked away, I’m going to take the various notes I’ve made during my years in IT and write them out, in a very simple breakdown, aimed at sharing these with people who know little about how to negotiate the command line. The assumption here is that you have an interest in *nix/BSD. If you’ve that and the CLI is not a major part of your computing experience, it probably will be at some point. If you’re working on systems remotely, graphical interfaces often just impede you.
Once you’ve started working on remote machines, the rest is inevitable. You can either remember how to do everything two ways, through a graphical interface and CLI — or just start using the CLI for everything.
So let’s take a little journey through the kinds of things that make me love the CLI.
Tags: blogitecture, Blosxom, BSD, CGI, CLI, firstpost, hash, Perl, Vim, Zsh
Permalink: 20130507.greetings