2020年9月22日星期二

The Reasons Why

This post is as at least partly for my own benefit, as a reminder of where I was when the time comes for me to get back to the 54's. Hopefully, the thoughts behind the rules may be of interest to some and, of course, there are pictures of toy soldiers!     

Turn 3: Red began with 4 companies of infantry (=2 scenario units) randomly arriving in the best spot. They have just followed up with a gun and a troop of cavalry arriving on the main road. Blue has the initial 2 companies now backed by a field gun with 2 companies of Zouaves just arriving. 

I want a Toy Soldier-ish wargame, not an accurate historical recreation of real battles, but I want them to invoke the feel of small historical actions from the 1870's and 80's  such as Ridgeway during the Fenian Raids or Laing's Nek in the First Boer War not bigger affairs like Tel El Kebir or the battles for the Shipka Pass.  

I also want to use a small table but have at least a little room and some reason to manoeuvre. This means that each unit needs to be small as well as the armies being small and ranges need to be curtailed. My first adult battles with 54's were played  with a set of Colonial Rules written for OS25mm figures but the figures didn't take up much more room (25mm washers vs pennies) and my table was 6'x10' so there was plenty of room for 8 man companies grouped into 3 company battalions, themselves grouped into brigades for the bigger games. However, I have come to like games played with 4 man companies on a smaller table so there are no regrets and an appreciation of the ease of set up, solo play and take down with my current set up.

Turn 6: Both armies are all on board.
There are still a few issues that I am struggling with because what feels like a good "game" mechanism, often appears to be "wrong" from a historical perspective. There are always such conflicts when designing a simple, fun game and it comes down to which compromises give the best over all feel (for me, since I'm not going to be selling the rules). 

The two main issues are Command Control and how to show the effects of combat. 

Whenever I find myself getting bogged down in C&C issues again, I remind myself of Lawford & Young's comments on the subject, reread the old Kriegspiel rules designed to train officers but where they were free to make their own bad decisions, or just read some memoirs. Most wargamers can quote an example of a subordinate not carrying out an order according to the defeated general who is explaining why he lost but few reflect that these known failures are each balanced by thousands of orders which were carried out, or at least attempted.  Then I remind myself to go with Lawford & Young and let player's make their own mistakes rather then hiding behind a die roll. (Mind you I keep some uncertainty by rolling dice for distance as I did back in my MacDuff days in the 90's.)

Later: The battlelines trade fire.

Casualties are a harder thing. Charles Grant was right here, its much easier to show a trickle of casualties on large units. Given that the historical actions that have inspired me for this game had very low numbers of killed and wounded (ie 5% or less in some cases), I have had to forgo removing every hit. Having multi-figure bases at least helps reduce the urge to tip the little guys over. 

Then the bayonet sweeps the field!
(Rolling up 2 guns was probably better than 2 cavalry for Blue but more infantry might have helped!)

I do need to reflect the tendency of units to be pinned by heavy fire as well as a tendency to become brittle and to suddenly break when something changes, like being charged or surprised, having friends run or being ordered to retreat. 

The jury is still out on this topic but at the moment units may fire OR move so the player needs to forgo a chance to shoot if he wants to get close.  They may neither advance nor shoot once  when they have taken their maximum hits and may run if they lose a charge combat, but they might succeed in rallying once they are in a  safe spot. Just removing them and having them automatically rally on the shelf overnight would be easier though, and maybe more toy soldierish.


2020年9月21日星期一

CX2691, Joust!

Hello there, thanks for waiting for this episode that features Joust by Atari! It's one of my favorite arcade games and is done pretty well on the 2600 (spoilers), probably because it was in the capable hands of GCC. Next up is Star Wars The Arcade game by Parker Brothers, which has an extremely interesting provenance. If you'd like to contribute to that episode, please send your feedback to 2600gamebygame@gmail.com by end of day October 20th, and I'll put it in the show. Thanks so much for listening!

My Extra Life donation page, thank you!
List of Radio Shack in store catalog games for sale by Kevin Gatland
Joust on KLOV
Kevin Osborn's Bald Wisdom blog
Michael Feinstein's Fein Line blog
Patricia Goodson at Atari Women site
Joust on Random Terrain
Joust on Atari Protos
Joust prototype photos on Atari Compendium
Joust prototype recreated by Thomas Jentzsch on Atari Age
Source code used for Joust prototype reconstruction (Wayback Machine)

2020年9月12日星期六

Hiring: Tools Programmer




Title: Tools programmer
Focus: Engine
Type: Full-time, permanent
Last day to apply: 30th of October 2018


Tired of the constraints of Unity, Unreal and other big engines? Want to be in control and get down into the nitty gritty of engine coding? Come join us at Frictional Games, one of the few companies that still makes their own tech, and get all up in our HPL engine!

We are now expanding our tech team and looking for a tools programmer who will help make the HPL engine better, prettier, and more intuitive. Your work on the engine will be crucial to the rest of the team, but it will also be seen by our modding community.

The position is full-time and permanent. Ideally we would help you relocate to Malmö, Sweden to be close to our core team, but this is not a necessity.


What will you work on?

As a tools programmer, you will be working together with a small tech team that is mainly responsible for our HPL engine, but also tech support for the games.

Here are some of the things you will find yourself working on:
  • Creating and maintaining the level editor for our proprietary engine
  • Making intuitive user interfaces
  • Creating small specialised tools
  • Working with low-level systems such as IO, AI, rendering, sound, and physics
  • Working with Xbox and PlayStation versions, as well as possible future platforms
  • Internal support for a team of developers
  • Post-launch support.
We also encourage working outside of your area of expertise, and always learning new things. The more areas of development you are willing and able take part in, the better!

If you want to know more about Frictional work practices, you can check out the introduction posts of Peter and Luis, who will be your closest teammates.


What are we looking for?

You have to be a EU/EEA resident to apply.

The person we're looking for is creative, driven and self-sufficient.

Here are some essential skills we require:
  • Well-versed in C++, C#, Java, or similar
  • Knowledge in AngelScript, Python, Lua, or similar
  • You have created an engine or tools for development for at least one game
  • Strong low-level programming skills
  • Familiar with linear algebra
  • Knowledge in working with Widgets / Custom GUI
  • Fluency in English
  • Skills in team communication and support
  • A Windows PC that runs recent games (such as SOMA) that you can use for work (unless you live in Malmö and will work from the office)
  • A fast and stable internet connection.

These will be considered a plus:
  • Experience in engine development
  • Skills in 3D modelling or texture applications
  • Knowledge in UX design
  • Lover for tech and messing with the low level parts of the engine
  • Excitement for creating fast pipelines and making it easy to create awesome art
  • You live in Sweden.

What do we offer?

We are a small team, which means you will be able to work on a wide variety of things and contribute to our future games in a meaningful way.

We also believe a healthy balance between work and life reflects positively on your work. We offer a variety of perks for our full-time employees, especially who live in or relocate to Sweden. We also don't encourage crunch.

Here's what we offer:
  • Flexible working hours
  • Opportunities to influence your workflow
  • Variety in your work tasks, and ability to influence your workload
  • Participation in our internal game Show & Tell sessions, so you'll have input into all aspects of the game
  • Social security and holidays that are up to the Swedish standards
  • An inclusive and respectful work environment
  • An office in central Malmö you can use as much as you please
  • Fun workmates, game and movie nights, and other outings!

How to apply?

Did the position pique your interest? Are you the person we're looking for? Then we would love you hear from you!

We will be looking at applications until 30th of October 2018.

Please send us your:
  • Cover letter (why you should work with us, what do you bring to the table)
  • CV
  • Portfolio (or links to your works)
Send your application to apply@frictionalgames.com!



Privacy Policy

By sending us your application, you give us permission to store your personal information and attachments.

We store all applications in a secure system. The applications are stored for two years, after which they are deleted. If you want your your information removed earlier, please contact us through our Contact form. Read more in our Privacy Policy.

Beat The Price Increase

The new pricing structure takes effect on February 15th. We are offering up to a 30% discount our current off MSRP until that date.
Most items will see a 5% to 8% increase and a few specific items will be higher.
If you have an item or two that has been on your bucket list, this might be a good time to blow the dust off the list.

 (from prior post)
We started down the road to manufacturing plastic kits in 2012, a lot has happened since then. I have seen shipping prices nearly double, WGF has ceased to be our distributor and we have taken over that aspect of operations. We now purchase our kits from WGF China directly.
We recently place two restock orders to bring our stock levels back on par, the shipping costs have been an eye opener. In many cases shipping from China to the US was more than the actual cost to manufacture a kit. Some kits needed to be brought in line with their cost of production. This price increase was as minimal as we could make it most items will see an increase of 5% to 8% with some more drastic adjustments to kits that were selling into distribution at a lower than delivered cost to us.
To maintain the health of DreamForge-Games it has become clear that we will need to implement a price increase, effective February 15th2016
 
 Mark Mondragon
DreamForge-Games

2020年9月4日星期五

Now Hiring: Community Manager And Event Coordinator


We are now looking for a "Community Manager and Event Coordinator" for our company. This will be a very broad role and we are looking for someone who is very driven and creative. The tasks will range from the simple, such as:
  • Managing our social media accounts and platform-specific communication channels (such as Steam communities and PS4 Game hub).
  • Answering various emails.
  • Coordinating and booking special internal and external events.
It will also include much more complex tasks such as:
  • Planning and coordinating PR for a new game release.
  • Making plans for improving our social media and implementing these.
  • Overseeing a revamp of all our webpages (company and game-specific).
  • Becoming the company's catalyst for generating interesting posts and events on all of our public channels.

The basic requirements are as follows:
  • It's crucial that you are a person who is highly able to work on your own initiative. No one will be laying out an exact schedule of things that you must do - you will need to drive your own workload. You will also need to be a creative member of the team, bringing a lot of your own ideas and suggestions to the table and then going on to implement them when possible.
  • You must live in Sweden or be prepared to move here. Note that any employment starts with a six month trial period, and there is no need to move until that is over.
  • You must have excellent writing skills in English.
  • You need good knowledge of how social media, such as Twitter and Facebook, works.
  • You should have a burning interest in video games and an understanding of the market.
It's worth noting that we do not require any special education or experience. While these are of course good to have, what really matters is that you fit the requirements above.


In order to apply, start by doing the following assignments:
  1. Imagine that SOMA is about to be released. Write a short (at most 150 words) and playful cover letter that will be sent out with all of the review copies of the game.
  2. We really need to become much more frequent in our social media usage and communicate what we do as a company and what we are like as individuals. In 200 words or less, explain how you would try to go about increasing the number of interesting posts on our social media channels.
  3. An angry user has written an email complaining that our games have all become worse since Penumbra, as they no longer have proper puzzles and gameplay. Write a response.
  4. Being proactive and self-starting is crucial for this position. Therefore, write your own question similar to the ones above and answer it.
Compile these into a PDF that has a pleasing layout and send it, along with your CV, to apply@frictionalgames.com.

Privacy Policy
By sending us your application, you give us permission to store your personal information and attachments.

We store all applications in a secure system. The applications are stored for two years, after which they are deleted. If you want your your information removed earlier, please contact us through our Contact form. Read more in our Privacy Policy.

2020年8月31日星期一

CEH: Gathering Network And Host Information, Types Of Scan


In Hacking the main focus is over gathering the information about victim or victim's machine. Which will help to find out which type of exploit will works according to the given circumstances. Gathering the network and host information means to find out by which network, the which victim's machine is connected and communicating over the network. Moreover, scanning is also performed for gathering information about open and closed ports. After that they'll able to find the vulnerabilities in the target system and try to get access to the system.

Types Of Scan

As a CEH you should know the scan types and uses:

SYN

SYN scan doesn't complete the TCP three way handshake that is why it is known as a half-open scan. An attacker send a SYN packet to the victim machine if SYN/ACK packet is received back to attacker, then it clarify that the port is listening due to the acknowledgment by the victim that it has completed the connection. While if the attacker is received the RST/ACK packet then it assumed that the port is closed or open.


XMAS

XMAS scan works only on target system that has the RFC 793 development of TCP/IP and it doesn't works against any version of windows.
XMAS scan send a packet with by setting up the FIN, URG and PSH flags of the TCP header. The function of this scan is if the port is active there will be no response but if the port is closed the target responds with a RST/ACK packet.


FIN

A FIN scan send a packet by setting up only the FIN flag of the TCP. This scan is similar to XMAS scan. FIN scan receives no response if the port is active while if the port is closed it receives the RST/ACK packet.


NULL 

NULL scan is also similar to the XMAS scan. But the only difference is that it sends a packet without setting up the any flag of TCP header. NULL scan receives no response if the port is open but if the port is closed it receives the RST/ACK packet.


IDLE

It is just like spoofing an IP address by sending a SYN packet to the victim's machine to find out which services are available over the system. This scan is completed with the help of another system called as "Zombie" (that is not receiving or transmitting any information).


More articles

2020年8月30日星期日

How To Control Android Phone From Another Phone Remotely

How to control Android phone From another phone Remotely

If you wish to remotely control Android phone from another phone, then you have come to the right place. It might sound surprising, but now you can easily control Android from Android by using the right kinds of applications. This can let you keep a strict eye on your kids, spouse, or anyone else remotely. In this informative post, we will make you familiar with different Android to Android remote control apps. Also, we will provide a stepwise solution to use an Android tracking app as well. Let's uncover them by taking one step at a time.

Control Android Phone from Another Phone Remotely

There could be numerous reasons to control Android from Android remotely. In most of the cases, it is used by professionals to access a device over the air. Also, parents like to use an Android to Android remote control at times to get a complete access to their kid's smartphones. Sometimes, it can help us transfer files from one device to another. You can also use it to access your partner's or employee's phone at the time of needs too. In the next section, we will let you know how to remotely control Android phone from another phone.

Control android from another android

How to remotely control Android phone from another phone?

There are different readily available applications that can be used to remotely control Android phone from another phone. We have picked the 3 best tools here.

1. TeamViewer for Remote Control

TeamViewer is one of the most widely known solutions that can provide a remote access to computer and smartphone remotely. It has a dedicated solution for Android as well that can perform the same function without any trouble. You can try its free version and later buy the premium subscription if you wish to.

  • Smart screen sharing with a complete control of the device
  • Control Android from Android by bypassing a security access (a one-time code should be matched).
  • 256 Bit AES session encoding and 2048 Bit RSA key exchange supported for advanced security
  • File transfer is also supported

Compatibility; Android 4.0 and later versions

Get it here >>

Control android from android - TeamViewer for Remote Control

2. RemoDroid

RemoDroid is another smart and lightweight Android to Android remote control that you can use. Besides controlling an Android phone, you can also use this tool to control a TV and other smart devices from your Android device as well.

  • Easy screen sharing provision
  • You can remotely control Android phone from another phone and other smart devices (like a TV)
  • It supports screen sharing between multiple users
  • Password protected and supports one-time authentication
  • Advanced features require root access

Compatibility: Android 4.0 and up

Get it here >>

Control android from android - RemoDroid

3. Inkwire Screen Share and Assist

Inkwire is a highly useful app that every Android user should have installed on their device. This freely available tool can let you share your screen with another user. After sharing the screen, you can provide assistance by marking the screen as well. It is particularly used by users to guide other how to use a certain feature on the device.

  • Once connected, you can easily draw on the screen and guide the other user on a real-time basis.
  • It is extensively used to provide customer support for Android apps.
  • Voice chat option is also included

Compatibility: Android 5.0 and later versions

Get it here >>

Control android from android - Inkwire Screen Share and Assist


@£√£RYTHING NT

Related news

Playing With TLS-Attacker

In the last two years, we changed the TLS-Attacker Project quite a lot but kept silent about most changes we implemented. Since we do not have so much time to keep up with the documentation (we are researchers and not developers in the end), we thought about creating a small series on some of our recent changes to the project on this blog.


We hope this gives you an idea on how to use the most recent version (TLS-Attacker 2.8). If you feel like you found a bug, don't hesitate to contact me via GitHub/Mail/Twitter. This post assumes that you have some idea what this is all about. If you have no idea, checkout the original paper from Juraj or our project on GitHub.

TLDR: TLS-Attacker is a framework which allows you to send arbitrary protocol flows.


Quickstart:
# Install & Use Java JDK 8
$ sudo apt-get install maven
$ git clone https://github.com/RUB-NDS/TLS-Attacker
$ cd TLS-Attacker
$ mvn clean package

So, what changed since the release of the original paper in 2016? Quite a lot! We discovered that we could make the framework much more powerful by adding some new concepts to the code which I want to show you now.

Action System

In the first Version of TLS-Attacker (1.x), WorkflowTraces looked like this:
Although this design looks straight forward, it lacks flexibility. In this design, a WorkflowTrace is basically a list of messages. Each message is annotated with a <messageIssuer>, to tell TLS-Attacker that it should either try to receive this message or send it itself. If you now want to support more advanced workflows, for example for renegotiation or session resumption, TLS-Attacker will soon reach its limits. There is also a missing angle for fuzzing purposes. TLS-Attacker will by default try to use the correct parameters for the message creation, and then apply the modifications afterward. But what if we want to manipulate parameters of the connection which influence the creation of messages? This was not possible in the old version, therefore, we created our action system. With this action system, a WorkflowTrace does not only consist of a list of messages but a list of actions. The most basic actions are the Send- and ReceiveAction. These actions allow you to basically recreate the previous behavior of TLS-Attacker 1.x . Here is an example to show how the same workflow would look like in the newest TLS-Attacker version:


As you can see, the <messageIssuer> tags are gone. Instead, you now indicate with the type of action how you want to deal with the message. Another important thing: TLS-Attacker uses WorkflowTraces as an input as well as an output format. In the old version, once a WorkflowTrace was executed it was hard to see what actually happened. Especially, if you specify what messages you expect to receive. In the old version, your WorkflowTrace could change during execution. This was very confusing and we, therefore, changed the way the receiving of messages works. The ReceiveAction has a list of <expectedMessages>. You can specify what you expect the other party to do. This is mostly interesting for performance tricks (more on that in another post), but can also be used to validate that your workflow executedAsPlanned. Once you execute your ReceiveAction an additional <messages> tag will pop up in the ReceiveAction to show you what has actually been observed. Your original WorkflowTrace stays intact.


During the execution, TLS-Attacker will execute the actions one after the other. There are specific configuration options with which you can control what TLS-Attacker should do in the case of an error. By default, TLS-Attacker will never stop, and just execute whatever is next.

Configs

As you might have seen the <messageIssuer> tags are not the only thing which is missing. Additionally, the cipher suites, compression algorithms, point formats, and supported curves are missing. This is no coincidence. A big change in TLS-Attacker 2.x is the separation of the WorkflowTrace from the parameter configuration and the context. To explain how this works I have to talk about how the new TLS-Attacker version creates messages. Per default, the WorkflowTrace does not contain the actual contents of the messages. But let us step into TLS-Attackers point of view. For example, what should TLS-Attacker do with the following WorkflowTrace:

Usually, the RSAClientKeyExchange message is constructed with the public key from the received certificate message. But in this WorkflowTrace, we did not receive a certificate message yet. So what public key are we supposed to use? The previous version had "some" key hardcoded. The new version does not have these default values hardcoded but allows you as the user to define the default values for missing values, or how our own messages should be created. For this purpose, we introduced the new concept of Configs. A Config is a file/class which you can provide to TLS-Attacker in addition to a WorkflowTrace, to define how TLS-Attacker should behave, and how TLS-Attacker should create its messages (even in the absence of needed parameters). For this purpose, TLS-Attacker has a default Config, with all the known hardcoded values. It is basically a long list of possible parameters and configuration options. We chose sane values for most things, but you might have other ideas on how to do things. You can execute a WorkflowTrace with a specific config. The provided Config will then overwrite all existing default values with your specified values. If you do not specify a certain value, the default value will be used. I will get back to how Configs work, once we played a little bit with TLS-Attacker.

TLS-Attacker ships with a few example applications (found in the "apps/" folder after you built the project). While TLS-Attacker 1.x was mostly a standalone tool, we currently see TLS-Attacker more as a library which we can use by our more sophisticated projects. The current example applications are:
  • TLS-Client (A TLS-Client to execute WorkflowTraces with)
  • TLS-Server (A TLS-Server to execute WorkflowTraces with)
  • Attacks (We'll talk about this in another blog post)
  • TLS-Forensics (We'll talk about this in another blog post)
  • TLS-Mitm (We'll talk about this in another blog post)
  • TraceTool (We'll talk about this in another blog post) 

TLS-Client

The TLS-Client is a simple TLS-Client. Per default, it executes a handshake for the default selected cipher suite (RSA). The only mandatory parameter is the server you want to connect to (-connect).

The most trivial command you can start it with is:

Note: The example tool does not like "https://" or other protocol information. Just provide a hostname and port

Depending on the host you chose your output might look like this:

or like this:

So what is going on here? Let's start with the first execution. As I already mentioned. TLS-Attacker constructs the default WorkflowTrace based on the default selected cipher suite. When you run the client, the WorkflowExecutor (part of TLS-Attacker which is responsible for the execution of a WorkflowTrace) will try to execute the handshake. For this purpose, it will first start the TCP connection.
This is what you see here:

After that, it will execute the actions specified in the default WorkflowTrace. The default WorkflowTrace looks something like this:
This is basically what you see in the console output. The first action which gets executed is the SendAction with the ClientHello.

Then, we expect to receive messages. Since we want to be an RSA handshake, we do not expect a ServerKeyExchange message, but only want a ServerHello, Certificate and a ServerHelloDone message.

We then execute the second SendAction:

and finally, we want to receive a ChangeCipherSpec and Finished Message:

In the first execution, these steps all seem to have worked. But why did they fail in the second execution? The reason is that our default Config does not only allow specify RSA cipher suites but creates ClientHello messages which also contain elliptic curve cipher suites. Depending on the server you are testing with, the server will either select and RSA cipher suite, or an elliptic curve one. This means, that the WorkflowTrace will not executeAsPlanned. The server will send an additional ECDHEServerKeyExchange. If we would look at the details of the ServerHello message we would also see that an (ephemeral) elliptic curve cipher suite is selected:

Since our WorkflowTrace is configured to send an RSAClientKeyExchange message next, it will just do that:

Note: ClientKeyExchangeMessage all have the same type field, but are implemented inside of TLS-Attacker as different messages

Since this RSAClientKeyExchange does not make a lot of sense for the server, it rejects this message with a DECODE_ERROR alert:

If we would change the Config of TLS-Attacker, we could change the way our ClientHello is constructed. If we specify only RSA cipher suites, the server has no choice but to select an RSA one (or immediately terminate the connection). We added command line flags for the most common Config changes. Let's try to change the default cipher suite to TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:

As you can see, we now executed a complete ephemeral elliptic curve handshake. This is, because the -cipher flag changed the <defaultSelectedCiphersuite> parameter (among others) in the Config. Based on this parameter the default WorkflowTrace is constructed. If you want, you can specify multiple cipher suites at once, by seperating them with a comma.

We can do the same change by supplying TLS-Attacker with a custom Config via XML. To this we need to create a new file (I will name it config.xml) like this:

You can then load the Config with the -config flag:

For a complete reference of the supported Config options, you can check out the default_config.xml. Most Config options should be self-explanatory, for others, you might want to check where and how they are used in the code (sorry).

Now let's try to execute an arbitrary WorkflowTrace. To do this, we need to store our WorkflowTrace in a file and load it with the -workflow_input parameter. I just created the following WorkflowTrace:


As you can see I just send a ServerHello message instead of a ClientHello message at the beginning of the handshake. This should obviously never happen but let's see how the tested server reacts to this.
We can execute the workflow with the following command:

The server (correctly) responded with an UNEXPECTED_MESSAGE alert. Great!

Output parameters & Modifications

You are now familiar with the most basic concepts of TLS-Attacker, so let's dive into other things TLS-Attacker can do for you. As a TLS-Attacker user, you are sometimes interested in the actual values which are used during a WorkflowTrace execution. For this purpose, we introduced the -workflow_output flag. With this parameter, you can ask TLS-Attacker to store the executed WorkflowTrace with all its values in a file.
Let's try to execute our last created WorkflowTrace, and store the output WorkflowTrace in the file out.xml:


The resulting WorkflowTrace looks like this:

As you can see, although the input WorkflowTrace was very short, the output trace is quite noisy. TLS-Attacker will display all its intermediate values and modification points (this is where the modifiable variable concept becomes interesting). You can also execute the output workflow again.


Note that at this point there is a common misunderstanding: TLS-Attacker will reset the WorkflowTrace before it executes it again. This means, it will delete all intermediate values you see in the WorkflowTrace and recompute them dynamically. This means that if you change a value within <originalValue> tags, your changes will just be ignored. If you want to influence the values TLS-Attacker uses, you either have to manipulate the Config (as already shown) or apply modifications to TLS-Attackers ModifiableVariables. The concept of ModifiableVariables is mostly unchanged to the previous version, but we will show you how to do this real quick anyway.

So let us imagine we want to manipulate a value in the WorkflowTrace using a ModifiableVariable via XML. First, we have to select a field which we want to manipulate. I will choose the protocol version field in the ServerHello message we sent. In the WorkflowTrace this looked like this:

For historical reasons, 0x0303 means TLS 1.2. 0x0300 was SSL 3. When they introduced TLS 1.0 they chose 0x0301 and since then they just upgraded the minor version.

In order to manipulate this ModifiableVariable, we first need to know its type. In some cases it is currently non-trivial to determine the exact type, this is mostly undocumented (sorry). If you don't know the exact type of a field you currently have to look at the code. The following types and modifications are defined:
  • ModifiableBigInteger: add, explicitValue, shiftLeft, shiftRight, subtract, xor
  • ModifiableBoolean: explicitValue, toggle
  • ModifiableByteArray: delete, duplicate, explicitValue, insert, shuffle, xor
  • ModifiableInteger: add, explicitValue, shiftLeft, shiftRight, subtract, xor
  • ModifiableLong: add, explicitValue, subtract, xor
  • ModifiableByte: add, explicitValue, subtract, xor
  • ModifiableString: explicitValue
As a rule of thumb: If the value is only up to 1 byte of length we use a ModifiableByte. If the value is up to 4 bytes of length, but the values are used as a normal number (for example in length fields) it is a ModifiableInteger. Fields which are used as a number which are bigger than 4 bytes (for example a modulus) is usually a ModifiableBigInteger. Most other types are encoded as ModifiableByteArrays. The other types are very rare (we are currently working on making this whole process more transparent).
Once you have found your type you have to select a modification to apply to it. For manual analysis, the most common modifications are the XOR modification and the explicit value modification. However, during fuzzing other modifications might be useful as well. Often times you just want to flip a bit and see how the server responds, or you want to directly overwrite a value. In this example, we want to overwrite a value.
Let us force TLS-Attacker to send the version 0x3A3A. To do this I consult the ModifiableVariable README.md for the exact syntax. Since <protocolVersion> is a ModifiableByteArray I search in the ByteArray section.

I find the following snippet:

If I now want to change the value to 0x3A3A I modify my WorkflowTrace like this:

You can then execute the WorkflowTrace with:

With Wireshark you can now observe  that the protocol version got actually changed. You would also see the change if you would specify a -workflow_output or if you start the TLS-Client with the -debug flag.

More Actions

As I already hinted, TLS-Attacker has more actions to offer than just a basic Send- and ReceiveAction (50+ in total). The most useful, and easiest to understand actions are now introduced:

ActivateEncryptionAction

This action does basically what the CCS message does. It activates the currently "negotiated" parameters. If necessary values are missing in the context of the connection, they are drawn from the Config.


DeactivateEncryptionAction

This action does the opposite. If the encryption was active, we now send unencrypted again.


PrintLastHandledApplicationDataAction

Prints the last application data message either sent or received.


PrintProposedExtensionsAction

Prints the proposed extensions (from the client)


PrintSecretsAction

Prints the secrets (RSA) from the current connection. This includes the nonces, cipher suite, public key, modulus, premaster secret, master secret and verify data.


RenegotiationAction

Resets the message digest. This is usually done if you want to perform a renegotiation.


ResetConnectionAction

Closes and reopens the connection. This can be useful if you want to analyze session resumption or similar things which involve more than one handshake.


SendDynamicClientKeyExchangeAction

Send a ClientKeyExchange message, and always chooses the correct one (depending on the current connection state). This is useful if you just don't care about the actual cipher suite and just want the handshake done.


SendDynamicServerKeyExchangeAction

(Maybe) sends a ServerKeyExchange message. This depends on the currently selected cipher suite. If the cipher suite requires the transmission of a ServerKeyExchange message, then a ServerKeyExchange message will be sent, otherwise, nothing is done. This is useful if you just don't care about the actual cipher suite and just want the handshake done.


WaitAction

This lets TLS-Attacker sleep for a specified amount of time (in ms).





As you might have already seen there is so much more to talk about in TLS-Attacker. But this should give you a rough idea of what is going on.

If you have any research ideas or need support feel free to contact us on Twitter (@ic0nz1, @jurajsomorovsky ) or at https://www.hackmanit.de/.

If TLS-Attacker helps you to find a bug in a TLS implementation, please acknowledge our tool(s). If you want to learn more about TLS, Juraj and I are also giving a Training about TLS at Ruhrsec (27.05.2019).

Related news