Thursday, October 27, 2011

Distributed Systems

Looking into Distributed systems for this blog actually led me to the discovery of something else as well. I was unaware that Google had complete tutorials on computer science related areas as well as environments to experiment with via code.google.com. I learned this because I found a whole section on Distributed systems with tutorials from Google, from various universities, and tools to aid in your learning. Looking into Google's tutorial, their definition of a distributed system is accomplished by defining many other things, they call this a cascading definition. "
What is a distributed system? It's one of those things that's hard to define without first defining many other things. Here is a "cascading" definition of a distributed system:

A program
is the code you write.
A process
is what you get when you run it.
A message
is used to communicate between processes.
A packet
is a fragment of a message that might travel on a wire.
A protocol
is a formal description of message formats and the rules that two processes must follow in order to exchange those messages.
A network
is the infrastructure that links computers, workstations, terminals, servers, etc. It consists of routers which are connected by communication links.
A component
can be a process or any piece of hardware required to run a process, support communications between processes, store data, etc.
A distributed system
is an application that executes a collection of protocols to coordinate the actions of multiple processes on a network, such that all components cooperate together to perform a single or small set of related tasks."
 
Basically as I understand everything, a distributed system is like taking a server, with all of its services and components, and spreading it out over many systems that interact with each other. This makes it very powerful but difficult to implement because so many things must communicate to each other. The biggest concern in distributed systems are software errors.  Software failures are a significant issue in distributed systems. Even with rigorous testing, software bugs account for a substantial fraction of unplanned downtime (estimated at 25-35%)Any way, this site is really cool and there is so much information that I will definitely be giving it another look. 
http://code.google.com/edu/parallel/

Thursday, October 6, 2011

Domain Exploitation

Twenty - six hundred (usually used with numerals instead of written out) is a magazine that I enjoy reading to find out what the latest security holes are from those who find them. In an interesting article from one of my older issues I came across an article detailing how to turn a 'local machine' administrator into a 'domain' administrator.

I am not going to post the code that was detailed in the article but it is a fairly straightforward  procedure that I will vaguely describe (in case this has not been patched). Using a batch file with the basically four lines of code and placing it in the all users startup folder will allow it be run by any user logging onto that computer, most importantly a current domain administrator.

If you don't want to rely on that you can create another batch file that will propagate over the entire domain. Kinda spooky but good to keep an eye on.

Dunn, D. (2010, Autumn 00). How to turn local admin into domain admin. 2600: The Hacker Quarterly, 27(3), 68.