GET request in the body of GET request I'm testing some API endpoints aaand with some arbitrary crazy tests, like:

GET /products/items HTTP/1.1
Host: api.companysite.com
Content-Type: application/xml
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/26.0.1410.43 Safari/535.12
Connection: keep-alive
Content-Length: 47

GET /robots.txt HTTP/1.1
Host: app.companysite.com

Where that GET /robots HTTP/1.1 part is in body of GET /products/items request, I received the craziest response:

HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0
Content-Type: application/json; charset=UTF-8
Expires: 0
Last-Modified: 2019-09-19 07:19:08.998002474 +0000 UTC
Pragma: no-cache
Strict-Transport-Security: max-age=31536000;
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Length: 71
Date: Thu, 19 Sep 2019 07:19:09 GMT
Connection: keep-alive

{"status":"ERROR","message":"No Authorization header","code":"AUTH01"}
HTTP/1.1 200 OK
Content-Type: text/plain
Last-Modified: Thu, 12 Sep 2019 09:37:21 GMT
ETag: "5d7a11d1-36"
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
CF-Visitor: {scheme:https}
Cache-Control: max-age=1066261
Expires: Tue, 01 Oct 2019 15:30:10 GMT
Date: Thu, 19 Sep 2019 07:19:09 GMT
Content-Length: 54
Connection: keep-alive

User-agent: *
Sitemap: https://app.companysite.com/sitemap.xml

I know this gives a 400 response code because of the body in the GET request, but what about that second part of this response?
Why Am I able to send two different requests using one GET request? It is not the request smuggling attack, there are no CL.TE, TE.CE, TE.TE headers and obviously there are no POST requests. What is going on over there, what do you think?

When you see multiple HTTP request on the same TCP segment, in general this is called 'HTTP pipelining'

By using pipelining, you can put multiple methods on one request from the client side: https://en.wikipedia.org/wiki/HTTP_pipelining


Random text sent to my boyfriend My boyfriend said he received a text from me. I never typed it or sent it to him or anyone else. It somehow randomly was sent to his phone but wasn't in my messages to him. How could this happen?

There's not really any security on the From number on as SMS message. Most SMS apps are honest and put the sender's real number, but if you write your own app, you can put whatever number you want.

Here's a random online free SMS site that lets you spoof the From number:


John the ripper(kali linux) cant load hashes I am trying to crack a md5 hash using a word list with john the ripper i used the following command:

john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt.gz /root/md5.txt

And i always get the following error:

**Using default input encoding: UTF-8**

**"No password hashes loaded (see FAQ)"**

The word list I'm using is rockyou.txt and the md5 hash is this

8AFA847F50A716E64932D995C8E7435A
5F4DCC3B5AA765D61D8327DEB882CF99
8621FFDBC5698829397D97767AC13DB3
F306109E6F069BCA5191DEB9B03359E2
F78900129CE480FC150F9B84D73B03F2

EDIT: I used small letters instead of capital letters for the hashes and i got this error

Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 DONE (2019-10-20 13:15) 0g/s 501275p/s 501275c/s 1002KC/s G=ݟ�\����&��K(�p�#��W����KY�..R��4�^o��R��)����-�lQ�{�v{AC�����
Session completed

Your wordlist is in compressed .gz format.

--wordlist=/usr/share/wordlists/rockyou.txt.gz

Uncompress it first.

--wordlist=/usr/share/wordlists/rockyou.txt

I copied your hash to my box.

kali@kali:$ cat hash.txt
8AFA847F50A716E64932D995C8E7435A
5F4DCC3B5AA765D61D8327DEB882CF99
8621FFDBC5698829397D97767AC13DB3
F306109E6F069BCA5191DEB9B03359E2
F78900129CE480FC150F9B84D73B03F2
kali@kali:$

Check the supported format

kali@kali:$ john --list=formats | tr , '\n' | grep -i md5
 md5crypt
 md5crypt-long
 asa-md5
 dmd5
 krb5pa-md5
 net-md5
 md5ns
 PBKDF2-HMAC-MD5
 pix-md5
 Raw-MD5
 Raw-MD5u
 SunMD5
tcp-md5
 HMAC-MD5
kali@kali:$

Try again ... voilà

kali@kali:$ john --show --format=Raw-MD5 hash.txt

<Cracked password removed>

5 password hashes cracked, 0 left
kali@kali:$


Does randomness prevent collision attacks? Google have recently announced a practical SHA-1 collision.

A few years ago MD5 had similar issues and researchers even created a fake CA.

This would not be possible today - even with MD5 - because CA's must include at least 20-bits of random data in the serial number (see Mozilla requirements).

My question is a bit more general: do collision attacks matter if signed messages include random data generated by the signer?

For all the uses of hashes, I think that it's only signatures where collisions matter. And then, only when the signer is signing a message from someone untrusted. Are there other use cases where it matters? And in this use case, if the signer always includes random data in the message, does that prevent collision attacks.

BTW, I still think ditching SHA-1 is a good idea, this question is more theoretical.

Yes, randomness that is controlled by the signer and that (crucially) is unpredictable by the attacker eliminates the potential for a collision to be generated, including the chosen-prefix style of collision attacks that were used by researcher to create a fake CA in 2008, and the authors of the Flame malware to create a fake signing certificate a few years later.

The reason is this: To create a collision attack, the attacker must have control over both inputs.  That doesn't mean that both inputs are necessarily entirely arbitrary./ Indeed as you know, they certainly aren't, either for the forged certificates, or for the PDFs that Google created in their experiment.  There is quite a lot of structure in fact.   However, they attacker still needs to know exactly what the fixed components of the two inputs are, in order to be able to generate the components of both inputs that will ultimately allow the hashes of the full inputs to collide.

So, when the attacker does not control and cannot predict what the final form of one of the input is, he cannot create in advance the data that would need to be in the input he submits to the signer to sign.   He only discovers afterwards the full input data (including the nonce) and the resulting hash.  This fundamentally changes the problem from the need to create a collision, to the need to create a second pre-image, which as you've noted is a much, much harder problem, and something that is not even currently possible with MD5, if it ever will be.

So, I would say that yes, the introduction of unpredictable randomness does indeed eliminate the potential for collision attacks as a class.


Can websites tell whether that I am visiting them using the same device? Assuming that I am browsing a website ( say: Amazon.com) using Private/Incognito mode, and I clear my cookies, and have VPN turn on.

Will the website still be able to identify that my device has been used to access it before? Or will it treat my device as a brand new device?

By using incognito mode and using a VPN you are masking two of your fingerprints:

Cookies
IP Address

These are the most common techniques used by websites to identify users today.

There is much more information websites can get from your browser to use to identify you.
Such as:

User Agent
HTTP_ACCEPT Headers
Browser Plugins
Time Zone
Screen Size and Color Depth
System Fonts
Supercookies
HTML5 Canvas Fingerprinting

These pieces of information alone do not have much meaning in relation to identifying a device.
But when put all together, they make up a pretty unique profile.

To view some of the information a website can obtain from you browser in order to fingerprint you, visit:
https://panopticlick.eff.org/ or http://ip-check.info/

For more information about the information your browser leaks, visit:
https://www.browserleaks.com/


Telegram: Security risks for a user of using third-party socks5 proxy? If a user decides to use a third-party SOCKS5 proxy for his Telegram client, what are possible security risks for the user?

Specifically if the proxy suggests using the same login and password for anyone signing up (eg).

In particular, is it possible for a proxy owner to eavesdrop the user communication over non-private single-user-to-single-user chats?

What other risks should be considered when choosing / using a third-party SOCKS5 proxy for Telegram?

The biggest security concern for most communication system is third party abilities to sniff / intercept and decode/tampered the message. Such attack are called "Man-in-the-middle attacks" (MiTM). There are many approach to protect the message when sending from the peer to the destination and vice-versa.

For example, under HTTPS protocol, the client program will download a public certificate from the server before initiate further application communication, then it will use the downloaded server public key and encrypt the message. However, a MiTM can hijack the connection and pretend to be the server and issue its fake certificate to tricks the user. So this lead to implementation of HPKP and HSTS to "patch" the problem. Those mechanism is called a "patch" because it is based on "Trust On First Use" (TOFU).

On the other hand, messaging system such as Telegram is embedding server public certificate inside the client. This mitigate the risk of the middle-man abilities to read the message from the spoof the connection. Without the server private key. This is mentioned under Telegram FAQ on MiTM.

In short, if the user are not using a tempered Telegram client, the message are pretty safe (under current CPU power and no sudden leap on cracking on the said encryption key strength).


Can OSSEC detect buffer overflow attacks? I am trying to detect buffer overflow by using OSSEC (a HIDS software) as mentioned in OSSEC rules example and OSSEC book.

How can I configure OSSEC for detect a simple buffer overflow example as the following:

#include <string.h>
#include <stdio.h>
void main(int argc, char *argv[]) {
    char buffer[100];
    strcpy(buffer, argv[1]);
    printf("Done!\n");
}

Bear in mind that OSSEC is a log-based HIDS. Knowing that, it is clear that OSSEC will be able to react only if someone (eg.: a daemon) adds a log that matches some Buffer Overflow rule.
See the official code example that you've mentioned.


Definitions of PKCS#11 abbreviations Is there a complete definition list for all CKx abbreviations in PKCS#11? I believe I gathered most of them:

CK  = ... Data type or general constant
CKA = ... Attribute
CKC = ... Certificate type
CKD = ... Key derivation function
CKF = ... Bit flag
CKG = ... Mask generation function
CKH = ... Hardware features type
CKK = ... Key type
CKM = ... Mechanism type
CKN = ... Notification
CKO = ... Object class
CKP = ... Pseudo-random function
CKR = ... Return value
CKS = ... Session state
CKU = ... User type
CKZ = ... Salt/Encoding parameter

Are these correct? Am I missing any?

They are defined in the standard, maintained on the OASIS website...symbols and abbreviations.

And the list there matches yours.


What fraction of vulnerabilities does black-box pentesting find? Black-box penetration testing is one to check a web application for vulnerabilities.  It can find some vulnerabilities, but not all.

What fraction of vulnerabilities does black-box pentesting find, on average?  Is anyone aware of any data or evidence on this?

One paper in the literature provides some partial data on this subject [1].

The paper analyzed 9 web applications using two methods: (1) black-box penetration testing, and (2) manual code review by an expert.  It compared how many vulnerabilities were found by each.

In total, the analysis found a total of 91 vulnerabilities.  39 of
them (43%) were found by black-box penetration testing.  71 of them
(78%) were found by manual code review.  There's no way to know how many more
vulnerabilities might be present that neither technique discovered.

Therefore, one possible conclusion is that black-box penetration testing finds less than half of all vulnerabilities present in a web application, on average.

Another conclusion is that the combination of both methods seems to be better than either one alone; they each detect some vulnerabilities that are missed by the other.  In the paper mentioned above, neither method alone was enough to detect all vulnerabilities:
manual review found 52 vulnerabilities (57%) that were not detected by
black-box pentesting, and black-box pentesting found 20 vulnerabilities
(22%) that were not detected by manual code review.

However, this paper has a number of limitations.  It looks at only 9 web applications.  It is hard to know whether these are representative of all web applications in the wild.  Manual code review was performed by only one reviewer.  Black-box pentesting was performed by only one tester, and using only one tool.  It is not clear whether the effectiveness of these methods might vary from person to person, or from pentesting tool to another.  Therefore, this data is only a first glimpse, and can't be treated as the final answer.

[1] Matthew Finifter, David Wagner.
Exploring the Relationship Between Web Application Development Tools and Security.  WebApps 2011.


Suspicious about no-log VPN policy - anyone care to prove me wrong? This post may sound pretty silly for you as specialists, but for me it is a serious question I cant find an answer to on the internet.

Basically, I wanted to encrypt my net connection - obviously, I've chosen VPN based on a comparison at https://thatoneprivacysite.net/.

Finally I found something which fits my needs well - https://www.azirevpn.com/ - their privacy policy is clear and they have flexible pricing.

But, after few days of analyzing the topic further, I noticed that they state:

  Connect up to 5 devices simultaneously.

in one place, while in ToS they claim that:

  AzireVPN does NOT log the number of your active sessions or total sessions.

So, how is it possible to restrict the amount of devices being currently used without logging how many of them are active at the moment? One guy told me it can be done through a "firewall-layer" based method, but this would mean that they are lying... or perhaps the term "active sessions" has a different meaning?

Any help would be greatly appreciated, I am still a rookie in security knowledge ;)

Best Regards,
That Curious Guy

The system can see how many concurrent sessions you are running, that's the nature of the system you're using, but they don't record that information anywhere for archival purposes. So they can't, after you've disconnected, see that you were using 3 sessions simultaneously, so they don't "log" it.


SQL databases password profiling: Same password for all DBs (while it is different from root) - A meaningless step? Assume we have a two MySQL database users with corresponding databases with the same name (db1, db2), encapsulated inside one central database central_db (which also includes an information_schema) and controlled by the user root.

The root user's password is unique, but the two non-root db users has their own password, which is identical in both cases.

I assume that changing the password of non-root db1 or db2 so that each of the two will have a different password wouldn't have significant effect on security because if the root user hacked, the passwords of the aforementioned to non-root users wouldn't really matter.

Am I correct?

Having separate database users (with separate passwords), in addition to the root user, is good practice.  This allows you to protect the data for each database, so that if the password to one database is lost, it doesn't compromise the data in the other database.  And you don't have to use the root password anywhere, except when doing database maintenance.

In other words, the difference between shared login for all database users, and separate logins, is that the attacker can access less data when you use separate logins.  Because even if the attacker cannot access root, they can still read the data belonging to the compromised user, and maybe do some damage.  But the rest of your database is protected.

This is because the most likely way attackers will gain access to your database is either through some SQL-injection type exploit in the application, or by gaining access to your network in some way, and discovering the account credentials in configuration files.

In the first case, you only lose the data in the database with the exploit.  In the second case (with an attacker in your network), they still only get access to the data in the database with the leaked configuration.  An in neither case will the attacker be able to access the root account.

It comes down to the principle of least privilege.

In addition, you can have different key rotation schemes for the two accounts, both in terms of how often you change passwords, and how you distribute them. And that, I suspect, is the most practical value in having different passwords.  Over time, the passwords would probably diverge anyway, or cause a lot of operational headaches.


How effective is a URL scanner? How do I test if a Link is REALLY malicious or not ? I use VirusTotal, but I suspect that it is not useful at all. To see why, please read further.

I wanted to find out which side the stomach is on. So, i went to wiki answers http://wiki.answers.com/Q/What_side_is_the_stomach_on. On the top right corner, I accidentally clicked an ad which looks like a boxing game. It took me to a website which looks like a "spin the wheel game". This is the URL, which i obfuscated using @@@ - http:@@@//@@@   @@@winspinwin.net@@@/@@@spinner@@@/@@@freespin.php?

I used VirusTotal URL Scanner to scan the wiki page and the url of the ad, it was all clean. But, I suspect that it is not. It could have been a drive by  :(

Is there any way to be sure that visiting the link did not harm me ?

It is possible that malware websites are evading detection from malware scanners by looking at the source IP address and offering a clean version of the website to the malware scanner. Virus Total being the most popular scanner, the chances are high.
The next easy option is to scan it with Google Safe Browsing like this:
http://www.google.com/safebrowsing/diagnostic?site=http://winspinwin.net/spinner/freespin.php

But if you use Chrome or Firefox, the browser already did that for you.
A different option is to use an antivirus product on your machine while accessing that website.
A more lucrative but safe option is to install a virtual machine with the same OS and browser you use and visit that site while running Process Monitor. This way you can see any suspicious processes, file and registry writes.
I checked using a vulnerable IE 6 and your page looks benign.


Windows User Processes running as childs of explorer.exe I heard that one of the indications of a malicious process is if a process is not running as a child of explorer.exe

What is the reason for that?

From my understand, whenever I start an executable, it will have the PID of explorer.exe as it's PPID. Only services seem to have another parent process.

I've never heard that, but it makes perfect sense:  A rootkit will also run without being a child of explorer.exe, by definition.  If the Windows process control system can see it, it's not a rootkit.

I don't know how common they are now, but they were once popular infestations.


Log poisoning prevention in the context of LFI Back in the day, mostly, such injections were taking place over the
server log files. Such files are the Apache error log, the Access log
and more. Techniques like these have been used for years and,
hopefully, they won’t work on updated systems - even if they are LFI
vulnerable.

Source
They won't work on updated systems because of what? Do web servers like Apache, Nginx have any means of preventing say PHP code to be written to a log file?

Notice in the linked article, the technique relies on system() which should be disabled on public-facing PHP processors. Disabling that, and other crazy funcs, should stop a large percentage (ie. shell_exec, passthru, exec, popen, proc_open, ... see https://globedrill.com/disable-dangerous-php-functions-php-hardening-cpanel/) - this control applies to the PHP configuration php.ini option disable_functions. Another relevant option is open_basedir, which is used to restrict file inclusion or operations to directories under this value.
In the context of what reaches the web server, WAFs can be configured to 400 any attempts to inject code into the log via a HTTP request, by blocking the request at the gate.
With respect to what is logged, the web server can ensure user-controlled contents in the log are rendered inert by encoding any data before writing, eg urlencode. This is a sensible thing to establish, at the service layer, as well as the application layer.
At another level, more control can be applied to the directories where log files are placed, and the access that applications have to these dirs. This can be handled by chmod et al. to limit the access, preventing PHP running under the context of the web server to access the log file. Depending on how the server is configured, this probably wouldn't be possible for the web server's logs (at least without some hoop-jumping), but for application logs etc.
Also worth mentioning, .htaccess or equiv can be used to reject any requests for known log files, eg. PHP's error_log.
Finally, within the PHP itself, where the file is brought in with include, require et.al, some filtering could be applied to ensure that the value prepared from user-input is within an acceptable range, possibly by using a regex, eg:
<?php
echo preg_match( '/file1\.php|file2\.php|file3\.php/', $lang_consts_file );


Need Help! Computer Hacked!!!! Need to protect data Over the past one year, I have experienced that many of my accounts (Social media accounts, email accounts) were compromised. Which includes that the perpetrator changed the password/s, had full access to my inbox, was able to send/read messages.

I also noticed that my installed software's were tempered with. They all of a sudden started to give trial expiry warnings etc.

I did managed to enable 2 step verification for most of my accounts, but it seems like the hacker has access to my laptop and wifi in real time. And that hacker seems to control my laptop just like an administrator.

I did scanned my hard drives fully with Malware-bytes and Hitman Pro but couldn't find anything major apart from some cookies, malware registry entries, etc.

I have a very high suspicion that someone from the ISP (Internet Service Provider), a company that provide internet service is involved in this who knows the router password and settings.

I have windows 7 and windows 8 installed (on both different laptops). I am not able to upgrade to 8.1 due to some reasons at the update gets stuck for long time. And am planning to format my internal hard drives fully from scratch. (of both my computer).

I can also fully encrypt my hard drive with encryption software and can also enable EFS (Encrypted file system) once am upgraded to windows 8.1. But am not sure if these steps are enough to fully secure my laptop from wifi hacking.

So I would like to have some advice as to how can I make my laptops completely hack proof?? Which means that no expert can be successful in hacking it.

Would appreciate your advice/comments.

THanks!

You can't. There is no way to make a computer hack proof. And with the very limited information provided in your question, there is no way to give you specific advice about your situation. Here is some general advice to start you on the road to hack proof:

1) Get a new ISP. If you think your ISP is attacking you, then immediately disconnect your router, terminate your internet service contract, and purchase a new one from a different company.
2) Completely wipe your laptop. Use DBAN (https://dban.org/) and do the seven level wipe to completely rid your hard drive of any information you have. Then destroy your computer (there could be rootkits installed that have fundamentally compromised your machine).
3) Buy a new computer (Puri.sm is a good start) and use an operating system like QubesOS (https://www.qubes-os.org/) to better protect your computer. If you need to use Windows, do so from a virtual machine from a Linux computer and use snap shots to revert it after every use.
4) Setup inbound firewall white listing on every level of OS (hypervisor, main OS, and vms). This way, only connections you explicitly allow can get from the internet to your computer.
5) Use encrypted, private email (like ProtonMail). Create a truly random password with at least 16 characters (recommend much higher where possible). Setup two factor authentication. Create one of these emails for every service you'll be using (facebook, twitter, banking, etc) and never let them overlap in any way. Treat them like individual identities that never mix with each other.
6) Purchase and use a VPN. Never access the internet without it.
7) Setup ad blocker, privacy badger, and https everywhere on your web browsers.

These are six pretty difficult things to do and there is quite a bit of financial investment involved. But, if you can do all of these things you will be much more difficult to hack.


What's the difference between end-to-end and regular TLS encryption? I've been told that WhatsApp implemented "end-to-end" encryption. In the grand scheme of things, what does this actually mean versus, say, another service which does use HTTPS, such as this website (StackExchange) or some other non-end-to-end encrypted site? Is there some point where even HTTPS/TLS will expose data that doesn't occur in an end-to-end encrypted app like WhatsApp?

Let's define end-to-end as where the message is encrypted by the sender and decrypted by the receiver. Nobody in the middle, not even the chat provider, has the ability to decrypt it.

Compare this to a simple chat over HTTPS. The message is encrypted by the sender, just based on the fact that TLS is used. Now, while the intended recipient is another user, the TLS connection is initiated with a server (think Facebook). TLS terminates at the server, and whoever controls the server has the ability to view the messages since they are not encrypted. Then, the message may be passed on encrypted over TLS again to the recipient.

The key difference is that the provider is able to view the messages in the second case.


Why some sites are not shown when embedding them in an iframe? Exploiting the DVWA's stored XSS option, I'm using the following payload: <iframe src="url">.

I'd like to know why do some sites work but others don't when using this payload.

For example: <iframe src="http://usatoday.com">works, however <iframe src="http://google.com">does not work (it shows an empty box). This site doesn't work either.

Websites commonly use iframe breakers written in JavaScript or the X-Frame-Options header to prevent being iframed.

In the case of google.com, the latter is the case:

fabian ~% curl -I www.google.com | grep Frame
X-Frame-Options: SAMEORIGIN


Is it possible for a virus to be downloaded unknowingly and run when a website is opened? Usually, the only time I see viruses happen is when someone mistakenly runs an infected file. But could one also be infected by just visiting a website?

Yes, as @TheProWolfPcGames mentioned this is called a Drive-by download. All browser venders regard the ability for drive-by download as a critical security vulnerability, and when a drive-by download vulnerability is discovered the fix or mitigate quickly.

The Java and Flash browser plugins have historically been the source of the majority of drive-by download vulnerabilities and are being phased out by their vendors (Oracle and Adobe), browser vendors (Firefox and Chrome), and removed from some ad networks (Google AdSense).

My advice would be to remove flash and java plugins from your everyday browser and have a seperate browser that is used only on trusted ad free sites that need flash or java to operate.


How the mobile operator knows whether I'm use phone, tablet or a computer for data service? I have a mobile plan with unlimited data.

It works overseas as well in the country of origin.

It does not work for overseas tethering - I cannot use internet on my computer when travelling - it displays a webpage telling me it's not allowed.

There were some hacks with unlimited 3G on Kindle: http://hackaday.com/2012/02/27/tethering-a-kindle-for-free-3g/

I wonder - how does mobile operator knows whether I'm using phone (internet works) or computer ("tethering not allowed" message)?

Is it user-agent string or something more sophisticated?

EDIT/UPDATE

3G hotspot, connecting with another phone

(because another phone does not work it suggests it's not the user-agent string)

3G hotspot, connecting from a computer

While I'm not sure of the exact answer to this question, I am aware that the user-agent string can be used by browsers to determine the type of device that the operating system is running on - often this is used in web design to dynamically display content based on what device is being used to view it.

To answer your question fully you must elaborate on when this 'tethering not allowed' message appears. Is it a prompt from your phones OS, or is it a message that appears on your internet browser when you tether it to your computer?

EDIT: To test this theory you could try using a browser plugin like Random Agent Spoofer for Firefox. If you manually set your user-agent to the same OS and browser as you use on your mobile device then it is possible that the service provider will be unable to distinguish between the traffic from your computers browser and data coming from your mobile device itself. However, this assumes that the provider or mobile device is not modifying the packets in some way to reflect that the packets are being sent from a tethered device. If this is the case then there really is very little that you can do about it.

From what you have described it sounds more like the the packets are being redirected based on the information inside the packet. For example any HTTP requests that are shown to be originating from the computer through the mobile phone are being redirected to a different source hence you are being served with a basic web page stating that you 'cannot use a tethered device'

As stated by other users, there are many ways that the service provider could potentially detect that you are using a desktop as opposed to a mobile device.


Email/facebook account/internet protection service for private community I apologize in advance for any inaccuracy.

I am part of a yoga community which has no particular activity on the web or in the informatic sector.
All we have that can be regarded as web-related is that we communicate through a mailing list of about 100 people.

However, since a few months we have been under attack of hackers who crack personal email accounts and facebook accounts. They also have circulated accurate emails with name and salutations that are proper of our community, so I believe there is a human effort behind this, and not just a software.

I myself do not know much on the internet account protection, but once my account was hacked, I took my actions to protect it and do not make it happen again. I changed all my passwords and made them way more complex, I activated two-factors protection, I have installed an authenticator program which warns me (and put a code-protected wall) everytime someone tries to log in my account through a device that is not one of those I specified as secure, and I am going to work more on this direction.

Anyway, there are still people in that mailing list who are older, or just do not know very well what to do, so their account keeps getting cracked. Of course, their incapacity puts to risk all the others connected through the mailing list, which is annoying.

I was looking here for advice to hire a company, or a service, which can take care of this specific group of accounts, perhaps migrating all the accounts to a common, independent provider, such as person_name@yogaeurope.com.

I have tried for days to google something that might help, but have not really found what I think I need, I giving here a try. Someone told me to buy a WebRoot service but to me it looks it gives more protection against viruses and such, while security packages have a limit of 5 devices, so it seems to me that is not designed to protect communities against what we are experiencing (maybe I am wrong).

Is there any kind of service that we can hire to protect our mailing list? If of any relevance, we reside in Europe (not just one single country).

I do not even know if such a thing exists, especially for private communities and not for business companies, but I though this was a good point to start.

If everyone can agree to have a Facebook account, you may want to consider Facebook groups.

They can be private (join only via invitation, membership not publicly visible) and be quite large.
You can restrict posting so that the do not get "overcrowded" with posts.

A relative uses this for their "social help group".

See https://www.facebook.com/help/1629740080681586/


Using the Symantec VIP Access smartphone software for 2FA I'm most accustomed to using Google Authenticator / FreeOTP for my 2FA needs.  This system allows me to have separate TOTP streams for each site and allows me to backup my seeds (by printing the QR codes used to set them up).

However, I've encountered a few systems that support only Symantec's "VIP Access" program.  This software seems to generate a single secret, then I register the "credential ID" with other systems to allow them to recognize my TOTP stream.  I'm not sure how the crypto works, but if I use Symantec VIP Access for both SiteA and SiteB, doesn't this effectively give SiteA TOTP tokens that it can use to impersonate me on SiteB?  Also, Symantec doesn't support any way to backup its secret -- their documented work-around for a lost, broken, or replaced smartphone is to contact technical support at for each system with which I've registered my "credential ID".

Is this analysis of Symantec VIP Access correct?  If so, do I have any better alternatives than (futilely) asking administrators of systems that use Symantec VIP Access to switch to something that doesn't suck?

if I use Symantec VIP Access for both SiteA and SiteB, doesn't this effectively give SiteA TOTP tokens that it can use to impersonate me on SiteB?

Yes. 2FA does not necessarily fully negate the risks of password reuse. I doubt Symantec would allow the same code to be used twice (the system requires the service to send the code to Symantec for validation) - but a malicious service could easy enough not validate you with Symantec themselves.

It is worth noting sites can optionally integrate push based notification (where the app asks Symantec to ask your phone to generate a token for it) or QR based authentication (where a QR code is presented which your phone uses when generating the token). Both of these would remove that risk.

  Symantec doesn't support any way to backup its secret -- their documented work-around for a lost, broken, or replaced smartphone is to contact technical support at for each system with which I've registered my "credential ID".

This appears to be by design. I'd agree its a poor decision. However from a security / marketing perspective its arguably better - if someone steals your phone you'll probably notice, if someone cloned your token you might not.

  do I have any better alternatives than (futilely) asking administrators of systems that use Symantec VIP Access to switch to something that doesn't suck?

The only other option is to complain to Symantec. Although i'd argue complaining to their customers is likely to have a bigger impact.


Disable guest access in / directory Ubuntu Follow up from: https://stackoverflow.com/questions/49703000/how-to-see-into-guest-account-filesystem-from-root

I am root, and I need to restrict write or read access to / directory for a certain user, that is not root. Is this possible via shell or a C progam?

restrict write or read access to / directory for a certain user, that is not root

Yes, use permissions. Every multi-user operating system (including MS Windows, Linux and Unix) has some capability for controlling file access.

While Stackoverflow encourages us to provide inline answers, a full explanation of how Unix permissions work would be a bit over the top in an answer here (don't panic - its not too complex) and I would struggle to do a better job than Paul Sheer does in "Linux:Rute User's Tutorial and Exposition" which is available in print and free pdf's on the internet (chapter 11).

As a taster, the standard Unix/Linux filesystem privileges are Read (r), Write (w) and Execute(d) and each can be applied to 3 categories of users - the designated owner of the file/directory, the designated user group of the file/directory, all users on the host.


Referencing Software Standard Risk Severity List? Is there any reference material out there for the severity of standard software security findings?
E.g SQL Injection is severity 1, Missing header is severity 4?

I understand risk assessment depends on many factors and environmental differences, but is there still a rough guide that can be followed?

My software firm regularly gets complaints from a single client who conduct cheap Penetration Testing every time they take a patch. They refuse to pay bills, and take the software offline until we address the problems as the penetration testing firm raises Informative type findings as "High Risk".
The most severe risk they identified was that a CSS file was visible in source, yet they had no evidence to support if it was exploitable. Their justification was source code should not be visible.

How can I defend this and try to bring it to the clients interests as well as ours that these Penetration Testers are duds?

Establish your own standard of risk ranking, and get your client to agree to it.

Start by assessing the risk that the app poses to the organization. For example, if the system handles any regulated data (PCI, HIPAA, GLBA, PHI, PII, etc.), or if it is externally facing, or if it is mission critical, call it a high risk system, and anything the pen testers find will be classified as a high risk finding that must be addressed immediately. But if it's not a high risk system, then only demonstrably exploitable findings will be considered high severity vulnerabilities that require immediate remediation. Perhaps you can further identify a class of "very low" risk applications that can be exempt from costly pen testing.

Your clients only have so many security dollars to spend.  It's your responsibility to help them spend them where they have the best chance of producing meaningful results.


Salt generation for stream cypher Sorry if this is an elementary question but I could not find a direct answer.

For end-to-end encryption of messages that wait temporarily on a server and where the sizes can vary from just a few characters to a much larger amount of characters.

It seems like OpenSSL AES-ctr would be a reasonable choice, but I'm not sure about the implications of the salt.

If the pass phrase is static, does the fact that there are potentially many messages for the same user mean that the salt should be randomized per message?

If so, is OpenSSL rand a good enough way to generate it?

Generally speaking: yes, it should. The "salt" in ???-CTR steram ciphers is actually the IV/NONCE used to generate the XOR-stream. As indicated by the name (NONCE = Number used once), it should be unique and have a reasonable amount of entropy.

In a stream-cipher there are no messages. That means that the NONCE is theoretically unique per session / connection. But if that connection stays alive for a longer period of time (say several hours) and/or larger amounts of data are transferred with the same NONCE (e.g. 100MBs and more) the stream cipher may become suspectible to cryptoanalysis (depending on keysize, entropy of the NONCE and the Cipher algorithm in use).
Most SSL-like protocols (including the TLS standard) suggest to regenerate the NONCE every X minutes or every Y bytes transferred.

Here is an example that i would consider secure enought for sensitive data:

AES-192 or AES-256 CTR
NONCE genreated using a CSPRNG (see FIPS-140) with high-entropy seed (e.g. /dev/random)
Same goes for the Key-Exchange random numbers
Every 2 hours or every 200MB exchange a new key and a new NONCE.

Practically, you will have to choose these parameters yourself if you are not relying on a standard TLS connection.

openssl rand_bytes() does suffice for generating NONCEs.


In hashing, does it matter how random a salt is? I recently had a comment made to me in an online discussion after I'd stated that randomness in a salt doesn't matter -- and I got the following response:

  Salts may not have to be "secure," but the method of generation can
  matter. Using a cryptographic random data source helps ensure
  uniqueness and randomness in the salt data. Depending on the algorithm
  being used, the distribution of randomness in the salt can have
  bearing on the strength of the key.

Now, in most cases with a 22 character salt (in bcrypt for example) even with a prng the odds of generating the same salt twice are pretty small but its the second bit of that statement -- I'm not sure what that means and I certainly can't say its "wrong" without understanding it ....

So is this correct? Does randomness in a salt matter? Since salts are a known thing if someone's attacking a table of hashes, how can the quality of the salt matter?

No. A salt is simply supposed to be unique so that you can't use an attack (such as rainbow tables) that computes a password hash once and uses that result against multiple password hashes.

If you're interested in making reversing the hash impossible without some secret knowledge, then append a site-specific password to the provided password (in addition to the salt) before hashing. A salt is stored with the hash, so making it hard-to-guess is pointless.

@Honoki:
If it's a global value or site-specific, then what you're thinking of isn't a salt, it's something else. That's not to say it's not a good idea, but it's not a salt. Typically an installation-specific secret is called a "site key" or "site password".

But salts are typically stored with the hash. For example, here's the current way Unix/Linux login passwords are stored. The password here is "foobar":

$5$BcjmguyyH.Qrf$ADRXhi/5xb.dYU67I.JdY57uoFjel/rqMqj14QJmTQ1

$ is the field delimiter
5 is the hash algorithm specifier (in this case SHA-256)
BcjmguyyH.Qrf is the salt (not disguised in any way)
ADRXhi/5xb.dYU67I.JdY57uoFjel/rqMqj14QJmTQ1 is the hash


What is a "Trailing Host Header", and how can I test for it? My team's been doing some research into WAF protections based upon a WAF testing tool released at Black Hat this year.  In the tool, there's a list of hostname evasion tests - that are really just an outline of ideas for testing manually.

There's just one that has us stumped - what is a "Trailing host header" as a hostname evasion technique?

Can anyone suggest a viable test for this?

The Host-header is used by the client to indicate with which server name it wants to speak. Multiple websites may be served off from a single IP address.
In the HTTP protocol, data may be sent in multiple chunks. This is especially useful if the server does not know the size of the data before completing the request (e. g. a live stream or a web application that starts to send some results while still working on the rest).
See 3.6.1 Chunked Transfer Coding for details:

The chunk-size field is a string of hex digits indicating the size of the chunk. The chunked encoding is ended by any chunk whose size is zero, followed by the trailer, which is terminated by an empty line.
The trailer allows the sender to include additional HTTP header fields at the end of the message.

Even if a client is uploading something of unknown size, it will know the target location at the time, it opened the connection. Therefore it does make no sense to put the Host header into the trailing section behind the data.
The situation may be exploitable, if the request is handled by a reverse proxy (aka web application firewall) that handles access rules: The reversed proxy may see one of the host header, but the web application may see the other one.


Password hashing : Using 2 salts I'm developing an authentication service.

I know the practice of generating a unique salt per user, stored in the DB with the hashed password, to prevent rainbow tables attacks.

I just had the idea of adding a second salt, inside the code, not existing in the DB, so if the database is leaked (but not the code), even weak passwords are not vulnerable to brute-force.

I seems to be a good idea to me, but as I'm not an expert I'd like to have the confirmation of people who are good in information security.

Your second "salt" is a concept which has been described as "peppering". Basically, it works, but has the drawback of implying key management (the "pepper" being really what cryptographers would call a secret key): when you update the software, or switch to newer machines, you have to take care of transferring the pepper value, otherwise you will make all your hashes unverifiable.

Peppering is best done by first computing the hash in the normal way, and then computing some HMAC over it, with the pepper as key. In the database, you store the hash parameters (salt, iteration count) and the HMAC output (but not the hash value itself, of course). This works, notably, because HMAC is deterministic.


Can ISP detect a proxy connection's contents? No idea if this is right place to ask.

In my country, by law, all ISPs are required to block certain websites. People can not access such sites. But, through proxy websites every one can access blocked websites. I guess the flow is My PC ---> My ISP ---> Proxy ---> Website and then it returns back the same path.

If all the Internet resources are requested through the ISP, then why can't they detect a disallowed website being requested via a proxy site?

If all the Internet resources are requested through the ISP, then why can't they detect a disallowed website being requested via a proxy site?

The only way to make sure that the ISP really can't detect what is being requested is by using encryption. You need either an encrypted connection to the other endpoint, or at least to the proxy.

Everything else they might detect, depending upon how sophisticated their equipment is and how motivated they are.


Suppose antivirus provider turned malicious: What do we do? It was recently reported that the hacking group Fxmsp "...claimed to have secured access to three leading antivirus companies," and that they "...extracted sensitive source code from antivirus software, AI, and security plugins belonging to the three companies." Further, the group is:

  ...[O]ffering to sell it, and network access, for over $300,000 USD.

[emphasis mine]

Reporting on this revelation, a Forbes.com article warned that:

  Access to the source code allows hackers the opportunity to locate showstopping vulnerabilities and exploit them, rendering the software useless... or worse. They could even turn what was once legitimate protection from malware into an incredibly effective spying tool.

The report doesn't mention who the compromised security vendors are nor could I find any indication this information has been publicly released.

Which leads to my question. What if my organization is running the compromised security software? What can we do to protect our environment? Are there best-practices that even envision a scenario like this?

I would say security "in-depth always". What you have read is what is public in a way. Wearing my tin-foil hat, it's a good idea to assume advanced and state sponsored groups have attacks on other security software too (you might have read how an Israeli group hacked Kaspersky and saw how a Russian group also hacked them and stole data a few years ago). The Israeli hackers had in a way better network monitoring than Kaspersky itself. So the aim is to make it as difficult as possible for the bad guys and the so-called good guys too.

Good practices?

Isolate / segment networks.
Disable USB/thunderbolt ports.
Airgap critical networks/PCs.
Keep software updated (this is unfortunately a two-edged sword, but one side is sharper than the other)
Use 2FA
Train people to avoid phishing / malware campaings
Check your internal networks for certs expiration :D
Use a network monitoring tool to spot strange traffic.
Do not allow things like RDP be public on the internet (quite a few hacks in the last years happened because of this).

and many, many more.


Sharing encrypted data I have a web app that is storing information related to a organization that I would like to encrypt but share amongst organization members. I would only like the members of the organization to be able to view this encrypted data not server admins.

It seems like I want some form of symmetric encryption. Each member would have a copy of a master secret encrypted using a user provided password. The steps to gain access to the organization data would be, provide user password to get master secret, use master secret to unlock organization data.

One concern I have is adding a new member to the organization. I don't see a obvious way to allow the new member to create their version of the encrypted master secret. Some how when the new user is creating a new account they will need the master secret to encrypt but i'm not sure how to do that in a secure way.

It's also very likely i'm thinking of all of this the wrong way, any advice would be great. Thanks.

Standard threat model disclaimer: difficult to answer without knowing more of the context of the system, how sensitive the data is, types of attackers etc.

Assuming the only threat agent you are worried about is a system admin and they full admin rights to the web application, OS and database, keeping information stored in such application and database completely secure from them is almost impossible. E.g. even if you encrypt it at rest, with full OS access they access decryption data in memory.

If they only have application admin access and maybe database admin access and you want to make it more difficult for them to access the data in clear (80/20 rule) then some form of client side encryption would be best. You can use asymmetric encryption to archive this with the data encrypted using multiple user public keys. The private key for each user is stored only locally by the user and used for decryption. There is no key backup and if a user loses their private key, their access gets revoked and a new user account created for them.

This has advantages over the symmetric key method you described because each organization member would not need to know the master key and key distribution is secure.

For example:

If you are concerned about database admins only and not application admins a simpler approach is to use something like transparent database encryption which means if they directly access the database they cannot view the information.


External HDD safety without Full disc encryption I am not very informed when it comes to disk security but interested to learn more ( so please if it seems like i am misunderstanding some concepts point me to the right reading material )

I've got an external hdd for redundancy that i would like to "password protect". I am aware of full disk encryption but the disk is quite large in data ( 4TB ) and most of the data in there isn't really sensitive. It would still be nice to keep it safe against common thiefs that might just grab it and know how to usb plug it in a Windows machine but not really able to do much more with it.

Is there a way to password protect such a disk for windows without full disk encryption? The reason i am avoiding full disk encryption is that ( presumably ) :

a) It would take a really long time to perform
b) I imagine that it must cause some wear to the disk, I dont know how much but it must be a lot of read write operations when you have to encrypt 4TB of data ( naivety ? )
c) Its not really necessary. Yes a slightly tech savvy person can imagine to boot this disk in Linux but so be it, no government secrets are kept on that disk, mainly family photos and videos

Thank you and apologies for the naivety.

P.S : I would like to be a little more educated on the subject as this is the first time I preoccupy myself with and so feel free to point me to reading material or anything for better understanding.

Besides installing a Truecrypt file on windows disk (Truecrypt can create a file and encrypt files in there, not just the full disk) , you can look into normal windows Bitlocker encryption.
It should run on every windows version since XP (read-only there though) and prompt a password when you connect the disk, and is the easiest solution for most users.

Disk wear is not an issue, even on SSD, there is only 1 extra read/write cycle on top of normal usage (the actual encryption). If this is enough to wear your disks out, you're better off asking for new disks here :)


Signing using a certificate and then the CA is out of business, how to prepare? While searching knowledge on this, I found How do I prepare for Certificate Authority end of business?, but I don't quite seem to grasp it.

Let's say:

one operates a file server X,
X saves files, signatures and the public certificate information from S which was used to sign the files sent by S to X,
party Y downloads the file and signature from X and wished to verify it is a file signed by S.

I believe the verification works even if the public certificate stored and later served with the file and signature by X works, but what if the CA has gone out of business or S has changed to a different provider. Is the chain of the old, saved public certificates along the data trusted anymore? If it is, how come, if the chain to CA is broken?

Although legal liability is largely a non-technical matter, if the chain is broken (see previous passage), wouldn't changing CAs allow S to evade  potential issues arising on signing documents? I.e. it could technically repudiate the signatures.

<edit: I suspect this could revolve around some of the fields that state the legal entity that has requested the certificate, the company name or somesuch. Also interesting reads are SSL certificate chain verification, Manually walking through the signature validation of a certificate and PKI - Certificate Chain Validation, which lead me to believe all the certificates excluding the root CA need to be present. At least on Windows the root CA needs be installed by Microsoft, so I wonder if the root CA gets removed, what then?

Is the chain of the old, saved public certificates along the data trusted anymore?

Yes, unless some reason for that trust to be revoked has taken place like a revocation or expiration.

  If it is, how come, if the chain to CA is broken?

The chain has not been "broken."  As long as all the public keys remain available, the chain is intact, regardless of any company going out of business.


How does anycast ensure reliable delivery of IP packets for the same IP address on different locations? With anycast, it would be possible to have the same IP address at multiple locations in the world, without the need of a proxy or VPN that forwards the packets to its final destination.

If you would just use IP spoofing to change the source IP address to for example  6.7.8.9, normally you would not be able to just receive the response packets for this IP address, as the Border Gateway Protocol determines a different path back for the response packet that you normally won't be able to intercept.

What does anycast do so you can reliably receive IP packets meant for this particular IP address? Since the shortest paths BGP relies on can change, which mechanism ensures that when you send a request at location C that has IP address 6.7.8.9, you will receive the entire response back to location C and you won't receive a response with also a few packets delivered at location A that has IP address 6.7.8.9 and another few packets delivered at location B that also has IP address 6.7.8.9?

For DNS it might not matter, but Anycast is also used by CloudFlare for the content delivery network, which would be HTTP(S) over TCP and not just UDP Packets.

How about this scenario: Server A and B have the same IP address with anycast. Server B connects to an external server that is very close to server A and very far away from server B, since server A is closer, the response will be routed back to server A, isn't it possible to always route this type of requests back to server B, since server B initiated the connection to the external server?

It is counter intuitive, but various providers have talked about their experiences over the years and going back as far as 2 decades have shown Anycast to be at least as stable and often more stable even for TCP/HTTP traffic than Unicast.

Why is this-

To a first approximation the internet is divided among Tier x backbone connectivity providers, corporate endpoints, and ISPs serving last mile. These parties exchange traffic through either peering agreements or transit agreements. Peering agreements are least cost and make sense when there is a significant flow of traffic in both directions. Transit agreements are more expensive and exist where there is an imbalance of traffic flow.

Very significant care goes into the planning of points of presence for corporate endpoints from which Anycast announcements will be made, and therefore into the peering and transit agreements by which user traffic flowing out of ISPs will reach those endpoints in a least cost manner, where cost is measured both financially and topologically.

That is, these agreements are ideally structured such that there will be a preferred least cost global route for any individual customer to a specific POP, with fallback more expensive (in both topological and financial terms) global routes to other POPs.

So the magic isn't necessarily in Anycast and BGP but in these peering and transit agreements. These allow Anycast and BGP to optimize local path decisions to deliver global topological stability over the lifetimes of relevant TCP sessions (usually at most minutes).

There is some talk of major global players like Google who play in backbone, endpoint and ISP performing their own proprietary magic TCP state replication between POPs, but that's not the common case. The common case is that network architects deliberately construct agreements that optimize for global stability.


Can a root user inside a Docker/LXC break the security of the whole system? My question is probably more about the LXC than about Docker, but I wonder what are the security mechanisms to prevent a root user inside a Docker image to access the whole host.

More precisely, I wonder what are the limit of the capacities of such root user before you reach a point where you can do dangerous things.

Typically, for educational purpose, I need students to load a kernel module from inside a Docker image. Would this kernel module be accessible from the whole system? And, if not, what are the limits and how are the LXC dealing with memory separation inside kernel-space?

For short, I would like to know how far we can go with LXC without making it harmful for the system.

Short answer: Root on the docker container can break out of jail and compromise system.

Docker is meant to simplify the life of developers and sysadmins, not about containing programs isolated from each other. There's some safety features backed in, but they are not the main intention. The idea is to ship a container with the application and every pre-requisite packed together and let the user start it without hassle, not to keep misbehaved users or applications in check.

There are some exploits that make possible to a user running root applications inside a container to break free from the container and compromise the host. Docker took some measures to fix those loopholes, but they are cumbersome to employ.

This Docker security article tells you to not let users load modules. To allow module loading you allow the user to easily break free of the jail. If you want security AND let people load modules, use a VM.

You can create light virtual machines using Xen, VirtualBox or Kvm, and they will be isolated from each other. You can give all your users root on the image, and they will not be able to mess with each other nor with the host system.


How can we find out the fully undetectable virus and kill it in our computer? As I know, most hacker can crypt the virus to bypass all antivirus.
Even famous antivirus like kaspersky and avast doesn't know it.
So, is there a good way to find out the FUD virus and protect from it.

All malware has different payload with that been said the question is really too broad scope.
If it was that easy then Anti-virus (AV) vendors would do that already.

It would depend on how paranoid you want to be to securing your system but it comes at cost of time and usability.

Software protection:
You can execute all processes in a sandbox except for white-listed processes but remember any vulnerable white-listed processes are form of attack to bypass the sandbox. For example: Let's pretend notepad.exe had was vulnerable to x attack remotely. The payload on x would execute under notepad.exe context and would execute out side of the sandbox. So, you need to ensure any white listed processes are not vulnerable to buffer overflow attacks.
You could write your own process rules for your sandbox to reduce the impact of malware.

Firewall protection:
Block all ports except for the ports you use on your system ideally from router or something outside of the machine your using to ensure the malware hasn't already compromised the local firewall. Don't reply to ping request. This post could be massive it really depends on what your machine requires.

If you could narrow down scope of your post I could give you better answer as really you could go so in-depth. Really I need to know what actual malware you want to protect from and the usage of your PC and other devices on the network and how your connected such as WiFi or not? etc Are all your computers on same subnet etc?

Anyways I hope this post was somewhat useful.


Need to learn about IP address I work on a U.S. government crisis/suicide hotline as a rescue coordinator. We receive phone calls, (mostly cell) text and chat from all over the world. Most times the caller/chatter will not disclose their idenity. When the crisis responder feels that a person is a danger to themself or others, I take over to try to identify and locate the person and dispatch the correct emergency response.

We also get many prank calls. Our states protocol we will not report prank calls to any authority as one day that person may acually need assistance and we do not want to ever discourage a caller form utilizing our service.

When a person calls in, even if they have blocked their number, it is captured by a program we utilize, but only the number is dispalyed; no other info is available. In this case we ask law enforcement to ID/ping the subscriber via the service provider.
When a person is coming in through chat the only thing we have is an IP address. Again, we contact law enforcement and ask them to find a location through the ISP.
There are times when a tech from AT&T or another ISP will say that the IP is not traceable but cant explain why. For instance the last time this occured the IP was a satic coporate IP and tech stated that it didnt seem to be an open proxy but could not find out who/what this IP address was assinged to.

While I have a basic understanding of the technology I dont understand why the ISP could not ID the subscriber. I am familar that an internet user is able to hide thier IP by using a proxy server and some what understand how an IP can be hidden with a router in home (I think). I also underssatnd that cell providers like T-Mobile are now allowing calls via WiFi, and I assume that these calls can not be traced? Additonally some chatters are using a mobile device (I-Pad, smart phone) to come in over chat...also untraceable?

What I am looking for is a better understanding of how things work with regard to IPs so I can better maximize my effort, as some times lives do hang in the balance. I also pass this on tho the other coordinators and supervisors. This hotline is only 7 years old and I have had to train myself and others to increase the percentage of sucessful "finds" of those in crisis who are handed over to us in order to get help on the way.

Thank you,
John G.

P.S. I am not up on all the acronyms

Addendum: When I receive a "consult" from a responder it is because the chatter is threatening, or in the act of, suicide, or threatening another. It is exigent..."happening now". We are a 24/365 operation. We need to locate/ID the chatter ASAP to dispatch Police/EMS. Would contacting google give us any advantage over what we do now...looking up the IP address for the ISP and asking that ISP for subscriber info to give to police? What I am trying to learn is 2 fold: What more can/should I do when an ISP says it cant be traced and; be able to determine (understand why) what circumstances/ criteria to look for to assess those untraceable IPs so as not to waste vauble time on a lost cause and move to the next rescue. (we recieve about 1000 calls a day and do about 36 rescues. Some can take several hours)

An ISP should be able to identify the accountholder details (including address on file where applicable) and at least the street address corresponding to the IP at a given time when dealing with wired residential connections, but there is not much more. There are some circumstances under which it is simply not possible to identify a person based on their IP address alone, e.g. public hotspots might give you the name of some McDonald's franchisee who operates several locations under the same Verizon account while controlling his own IP addresses (although a hotspot IP address might be better information than many other cases in practice).

If you intend to track down clients who come in via chat, it ought to be made explicit right off the bat. If it is not hidden from the user that the outcome may be a rescue team being dispatched, then they should have no issue sharing their location from the browser. Add a disclaimer that if the location is not correct to some reasonable accuracy, you will not be able to help them effectively.

Do what you can. If a user on chat is using their phone, the location shared should be GPS coordinates. If they are tethering or have disabled location services, you can compare against ranges of IP addresses used for wireless Internet service if lists may be provided to you by the major carriers (this way, you do not need to consistently query them; you know what's what from in-house data). In this case, you can ask the user to specify their address (and provide a very decent auto-suggest, maybe a map with quick zone options for rapid pinpointing). If they are not willing to do so out of fear that they may be tracked and visited, they are entitled to that information anyway. Tell them very clearly how the service operates, enable quick manual entry when it is not possible to derive location automatically (if it is, ask to verify), and just do what you can.

As for IP addresses, if you are working under a government-sponsored operation then you may be able to acquire access to certain details on a need-to-know basis with guaranteed accuracy to the ISPs' fullest abilities. You should not be questioning whether or not the operator is competent enough to provide the information required, and if you are then you need to push for better facilities.


How can I manage multiple sets of passwords accessible by different users? Possible Duplicate:
  Sharing passwords and credentials between founders and employees

I use KeePass for my personal passwords.

I would want to use it for my business, too, but the only way I found, that I can use this and have multiple users, is by having multiple databases:

one for founders with important passwords like banks, sql-servers etc.
and another for lower down employees (Twitter, Facebook etc.).

Is there a good way to set this up with KeePass?
Or is there a good alternative to have a great password manager and multiple user profiles, where user X can only access password set Y?

This answer was posted on answers.onstartups.com before the question was migrated to the IT Security site. Therefore it was likely not written with a focus on security.

You might find LastPass interesting - http://lastpass.com/ - their personal offering is free and you can share sensitive passwords to other lastpass users (read: your employees) so that they can use the password to log in, but cannot actually see the password. Automatically logs you into the site for web passwords, and can store regular passwords as well.

The enterprise version probably has the features you are looking for at $2 / month, but we've gotten by just fine on their free version.


Hardening a Chromebook I have a Chromebook I routinely use for things like e-banking and other things where a security breach would be catastrophic.  I've read it is a very secure OS by nature due to its small surface area for attacks.  That said, are there any steps I should take to harden my Chromebook? Or is it as secure as it can be right out of the box?

For things like e-banking Chrome devices are secure by default. You don't need to do anything special. There is a good overview about the security here, and a hardening guide here. But you should be aware that your Google account is in fact a part of the system so you should protect the account by things like using a strong password and two factor authentication to maximize security.


S/MIME and Dual-use certificates My assumption is that S/MIME almost always utilizes certificates as follows:

My certificate can be used to allow people to encrypt messages and send them to me.
My certificate (the same certificate) is used by me to sign messages and send them.

Is there an RFC reference that specifies this is a requirement for S/MIME? I'm scanning through RFC5751 and not seeing anything jump out at me...

RFC 5751 describes the packaging of signed and enciphered data using certificates. http://tools.ietf.org/html/rfc5751

http://tools.ietf.org/html/rfc5751#page-18 This link provides information about creation of SMIME messages using the certificates; where SMIME can be sign only message or sign and encrypt message etc.

It is not necessary to have signature and encryption together, based on the implementation you can have only signatures implemented. Also some implementation might require a user to have 2 certificates where one is used for signing and one for encryption.

In normal case in which each user have one certificate and signing and encryption both are implemented, the process is as follows:
The sender of the mail will sign the message with senders private key and encrypt the message with receivers public key.


How to get the IP Adress of an email receiver I am communicating through email with a scammer who is trying to by me mw own parcel of land. I already contacted the police but it could take 2 to 3 months before they start investigating. I want to get the IP address of the scammer and provided it to the police. Is that possible? I tried to use different tools such as bananatag or mailtrack.io . They report me if the email was opened or not but not the IP address of the reader. I suppose such services use Pixel Images  included in the email signature. If I create my own pixel and host it on my server will I be able to get the receiver info? Is there an easier way?

You can pixel all you want, but they might get a message in their mail client saying that "images" or "external content" has been blocked, and they'll have to manually allow it, which might be suspicious to them.

Something I used to do is forge a story inside the situation (add a bit of social engineering to the pixel idea).
What I would do in this situation would be to send him an email:

I found a picture of a piece of land I'm willing to buy, please see below:
<img src="http://my.server.com/image.jpg?tag=827362923">

Then, you wait and later on search the web server logs with grep 827362923.

This has a few limitations:

Chances are the image gets picked up by antispam on the way, so you might get false positives that hit the link, you can check this with WHOIS (e.g. https://whois.domaintools.com/[enterIPHere])
The receiver still has to allow images to load in the mail client, but in this context, it's less suspicious than with a pixel.
It requires you to have your own server.
If the scammer is behind a VPN or proxy (which is very likely in most cases), you will obviously get that IP.


Nessus Scan Port ID mapped to Metasploit Vulnerability exploits My Question: Is there any sort of website that maps Nessus Scan IDs to Metasploit Vulnerabilities?

My Situation: I'm learning about penetration testing and I'm beginning to get frustrated seeing a nessus scan like this (for example):

Plugin ID   Risk    Name
25216   Critical    Samba NDR MS-RPC Request Heap-Based Remote Buffer Overflow

And then having to figure out which metasploit exploit module I can use to exploit that vulnerability. I wind up having to do something like:

msf> search samba

And getting a ton of results to sift through.

Like I said, I'm just learning, so if you need more information try to not jump down my throat about it :) I'll give you more info :)

What would be even cooler is if there were some sort of tool I could load my nessus scan into which would exploit each of the vulnerabilities in turn. That would rock. If that doesn't exist, my question is why...? :)

In terms of finding the corresponding exploits for Nessus output, there's a couple of good techniques.

Firstly, Nessus puts a flag in each report item for "exploitable" which indicates that there is exploit code available.

Once you've got that you can use the CVE number which will likely be listed in the finding (or the MS number for Microsoft vulns) as they're unique to a specific issue, this lets you find the exploit quickly, if it exists in Metasploit.

As to automatic exploitation, such a tool could be written, but it would be a bad idea in most cases as exploits have differing levels of reliability and in a number of cases they risk crashing the host or the service that they're exploiting, so a safer way is to analyze your options once you know what exploits will work on a target host and pick the one with the best Metasploit ranking, which should give you a more reliable exploit.


Protecting data on an embedded device I am to release a system-on-chip device that, during its lifetime, will come to store sensitive data. I want to make that data hard to extract or duplicate.

Encrypting is good for dealing with MiTM, but it doesn't solve the problem of duplicating the flash memory (and MAC address) of the chip and posing as the original hardware.

TPM's (or security tokens etc) are good to deal with duplication, but a problem arises. An attacker could obtain a new device, including a security token, at the store and transfer the security token onto a duplicated device that contains sensitive data.

I don't know if I can avoid this sounding like "do my product design for me", but I'm very new to hardware security considerations and someone with experience could easily help by pointing me in a meaningful direction.

If attackers can physically move the data around, from Flash to Flash, then you will need to resort to cryptography. If chip A must be able to make sense of some data bytes, but chip B (of the same model) cannot, then chip A must know something that B does not. Encryption reduces the problem: if you encrypt all your sensitive data with a secret key known only to A (let's call it KA) then your problem becomes: how can you make A store its key, in a way that it cannot be extracted ? Length of KA would typically be 128 bits, i.e. 16 bytes; that's the added value of cryptography: the size of your problem has shrunk down to 16 bytes.

The first normal method is the following: during an initial phase (typically at the end of the factory line), a device-specific key KA is injected in device A, to be stored in a tamper-resistant chip. That chip must be able to store the key (only a few bytes), do some encryption/decryption with it, and resist forceful extraction (physical resistance). A "master server" stores a copy of all device keys (warning ! sensitive !) and encrypts data elements which must be afterwards sent securely to device A. Mobile phones use that model; the tamper-resistant chip is the SIM card.

An extended method entails a tamper-resistant chip with a bit more power: it can do asymmetric cryptography (say, RSA) and generate its own private/public key pair. During the initial enrollment phase, under controlled conditions, the device generates its key pair, and exports the public key; the public key is stored externally, and is used for encryption (when some data is to be sent securely to device A) and authentication (when device A wants to prove its identity to an online server). Typically, during the enrollment phase, the public key is wrapped by a custom Certification Authority into a certificate and used in standard protocols such as SSL/TLS. Some payment terminals use this model.

A TPM is a tamper-resistant chip which can usually do asymmetric crypto, including generating and storing a private key. This is the right tool for the job, but you still have to use it: the TPM will not magically, by its mere presence, protect the data; you have to design the initial enrollment phase and do the key management. As described above, this more-or-less implies running your own PKI.


CVE submission process? I have two questions regarding going through the process to requesting and getting a CVE ID for a vulnerability.

Should I contact the Vendor first and wait to see if they acknowledge the vulnerability and release a patch and then submit for a CVE ID or should I just submit for a CVE ID now?
On the CVE submission form

It says the following:

  IMPORTANT: Once a CVE ID is assigned to your vulnerability, it will not be published in the CVE List until you have submitted a URL pointing to public information about the vulnerability. Without a public reference, the CVE ID will display as "RESERVED" in the CVE List.

My question is about the "a URL pointing to public information". Does this public information have to come from the Vendor or can this public information be something like a URL point to an exploit db page?

When I find a vulnerability for a product that is not handled by a CNA (CVE Number Author), I apply for a CVE before notifying the vendor.

My reasoning to do it this way, is that now I can ask the vendor to make reference to the CVE in the security advisory/release note. And in turn, the CVE can now make a direct reference to the vendors security advisory/release note.

For the second question, I do not believe the confirmation has to come from the vendor in question. If that was the case, one would not be able to issue a CVE for products that are no longer maintained.

Remember, the purpose of a CVE is to uniquely identify a specific vulnerability. Imagine how two different vulnerability scanners would identify the same vulnerability if there was no common reference for it. It would leave you uncertain if you are affected by one or two vulnerabilities.

So any published material that describe or confirm a vulnerability could be used, as long it is capable of providing enough details to uniquely identify it. In contrast, if a vendor acknowledges a vulnerability, it is beyond doubt that the vulnerability exists, without having providing intricate details that could put others in immediate risk.


What is the proper server-side mitigation for the Lucky13 vulnerability (CVE-2013-0169) on a Windows server? The testssl.sh tool stated that a server I tested is vulnerable to the Lucky13 (CVE-2013-0169) vulnerability. Below the testssl.sh output:

###########################################################
testssl.sh
###########################################################
Testing for LUCKY13 vulnerability
LUCKY13 (CVE-2013-0169) VULNERABLE, uses cipher block chaining (CBC) ciphers

I'd say that upgrading OpenSSL would fix it. But, this is Windows Server 2012, so no OpenSSL there. What would be the proper fix in order to mitigate this?

I was thinking about:

Disabling TLS 1.0 entirely;
Removing all cipher block chaining (CBC) ciphers.

Are there other mitigations for Lucky13 and why did Microsoft not just fix this with a security patch?

As suggested by @StackzOfZtuff, this was a false-positive of the testssl.sh tool.

Confirmed here: https://github.com/drwetter/testssl.sh/issues/789.


New to malware analysis, looking for a string type list as the title suggests, I'm new to malware analysis and as I was looking over strings in a sample, I came across one that I haven't seen before using + and / (6AAAAABZg+kFjYm2BgAAUegBAAAAw1WL7IPk+etc...).

I am wondering if there is a list of some kind out there that has examples of certain types of string, like SGVsbG8= is base64, 48 65 6c 6c 6f is hexadecimal, and so on. Thanks!

From the + and / you can tell this is Base64 per RFC 4648, 4:

Characters ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Padding =, == or nothing in the end.

Then there is:

Binary 01
Decimal 0123456789
Base16 a.k.a. hexadecimal: 0123456789ABCDEF (case insensitive) RFC 4648, 8
Base32:

RFC 4648, 6: A-Z, 2-7: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567 (omitting 0 and 1)
z-base-32: ybndrfg8ejkmcpqxot1uwisza234h769
Crockford's Base32: 0123456789ABCDEFGHJKMNPQRSTVWXYZ + possible checksums
base32hex, RFC 4648, 7: 0123456789ABCDEFGHIJKLMNOPQRSTUV
Geohash: 0123456789bcdefghjkmnpqrstuvwxyz (omitting a, i, l and o)
...many others, some having completely overlapping sets in different order

Base36: 0-9, A-Z: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
Base58 removes 0, O, I, l, + and / from Base64, but has variations:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz used by Bitcoin
123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ used by Flickr

Base85 or Ascii85. Impossible to format here, as literally having "`" in it. See RFC 1924, 4.2.
URL encoding a.k.a. Percent-Encoding from RFC 3986, 2.1
Punycode RFC 3492
Endless list of proprietary or undocumented encodings...

As you can already see, it's only possible to rule out what an arbitrary string can't be and then make educated guesses on what it might be. After that you'd still have to know whether the contents encoded are anything meaningful to your. As it depends entirely on the context, it's not possible to analyse this kind of string on Q/A sites.


Is using trim on a ssd with LVM LUKS safe? I know that it can allow an attacker to know the filesystem and file size, but can it allow an attacker to decrypt any files?

From what I understand about the information betrayed by observing results of TRIM operations on LUKS encrypted volumes, actual plain-text data is not likely to be recovered. As you say, filesystem and data layout information can be inferred. Rather, details on the crypto implementation could help an attacker reduce the key space in a brute-force attack.

Conversely, there are security implications from not enabling TRIM where if your passphrase is compromised and you decide to re-encrypt the header, there is no guarentee the original header is overwritten. This would mean that later attainment of your disk could mean an attacker using the compromised password could forensically locate the old encrypted header, get the master password and decrypt data despite the change of passphrase. I would consider this scenario more of a concern for the average user than a third-party being able to forensically determine where unused blocks are and/or the filesystem.

A great analysis of the kind of information and other concerns regarding TRIM implementation on dm-crypt'ed devices can be found here:

http://asalor.blogspot.co.uk/2011/08/trim-dm-crypt-problems.html


Addressing availability element of CIA triad using technical controls When looking at the availability element of the CIA triad, most definitions mention that availability is addressed through ensuring system up-time by using controls such as disaster recovery, business continuity, rate limiting to mitigate DOS(Denial of Service) etc.

Can the availability element also be addressed by ensuring that information is only available to certain users through technical controls such as access control, encryption etc. ?

"Only available to certain users" is not a measure of "availability". That's "confidentiality".

Making sure that information is available to users who need it is a measure of "availability". Redundancy, backups, load balancing, parallelism are technical controls that address availability.

Access control and encryption do not affect availability but affect confidentiality.


PMK is what prevent to generate the PTK and decrypt the traffic? I'm trying to establish a connection to an encrypted SSID, using scapy.
My intent was basically to sniff the frames of the handshake from the victim, acting as a proxy (MITM), and redirect the frames to the actual AP, changing source and destination.
But I realized that would be impossible for me to decrypt the traffic because the only information that is encrypted, in the 4 frames, is the PMK. Am I right?
Otherwise I believe I could calculate the PTK very easily since that the rest of the data are unencrypted.

Thank you very much.

To decipher the traffic of your victim, PMK is what prevents you to figure out the PTK of that client. To generate PTK 5 things are required:

PMK
AP MAC Address
Client's MAC Address
ANonce
SNonce

You can capture 4 of them from the handshake except PMK. PMK is never sent over the network. The 4th frame of the handshake carries only Message Authentication Code. As long as you don't know PMK you can't decrypt the traffic.


How to get started as a Malware Analyst? Sorry if this is posted in the wrong section.

A little about me: I'm going to be a sophomore in the fall at university, my major is Computer Science (Information Assurance). I've been interested in malware/antivirus since the sixth grade. I remember removing the McAfee security software from my family computer and replacing it with other vendors (kaspersky, bitdefender, eset, etc). I also used to watch youtube reviews of said vendors and other antimalware software, and have just recently acquired my own Virtual Machine and I install malware on there and use different products to see which can best remove the malware.

Anyway, how would you suggest I go about becoming a malware analyst? I've made a list of books to study (pratical malware analysis, art of memory forensics, malware rootkits, botnets: a beginners guide, etc). I also like to read kaspersky's theatpost and malwarebytes' blog, any other tips to get me started in my dream career?

Also, I plan on getting my Masters in Information Assurance, how much will that help me in terms of material learned and job competitiveness?

The two previous posts give great advice.

Here are the areas I would focus on:
 1. C and Assembly Languages - Critical you know Assembly like a second language
 2. Debuggers - WinDBG and gdb - A debugger will be your best friend
 3. Windows and Linux Internals - You must know exactly how the target system works so you can identify exactly what the malware is trying to perform
 4. Experience - do anything you can to show you know your stuff competitions, exercises, blog posts etc.

p.s. check out Cyberwarrrior Academy they offer a free 2 week class on Windows internals and malware development/analysis for qualified U.S. participants


Does it make sense to perform vulnerability assessment tests with admin user rights? We have an admin web portal that we use to configure and monitor our system We recently had a security consultant scan our servers for vulnerabilities.
Our admin portal is secured with username and password authentication and with two-factor authentication.
The issue is that the security consultant is performing the vulnerability assessment and penetration testing with a fully authenticated user with full permission. This makes sense but as the user is fully authenticated the scans are changing configuration so much that the system won't run anymore.
So, is it right to perform the scans this way?

I am assuming that you have only 1 level or privilege eg: Admin, and none else can login and mess up with the system right ? So if the tester is not logged in as Admin he cannot simulate an real attack, because we all know this kind of security (username,pass & 2FA) can be compromised and if the attacker gets Admin privilege nobody knows how far he can get into the system. Basically what the tester is trying to do is even if someone gets those Admin privileges that he cannot get too far in the system for example upload an shell and take control over the whole server and get an root privilege for example and delete everything. If the tester does not have the Admin privilege I am positive he can only check for sensitive folders/files some common attack XSS,LFI,RFI,SQLi, outdated services and much more.


Appropriate way to encrypt passwords/financial info? I am in the process of creating a file/files containing all of my logins/password info for various accounts. In the event of my untimely demise this file would be sent to the appropriate party(s). What is the most appropriate and/or most secure way to encrypt this sort of file? I was looking into TrueCrypt or AxCrypt but I am somewhat new to encryption and I am not sure if these sorts of programs provide appropriate security for information this important.

So far I am leaning towards TrueCrypt - if I go this route does TrueCrypt allow me to create a password/hash that secures the file that could be printed and stored in a safe?

I would suggest to you trying KeePass. It is a password management utility that allows you to store username/passwords for several accounts.

As far as I am concerned, KeePass encrypts all your account credentials using a master password. This information is stored into a encrypted file. Then, you can send or share this secured file whenever you want.

I hope it fits to your needs. You may get more info http://keepass.info/


Using cryptography is it possible for offline devices to reliably communicate via QR code? I really thought of posting this question on IOT forum. But it's very much about cryptography and its limits so here goes..

What I want:

Imagine there is a set of vending machines, they are not connected to internet, but can be updated monthly.
User buys tokens when online, and then tokens live on user's app/phone.
User goes to vending machine and shows machine the token.
And machine lets user buy the items.
User shouldn't be able to use the same token at any other machine, or at this machine. Even though none are connected to internet.

One possible approach I brainstormed...

Machine comes with 9 trillion builtin tokens.
There are multiple machines with same token, all machines have the same set of tokens.
User pays through an app when he has an internet and gets a special token..
User comes to machine, scan his token in QR form and then machine knows if user has paid or not, without internet by searching in its database.
Once user has used the token it doesn't work on any other machine, (not sure how)

however it has flaws...

Once token is used I dont know how other machines could know that token has been used, I can't simply rely on an app to remove token as it can be altered? or user could simply screenshot the QR token.
Someone can crack open the vending machine and get 2 trillion tokens? no? if i encrypt tokens then somehow this would work?

Basically I had this idea for hackathon and ever since I've been interested in this problem, to communicate offline.

While it is generally possible to create a lightweight data structure that can be signed by the payment server (using an internal CA for example which is preloaded on the accepting devices) - and you could work against the reuse problem by having the accepting machine “cross off“ the previously accepted IDs, there are some things that are simply not possible without communication.

You would have to define the accepting devices ID on time of purchase to make sure it gets only used on that device to prohibit reuse on other devices. From your question I can not see that that is acceptable.

And then there’s a practical problem: having a data structure that holds enough information for the payload and the signature will make it hard to convey via optical codes. You suggested QR codes, which get hard to read with about 20 bytes of data - your signature alone will exceed that by far.


What are some common misconceptions about SSL/TLS that members of the general public hold? Particularly ones that are, to some extent, the result of advice given by companies who utilise it, e.g. banks, e-commerce sites etc.

Popular misconception: If the lock icon is present, the site is secure.

Reality: No way!  At best, SSL protects data from interception while in transit.  It does not ensure that the endpoint is trustworthy.  There is no guarantee about what the endpoint does to the data once it receives it.  As Gene Spafford once wrote,

  SSL is like using an armored truck to transport rolls of pennies between someone on a park bench and someone doing business from a cardboard box.

Also, there are many situations where the lock icon does not guarantee that data will be secure in transit: e.g., CA failure, organizations that put a picture of a lock icon in the page, mixed content, third-party widgets, sslstrip, and many others.

Popular misconception: If the site looks legit, then it probably is.

Reality: Nope.  The look of the site is not a good indicator of its security.  It is trivial for a phisher to copy the look and feel of the site onto a spoofed site.  This is a case where our intuitions from the physical world lead us astray: it is not easy to set up a fake bank storefront that looks legit, with marble columns and all, but it is trivial to set up a fake banking website that looks legit.

Popular misconception: Anything can be hacked.

Reality: This may not be the best way to think about things.  It leads to a defeatist attitude that says, why bother worrying about security, if it is always destined to fail?  The reality is that some activities are much safer than others, and with a little bit of attention, one can significantly reduce the likelihood of being exposed to security problems.

Popular misconception: Hacking works like in the movies.  Hackers are romantic misfit geniuses who can hack into anything with a few minutes of rapid-fire typing.

Reality: In truth, most attacks come from garden-variety criminals who are trying to make a quick buck by stealing, cheating, and defrauding people.  They're hardly super-geniuses; the primary job prerequisite is a willingness to steal, cheat, and lie.  They tend to be motivated by monetary considerations: they'll go for the quickest, easiest way to make money.  In some cases, they may be associated with organized crime.  These are not people to look up to or admire.

Popular misconception: Wireless networks are insecure.  Criminals sit around in cybercafes trying to hack into your stuff.  However, if you're not using wireless, you'll be fine.

Reality: While some 802.11 wireless networks -- primarily open Wifi and WEP-protected networks -- are a significant security risk, it's not quite that bad.  Most attacks come from someone on the other side of the world from you, not from a sketchy-looking dude sitting on the other side of the cafe.  Not all wireless networks are created the same.  For instance, your 3G connection on your phone is probably considerably harder to intercept or attack than an open Wifi connection.  And, you are definitely at risk even if you are not connected to a wireless network; just because you are connecting over a wired network does not mean you are immune to attack.


Level of security provided with (.NET) obfuscator tools There are numerous tools that offer to obfuscate .NET code. (Dotfuscator etc.)

Question is simple, those who are experienced with such tools, what it the level of protection such tools offer? Against what kind of attackers can they protect? yeah I know everything is breakable. But there are plethora of such tools, so they must give "some" protection right?

What is the effort needed to read back the source that was obfuscated? Even if one uses deobfuscator?

Not a easy answer unfortunately since it depends on a large number of factors. Skill level of the attacker is very relative when you consider that using a hex editor or ollydbg against something that has been obfuscated by nearly any tool can be very time consuming regardless of your skill level. Yet switching to tools such as IDA Pro or using de4dot that recognise popular obfuscater software signatures and have automatic routines to "ignore" them can make it a lot easier for people who know how to use these tools. E.g. de4dot claims to support the following:

Agile.NET (aka CliSecure)
Babel.NET
CodeFort
CodeVeil
CodeWall
CryptoObfuscator
DeepSea Obfuscator
Dotfuscator
.NET Reactor
Eazfuscator.NET
Goliath.NET
ILProtector
MaxtoCode
MPRESS
Rummage
Skater.NET
SmartAssembly
Spices.Net
Xenocode

Bottom line, any obfuscation is useful since it makes the task harder and therefore the number of potential attackers less due to skill/time requirements. You can also attempt to write your own obfuscation tools that would prevent someone from just using a tool such as those mentioned above. However, this is similar to saying you could just write your own encryption library. Not a easy task to accomplish without years of experience.

If you are really serious about protecting your software it will require a fair amount of additional work/money from your side since you would need to use multiple methods of protection. E.g. Using a obfuscater, cryptor, packer and then using a solution such as a USB dongle for verification.

If you do find a list comparing the difficulty of solutions to each other, please post it, would be really interesting.